]> andersk Git - splint.git/blob - src/lltok.c
Fixed problem with russian characters.
[splint.git] / src / lltok.c
1 /*
2 ** Splint - annotation-assisted static program checker
3 ** Copyright (C) 1994-2003 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 splint: info@splint.org
21 ** To report a bug: splint-bug@splint.org
22 ** For more information: http://www.splint.org
23 */
24 /*
25 ** lltok.c
26 */
27
28 # include "splintMacros.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 bool lltok_isIncOp (lltok tok)
47 {
48   return (tok->tok == INC_OP);
49 }
50
51 bool lltok_isDecOp  (lltok tok)
52 {
53   return (tok->tok == DEC_OP);
54 }
55
56
57 /* DRL added this function 10/23/2000 for boolean stuff */
58 bool lltok_isEqOp (lltok tok)
59 {
60   return (tok->tok == EQ_OP);
61 }
62
63 bool lltok_isNotEqOp (lltok tok)
64 {
65   return (tok->tok == NE_OP);
66 }
67
68 /* DRL added this function 10/25/2000 for boolean stuff */
69 bool lltok_isAndOp (lltok tok)
70 {
71   return (tok->tok == AND_OP);
72 }
73
74 bool lltok_isOrOp (lltok tok)
75 {
76   return (tok->tok == OR_OP);
77 }
78
79 bool lltok_isNotOp (lltok tok)
80 {
81   return (tok->tok ==  TEXCL);
82 }
83 /*drl7x added this function 11/20/00 */
84
85 bool lltok_isLt_Op (lltok tok)
86 {
87   return (tok->tok ==  TLT);
88 }
89
90 bool lltok_isGt_Op (lltok tok)
91 {
92   return (tok->tok ==  TGT);
93 }
94   
95 bool lltok_isGe_Op (lltok tok)
96 {
97   return (tok->tok ==  GE_OP);
98 }
99
100 bool lltok_isLe_Op (lltok tok)
101 {
102   return (tok->tok ==  LE_OP);
103 }
104
105 /* end drl7x added */
106
107
108 /*drl7x added 11 30 2000*/
109 bool  lltok_isPlus_Op (lltok tok)
110 {
111   return (tok->tok ==  TPLUS);
112 }
113
114 bool  lltok_isMinus_Op (lltok tok)
115 {
116   return (tok->tok ==  TMINUS);
117 }
118
119 /*drl7x added 6 6 2001 */
120
121
122 bool  lltok_isAmpersand_Op (lltok tok)
123 {
124   return (tok->tok == TAMPERSAND);
125 }
126
127 /*end drl added */
128
129 /*drl7x added 6 15 2001 */
130
131 bool  lltok_isExcl_Op (lltok tok)
132 {
133   return (tok->tok == TEXCL);
134 }
135
136 bool  lltok_isTilde_Op (lltok tok)
137 {
138   return (tok->tok == TTILDE);
139 }
140 /*end drl added */
141
142
143 bool lltok_isEnsures (lltok tok)
144 {
145   return (tok->tok == QPOSTCLAUSE);
146 }
147
148 bool lltok_isRequires (lltok tok)
149 {
150   return (tok->tok == QPRECLAUSE);
151 }
152
153 cstring
154 lltok_unparse (lltok tok)
155 {
156   char *lit;
157
158   switch (tok->tok)
159     {
160     case BREAK:      lit = "break"; break;
161     case CASE:       lit = "case"; break;
162     case CONTINUE:   lit = "continue"; break;
163     case DEFAULT:    lit = "default"; break;
164     case DO:         lit = "do"; break;
165     case CDOUBLE:    lit = "double"; break;
166     case CELSE:      lit = "else"; break;
167     case CFOR:       lit = "for"; break;
168     case GOTO:       lit = "goto"; break;
169     case CIF:        lit = "if"; break;
170     case RETURN:     lit = "return"; break;
171     case CSIZEOF:    lit = "sizeof"; break;
172     case SWITCH:     lit = "switch"; break;
173     case WHILE:      lit = "while"; break;
174     case CSTRUCT:    lit = "struct"; break;
175     case CTYPEDEF:   lit = "typedef"; break;
176     case CUNION:     lit = "union"; break;
177     case CENUM:      lit = "enum"; break;
178     case QEXTERN:     lit = "extern"; break;
179     case QAUTO:       lit = "auto"; break;
180     case QSTATIC:     lit = "static"; break;
181     case RIGHT_ASSIGN: lit = ">>="; break;
182     case LEFT_ASSIGN:  lit = "<<="; break;
183     case ADD_ASSIGN: lit = "+="; break;
184     case SUB_ASSIGN: lit = "-="; break;
185     case MUL_ASSIGN: lit = "*="; break;
186     case DIV_ASSIGN: lit = "/="; break;
187     case MOD_ASSIGN: lit = "%="; break;
188     case AND_ASSIGN: lit = "&="; break;
189     case XOR_ASSIGN: lit = "^="; break;
190     case OR_ASSIGN:  lit = "|="; break;
191     case RIGHT_OP:   lit = ">>"; break;
192     case LEFT_OP:    lit = "<<"; break;
193     case INC_OP:     lit = "++"; break; 
194     case DEC_OP:     lit = "--"; break;
195     case ARROW_OP:   lit = "->"; break;
196     case AND_OP:     lit = "&&"; break;
197     case OR_OP:      lit = "||"; break;
198     case LE_OP:      lit = "<="; break;
199     case GE_OP:      lit = ">="; break;
200     case EQ_OP:      lit = "=="; break;
201     case NE_OP:      lit = "!="; break;
202     case TSEMI:      lit = ";"; break;
203     case TLBRACE:    lit = "{"; break;
204     case TRBRACE:    lit = "}"; break;
205     case TCOMMA:     lit = ","; break;
206     case TCOLON:     lit = ":"; break;
207     case TASSIGN:    lit = "="; break;
208     case TLPAREN:    lit = "("; break;
209     case TRPAREN:    lit = ")"; break;
210     case TLSQBR:     lit = "["; break;
211     case TRSQBR:     lit = "]"; break;
212     case TDOT:       lit = "."; break; /* evans 2003-05-31: Fix reported by psanzani. */
213     case TAMPERSAND: lit = "&"; break;
214     case TEXCL:      lit = "!"; break;
215     case TTILDE:     lit = "~"; break;
216     case TMINUS:     lit = "-"; break;
217     case TPLUS:      lit = "+"; break;
218     case TMULT:      lit = "*"; break;
219     case TDIV:       lit = "/"; break;
220     case TPERCENT:   lit = "%"; break;
221     case TLT:        lit = "<"; break;
222     case TGT:        lit = ">"; break;
223     case TCIRC:      lit = "^"; break;
224     case TBAR:       lit = "|"; break;
225     case TQUEST:     lit = "?"; break;  
226     case QOUT:       lit = "out"; break;
227     case QONLY:      lit = "only"; break;
228     case QKEEP:      lit = "keep"; break;
229     case QKEPT:      lit = "kept"; break;
230     case QTEMP:      lit = "temp"; break;
231     case QSHARED:    lit = "shared"; break;
232     case QUNIQUE:    lit = "unique"; break;
233     case QREF:       lit = "ref"; break;
234     case QCHECKED:   lit = "checked"; break;
235     case QCHECKEDSTRICT: lit = "checkedstrict"; break;
236     case QCHECKMOD:  lit = "checkmod"; break;
237     case QUNCHECKED: lit = "unchecked"; break;
238     case QPRECLAUSE: lit = "requires"; break;
239     case QPOSTCLAUSE: lit = "ensures"; break;
240     case QTRUENULL:  lit = "truenull"; break;
241     case QFALSENULL: lit = "falsenull"; break;
242     case QRETURNED:  lit = "returned"; break;
243     case QEXPOSED:   lit = "exposed"; break;
244     case QNULL:      lit = "null"; break;
245     case QRELNULL:   lit = "refnull"; break;
246     case QOBSERVER:  lit = "observer"; break;
247     case QPARTIAL:   lit = "partial"; break;
248     case QSPECIAL:   lit = "special"; break;
249     case QUSES:      lit = "uses"; break;
250     case QDEFINES:   lit = "defines"; break;
251     case QALLOCATES: lit = "allocates"; break;
252     case QSETS:      lit = "sets"; break;
253     case QRELEASES:  lit = "releases"; break;
254     case QSETBUFFERSIZE: lit = "setBufferSize"; break;
255     case QSETSTRINGLENGTH: lit = "setStringLength"; break;
256     BADDEFAULT;
257     }
258  
259   return cstring_makeLiteralTemp (lit);
260 }
261
262 lltok
263 lltok_create (int tok, fileloc loc)
264 {
265   lltok l = (lltok) dmalloc (sizeof (*l));
266
267   l->tok = tok;
268   l->loc = loc;
269   DPRINTF (("Create: %s [%p]", lltok_unparse (l), loc));
270   return (l);
271 }
272
273 void lltok_free (lltok t) 
274 {
275   fileloc_free (t->loc);
276   sfree (t);
277 }
278
279 void lltok_free2 (lltok t1, lltok t2) 
280 {
281   lltok_free (t1);
282   lltok_free (t2);
283 }
284
285 void lltok_free3 (lltok t1, lltok t2, lltok t3) 
286 {
287   lltok_free (t1);
288   lltok_free (t2);
289   lltok_free (t3);
290 }
291
This page took 0.058181 seconds and 5 git commands to generate.