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