]> andersk Git - splint.git/blame - src/lltok.c
Periodic commit
[splint.git] / src / lltok.c
CommitLineData
885824d3 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
885824d3 31# include "cgrammar.h"
32# include "cgrammar_tokens.h"
885824d3 33
34bool
35lltok_isSemi (lltok tok)
36{
37 return (tok.tok == TSEMI);
38}
39
a0a162cd 40bool
41lltok_isMult (lltok tok)
42{
43 return (tok.tok == TMULT);
44}
45
4cccc6ad 46bool lltok_isInc_Op (lltok tok)
47{
48 return (tok.tok == INC_OP);
49}
885824d3 50cstring
51lltok_unparse (lltok tok)
52{
53 char *lit;
54
55 switch (tok.tok)
56 {
57 case BREAK: lit = "break"; break;
58 case CASE: lit = "case"; break;
59 case CONTINUE: lit = "continue"; break;
60 case DEFAULT: lit = "default"; break;
61 case DO: lit = "do"; break;
62 case CDOUBLE: lit = "double"; break;
63 case CELSE: lit = "else"; break;
64 case CFOR: lit = "for"; break;
65 case GOTO: lit = "goto"; break;
66 case CIF: lit = "if"; break;
67 case RETURN: lit = "return"; break;
68 case CSIZEOF: lit = "sizeof"; break;
69 case SWITCH: lit = "switch"; break;
70 case WHILE: lit = "while"; break;
71 case CSTRUCT: lit = "struct"; break;
72 case CTYPEDEF: lit = "typedef"; break;
73 case CUNION: lit = "union"; break;
74 case CENUM: lit = "enum"; break;
75 case QEXTERN: lit = "extern"; break;
76 case QAUTO: lit = "auto"; break;
77 case QSTATIC: lit = "static"; break;
78 case RIGHT_ASSIGN: lit = ">>="; break;
79 case LEFT_ASSIGN: lit = "<<="; break;
80 case ADD_ASSIGN: lit = "+="; break;
81 case SUB_ASSIGN: lit = "-="; break;
82 case MUL_ASSIGN: lit = "*="; break;
83 case DIV_ASSIGN: lit = "/="; break;
84 case MOD_ASSIGN: lit = "%="; break;
85 case AND_ASSIGN: lit = "&="; break;
86 case XOR_ASSIGN: lit = "^="; break;
87 case OR_ASSIGN: lit = "|="; break;
88 case RIGHT_OP: lit = ">>"; break;
89 case LEFT_OP: lit = "<<"; break;
90 case INC_OP: lit = "++"; break;
91 case DEC_OP: lit = "--"; break;
92 case ARROW_OP: lit = "->"; break;
93 case AND_OP: lit = "&&"; break;
94 case OR_OP: lit = "||"; break;
95 case LE_OP: lit = "<="; break;
96 case GE_OP: lit = ">="; break;
97 case EQ_OP: lit = "=="; break;
98 case NE_OP: lit = "!="; break;
99 case TSEMI: lit = ";"; break;
100 case TLBRACE: lit = "{"; break;
101 case TRBRACE: lit = "}"; break;
102 case TCOMMA: lit = ","; break;
103 case TCOLON: lit = ":"; break;
104 case TASSIGN: lit = "="; break;
105 case TLPAREN: lit = "("; break;
106 case TRPAREN: lit = ")"; break;
107 case TLSQBR: lit = "["; break;
108 case TRSQBR: lit = "]"; break;
109 case TDOT: lit = "."; break;
110 case TAMPERSAND: lit = "&"; break;
111 case TEXCL: lit = "!"; break;
112 case TTILDE: lit = "~"; break;
113 case TMINUS: lit = "-"; break;
114 case TPLUS: lit = "+"; break;
115 case TMULT: lit = "*"; break;
116 case TDIV: lit = "/"; break;
117 case TPERCENT: lit = "%"; break;
118 case TLT: lit = "<"; break;
119 case TGT: lit = ">"; break;
120 case TCIRC: lit = "^"; break;
121 case TBAR: lit = "|"; break;
122 case TQUEST: lit = "?"; break;
123 case QOUT: lit = "out"; break;
124 case QONLY: lit = "only"; break;
125 case QKEEP: lit = "keep"; break;
126 case QKEPT: lit = "kept"; break;
127 case QTEMP: lit = "temp"; break;
128 case QSHARED: lit = "shared"; break;
129 case QUNIQUE: lit = "unique"; break;
130 case QREF: lit = "ref"; break;
131 case QCHECKED: lit = "checked"; break;
132 case QCHECKEDSTRICT: lit = "checkedstrict"; break;
133 case QCHECKMOD: lit = "checkmod"; break;
134 case QUNCHECKED: lit = "unchecked"; break;
135 case QTRUENULL: lit = "truenull"; break;
136 case QFALSENULL: lit = "falsenull"; break;
137 case QRETURNED: lit = "returned"; break;
138 case QEXPOSED: lit = "exposed"; break;
139 case QNULL: lit = "null"; break;
140 case QRELNULL: lit = "refnull"; break;
141 case QOBSERVER: lit = "observer"; break;
142 case QPARTIAL: lit = "partial"; break;
143 case QSPECIAL: lit = "special"; break;
144 case QUSES: lit = "uses"; break;
145 case QDEFINES: lit = "defines"; break;
146 case QALLOCATES: lit = "allocates"; break;
147 case QSETS: lit = "sets"; break;
148 case QRELEASES: lit = "releases"; break;
4cccc6ad 149 case QSETBUFFERSIZE: lit = "setBufferSize"; break;
150 case QSETSTRINGLENGTH: lit = "setStringLength"; break;
151 default: lit = "bad "; break;
152 // BADDEFAULT;
885824d3 153 }
154
155 return cstring_makeLiteralTemp (lit);
156}
157
158lltok
159lltok_create (int tok, fileloc loc)
160{
161 lltok l;
162
163 l.tok = tok;
164 l.loc = loc;
165
166 return (l);
167}
168
169void lltok_release (lltok t)
170{
171 fileloc_free (t.loc);
172}
This page took 0.116015 seconds and 5 git commands to generate.