2 ** LCLint - annotation-assisted static program checker
3 ** Copyright (C) 1994-2000 University of Virginia,
4 ** Massachusetts Institute of Technology
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.
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.
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.
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
28 # include "lclintMacros.nf"
31 # include "cgrammar.h"
32 # include "cgrammar_tokens.h"
35 lltok_isSemi (lltok tok)
37 return (tok.tok == TSEMI);
41 lltok_isMult (lltok tok)
43 return (tok.tok == TMULT);
46 bool lltok_isInc_Op (lltok tok)
48 return (tok.tok == INC_OP);
51 bool lltok_isDec_Op (lltok tok)
53 return (tok.tok == DEC_OP);
57 /* DRL added this function 10/23/2000 for boolean stuff */
58 bool lltok_isEq_Op (lltok tok)
60 return (tok.tok == EQ_OP);
63 /* DRL added this function 10/25/2000 for boolean stuff */
64 bool lltok_isAnd_Op (lltok tok)
66 return (tok.tok == AND_OP);
69 bool lltok_isOr_Op (lltok tok)
71 return (tok.tok == OR_OP);
74 bool lltok_isNot_Op (lltok tok)
76 return (tok.tok == TEXCL);
78 /*drl7x added this function 11/20/00 */
80 bool lltok_isLt_Op (lltok tok)
82 return (tok.tok == TLT);
85 bool lltok_isGt_Op (lltok tok)
87 return (tok.tok == TGT);
90 bool lltok_isGe_Op (lltok tok)
92 return (tok.tok == GE_OP);
95 bool lltok_isLe_Op (lltok tok)
97 return (tok.tok == LE_OP);
100 /* end drl7x added */
103 /*drl7x added 11 30 2000*/
104 bool lltok_isPlus_Op (lltok tok)
106 return (tok.tok == TPLUS);
109 bool lltok_isMinus_Op (lltok tok)
111 return (tok.tok == TMINUS);
114 /*drl7x added 6 6 2001 */
116 bool lltok_isAmpersand_Op (lltok tok)
118 return (tok.tok == TAMPERSAND);
124 lltok_unparse (lltok tok)
130 case BREAK: lit = "break"; break;
131 case CASE: lit = "case"; break;
132 case CONTINUE: lit = "continue"; break;
133 case DEFAULT: lit = "default"; break;
134 case DO: lit = "do"; break;
135 case CDOUBLE: lit = "double"; break;
136 case CELSE: lit = "else"; break;
137 case CFOR: lit = "for"; break;
138 case GOTO: lit = "goto"; break;
139 case CIF: lit = "if"; break;
140 case RETURN: lit = "return"; break;
141 case CSIZEOF: lit = "sizeof"; break;
142 case SWITCH: lit = "switch"; break;
143 case WHILE: lit = "while"; break;
144 case CSTRUCT: lit = "struct"; break;
145 case CTYPEDEF: lit = "typedef"; break;
146 case CUNION: lit = "union"; break;
147 case CENUM: lit = "enum"; break;
148 case QEXTERN: lit = "extern"; break;
149 case QAUTO: lit = "auto"; break;
150 case QSTATIC: lit = "static"; break;
151 case RIGHT_ASSIGN: lit = ">>="; break;
152 case LEFT_ASSIGN: lit = "<<="; break;
153 case ADD_ASSIGN: lit = "+="; break;
154 case SUB_ASSIGN: lit = "-="; break;
155 case MUL_ASSIGN: lit = "*="; break;
156 case DIV_ASSIGN: lit = "/="; break;
157 case MOD_ASSIGN: lit = "%="; break;
158 case AND_ASSIGN: lit = "&="; break;
159 case XOR_ASSIGN: lit = "^="; break;
160 case OR_ASSIGN: lit = "|="; break;
161 case RIGHT_OP: lit = ">>"; break;
162 case LEFT_OP: lit = "<<"; break;
163 case INC_OP: lit = "++"; break;
164 case DEC_OP: lit = "--"; break;
165 case ARROW_OP: lit = "->"; break;
166 case AND_OP: lit = "&&"; break;
167 case OR_OP: lit = "||"; break;
168 case LE_OP: lit = "<="; break;
169 case GE_OP: lit = ">="; break;
170 case EQ_OP: lit = "=="; break;
171 case NE_OP: lit = "!="; break;
172 case TSEMI: lit = ";"; break;
173 case TLBRACE: lit = "{"; break;
174 case TRBRACE: lit = "}"; break;
175 case TCOMMA: lit = ","; break;
176 case TCOLON: lit = ":"; break;
177 case TASSIGN: lit = "="; break;
178 case TLPAREN: lit = "("; break;
179 case TRPAREN: lit = ")"; break;
180 case TLSQBR: lit = "["; break;
181 case TRSQBR: lit = "]"; break;
182 case TDOT: lit = "."; break;
183 case TAMPERSAND: lit = "&"; break;
184 case TEXCL: lit = "!"; break;
185 case TTILDE: lit = "~"; break;
186 case TMINUS: lit = "-"; break;
187 case TPLUS: lit = "+"; break;
188 case TMULT: lit = "*"; break;
189 case TDIV: lit = "/"; break;
190 case TPERCENT: lit = "%"; break;
191 case TLT: lit = "<"; break;
192 case TGT: lit = ">"; break;
193 case TCIRC: lit = "^"; break;
194 case TBAR: lit = "|"; break;
195 case TQUEST: lit = "?"; break;
196 case QOUT: lit = "out"; break;
197 case QONLY: lit = "only"; break;
198 case QKEEP: lit = "keep"; break;
199 case QKEPT: lit = "kept"; break;
200 case QTEMP: lit = "temp"; break;
201 case QSHARED: lit = "shared"; break;
202 case QUNIQUE: lit = "unique"; break;
203 case QREF: lit = "ref"; break;
204 case QCHECKED: lit = "checked"; break;
205 case QCHECKEDSTRICT: lit = "checkedstrict"; break;
206 case QCHECKMOD: lit = "checkmod"; break;
207 case QUNCHECKED: lit = "unchecked"; break;
208 case QTRUENULL: lit = "truenull"; break;
209 case QFALSENULL: lit = "falsenull"; break;
210 case QRETURNED: lit = "returned"; break;
211 case QEXPOSED: lit = "exposed"; break;
212 case QNULL: lit = "null"; break;
213 case QRELNULL: lit = "refnull"; break;
214 case QOBSERVER: lit = "observer"; break;
215 case QPARTIAL: lit = "partial"; break;
216 case QSPECIAL: lit = "special"; break;
217 case QUSES: lit = "uses"; break;
218 case QDEFINES: lit = "defines"; break;
219 case QALLOCATES: lit = "allocates"; break;
220 case QSETS: lit = "sets"; break;
221 case QRELEASES: lit = "releases"; break;
222 case QSETBUFFERSIZE: lit = "setBufferSize"; break;
223 case QSETSTRINGLENGTH: lit = "setStringLength"; break;
224 default: lit = "bad "; break;
228 return cstring_makeLiteralTemp (lit);
232 lltok_create (int tok, fileloc loc)
242 void lltok_release (lltok t)
244 fileloc_free (t.loc);