]> andersk Git - splint.git/blob - src/lltok.c
Finshed basic merge. Still trying to get it through the test suit.
[splint.git] / src / lltok.c
1 /*
2 ** LCLint - annotation-assisted static program checker
3 ** Copyright (C) 1994-2000 University of Virginia,
4 **         Massachusetts Institute of Technology
5 **
6 ** This program is free software; you can redistribute it and/or modify it
7 ** under the terms of the GNU General Public License as published by the
8 ** Free Software Foundation; either version 2 of the License, or (at your
9 ** option) any later version.
10 ** 
11 ** This program is distributed in the hope that it will be useful, but
12 ** WITHOUT ANY WARRANTY; without even the implied warranty of
13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 ** General Public License for more details.
15 ** 
16 ** The GNU General Public License is available from http://www.gnu.org/ or
17 ** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18 ** MA 02111-1307, USA.
19 **
20 ** For information on lclint: lclint-request@cs.virginia.edu
21 ** To report a bug: lclint-bug@cs.virginia.edu
22 ** For more information: http://lclint.cs.virginia.edu
23 */
24 /*
25 ** lltok.c
26 */
27
28 # include "lclintMacros.nf"
29 # include "basic.h"
30
31 # include "cgrammar.h"
32 # include "cgrammar_tokens.h"
33
34 bool
35 lltok_isSemi (lltok tok)
36 {
37   return (tok.tok == TSEMI);
38 }
39
40 bool
41 lltok_isMult (lltok tok)
42 {
43   return (tok.tok == TMULT);
44 }
45
46 cstring
47 lltok_unparse (lltok tok)
48 {
49   char *lit;
50
51   switch (tok.tok)
52     {
53     case BREAK:      lit = "break"; break;
54     case CASE:       lit = "case"; break;
55     case CONTINUE:   lit = "continue"; break;
56     case DEFAULT:    lit = "default"; break;
57     case DO:         lit = "do"; break;
58     case CDOUBLE:    lit = "double"; break;
59     case CELSE:      lit = "else"; break;
60     case CFOR:       lit = "for"; break;
61     case GOTO:       lit = "goto"; break;
62     case CIF:        lit = "if"; break;
63     case RETURN:     lit = "return"; break;
64     case CSIZEOF:    lit = "sizeof"; break;
65     case SWITCH:     lit = "switch"; break;
66     case WHILE:      lit = "while"; break;
67     case CSTRUCT:    lit = "struct"; break;
68     case CTYPEDEF:   lit = "typedef"; break;
69     case CUNION:     lit = "union"; break;
70     case CENUM:      lit = "enum"; break;
71     case QEXTERN:     lit = "extern"; break;
72     case QAUTO:       lit = "auto"; break;
73     case QSTATIC:     lit = "static"; break;
74     case RIGHT_ASSIGN: lit = ">>="; break;
75     case LEFT_ASSIGN:  lit = "<<="; break;
76     case ADD_ASSIGN: lit = "+="; break;
77     case SUB_ASSIGN: lit = "-="; break;
78     case MUL_ASSIGN: lit = "*="; break;
79     case DIV_ASSIGN: lit = "/="; break;
80     case MOD_ASSIGN: lit = "%="; break;
81     case AND_ASSIGN: lit = "&="; break;
82     case XOR_ASSIGN: lit = "^="; break;
83     case OR_ASSIGN:  lit = "|="; break;
84     case RIGHT_OP:   lit = ">>"; break;
85     case LEFT_OP:    lit = "<<"; break;
86     case INC_OP:     lit = "++"; break; 
87     case DEC_OP:     lit = "--"; break;
88     case ARROW_OP:   lit = "->"; break;
89     case AND_OP:     lit = "&&"; break;
90     case OR_OP:      lit = "||"; break;
91     case LE_OP:      lit = "<="; break;
92     case GE_OP:      lit = ">="; break;
93     case EQ_OP:      lit = "=="; break;
94     case NE_OP:      lit = "!="; break;
95     case TSEMI:      lit = ";"; break;
96     case TLBRACE:    lit = "{"; break;
97     case TRBRACE:    lit = "}"; break;
98     case TCOMMA:     lit = ","; break;
99     case TCOLON:     lit = ":"; break;
100     case TASSIGN:        lit = "="; break;
101     case TLPAREN:    lit = "("; break;
102     case TRPAREN:    lit = ")"; break;
103     case TLSQBR:     lit = "["; break;
104     case TRSQBR:     lit = "]"; break;
105     case TDOT:       lit = "."; break;
106     case TAMPERSAND: lit = "&"; break;
107     case TEXCL:      lit = "!"; break;
108     case TTILDE:     lit = "~"; break;
109     case TMINUS:     lit = "-"; break;
110     case TPLUS:      lit = "+"; break;
111     case TMULT:      lit = "*"; break;
112     case TDIV:       lit = "/"; break;
113     case TPERCENT:   lit = "%"; break;
114     case TLT:        lit = "<"; break;
115     case TGT:        lit = ">"; break;
116     case TCIRC:      lit = "^"; break;
117     case TBAR:       lit = "|"; break;
118     case TQUEST:     lit = "?"; break;  
119     case QOUT:       lit = "out"; break;
120     case QONLY:      lit = "only"; break;
121     case QKEEP:      lit = "keep"; break;
122     case QKEPT:      lit = "kept"; break;
123     case QTEMP:      lit = "temp"; break;
124     case QSHARED:    lit = "shared"; break;
125     case QUNIQUE:    lit = "unique"; break;
126     case QREF:       lit = "ref"; break;
127     case QCHECKED:   lit = "checked"; break;
128     case QCHECKEDSTRICT: lit = "checkedstrict"; break;
129     case QCHECKMOD:  lit = "checkmod"; break;
130     case QUNCHECKED: lit = "unchecked"; break;
131     case QTRUENULL:  lit = "truenull"; break;
132     case QFALSENULL: lit = "falsenull"; break;
133     case QRETURNED:  lit = "returned"; break;
134     case QEXPOSED:   lit = "exposed"; break;
135     case QNULL:      lit = "null"; break;
136     case QRELNULL:   lit = "refnull"; break;
137     case QOBSERVER:  lit = "observer"; break;
138     case QPARTIAL:   lit = "partial"; break;
139     case QSPECIAL:   lit = "special"; break;
140     case QUSES:      lit = "uses"; break;
141     case QDEFINES:   lit = "defines"; break;
142     case QALLOCATES: lit = "allocates"; break;
143     case QSETS:      lit = "sets"; break;
144     case QRELEASES:  lit = "releases"; break;
145     BADDEFAULT;
146     }
147  
148   return cstring_makeLiteralTemp (lit);
149 }
150
151 lltok
152 lltok_create (int tok, fileloc loc)
153 {
154   lltok l;
155
156   l.tok = tok;
157   l.loc = loc;
158
159   return (l);
160 }
161
162 void lltok_release (lltok t) 
163 {
164   fileloc_free (t.loc);
165 }
This page took 0.065357 seconds and 5 git commands to generate.