Mercurial > hg > CbC > CbC_gcc
comparison gcc/d/dmd/tokens.h @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 | |
2 /* Compiler implementation of the D programming language | |
3 * Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved | |
4 * written by Walter Bright | |
5 * http://www.digitalmars.com | |
6 * Distributed under the Boost Software License, Version 1.0. | |
7 * http://www.boost.org/LICENSE_1_0.txt | |
8 * https://github.com/dlang/dmd/blob/master/src/dmd/tokens.h | |
9 */ | |
10 | |
11 #pragma once | |
12 | |
13 #include "root/port.h" | |
14 #include "globals.h" | |
15 | |
16 class Identifier; | |
17 | |
18 /* Tokens: | |
19 ( ) | |
20 [ ] | |
21 { } | |
22 < > <= >= == != === !== | |
23 << >> <<= >>= >>> >>>= | |
24 + - += -= | |
25 * / % *= /= %= | |
26 & | ^ &= |= ^= | |
27 = ! ~ @ | |
28 ^^ ^^= | |
29 ++ -- | |
30 . -> : , => | |
31 ? && || | |
32 */ | |
33 | |
34 enum TOK | |
35 { | |
36 TOKreserved, | |
37 | |
38 // Other | |
39 TOKlparen, TOKrparen, | |
40 TOKlbracket, TOKrbracket, | |
41 TOKlcurly, TOKrcurly, | |
42 TOKcolon, TOKneg, | |
43 TOKsemicolon, TOKdotdotdot, | |
44 TOKeof, TOKcast, | |
45 TOKnull, TOKassert, | |
46 TOKtrue, TOKfalse, | |
47 TOKarray, TOKcall, | |
48 TOKaddress, | |
49 TOKtype, TOKthrow, | |
50 TOKnew, TOKdelete, | |
51 TOKstar, TOKsymoff, | |
52 TOKvar, TOKdotvar, | |
53 TOKdotid, TOKdotti, | |
54 TOKdottype, TOKslice, | |
55 TOKarraylength, TOKversion, | |
56 TOKmodule, TOKdollar, | |
57 TOKtemplate, TOKdottd, | |
58 TOKdeclaration, TOKtypeof, | |
59 TOKpragma, TOKdsymbol, | |
60 TOKtypeid, TOKuadd, | |
61 TOKremove, | |
62 TOKnewanonclass, TOKcomment, | |
63 TOKarrayliteral, TOKassocarrayliteral, | |
64 TOKstructliteral, | |
65 TOKclassreference, | |
66 TOKthrownexception, | |
67 TOKdelegateptr, | |
68 TOKdelegatefuncptr, | |
69 | |
70 // 54 | |
71 // Operators | |
72 TOKlt, TOKgt, | |
73 TOKle, TOKge, | |
74 TOKequal, TOKnotequal, | |
75 TOKidentity, TOKnotidentity, | |
76 TOKindex, TOKis, | |
77 | |
78 // 64 | |
79 // NCEG floating point compares | |
80 // !<>= <> <>= !> !>= !< !<= !<> | |
81 TOKunord,TOKlg,TOKleg,TOKule,TOKul,TOKuge,TOKug,TOKue, | |
82 | |
83 // 72 | |
84 TOKshl, TOKshr, | |
85 TOKshlass, TOKshrass, | |
86 TOKushr, TOKushrass, | |
87 TOKcat, TOKcatass, // ~ ~= | |
88 TOKadd, TOKmin, TOKaddass, TOKminass, | |
89 TOKmul, TOKdiv, TOKmod, | |
90 TOKmulass, TOKdivass, TOKmodass, | |
91 TOKand, TOKor, TOKxor, | |
92 TOKandass, TOKorass, TOKxorass, | |
93 TOKassign, TOKnot, TOKtilde, | |
94 TOKplusplus, TOKminusminus, TOKconstruct, TOKblit, | |
95 TOKdot, TOKarrow, TOKcomma, | |
96 TOKquestion, TOKandand, TOKoror, | |
97 TOKpreplusplus, TOKpreminusminus, | |
98 | |
99 // 111 | |
100 // Numeric literals | |
101 TOKint32v, TOKuns32v, | |
102 TOKint64v, TOKuns64v, | |
103 TOKint128v, TOKuns128v, | |
104 TOKfloat32v, TOKfloat64v, TOKfloat80v, | |
105 TOKimaginary32v, TOKimaginary64v, TOKimaginary80v, | |
106 | |
107 // Char constants | |
108 TOKcharv, TOKwcharv, TOKdcharv, | |
109 | |
110 // Leaf operators | |
111 TOKidentifier, TOKstring, TOKxstring, | |
112 TOKthis, TOKsuper, | |
113 TOKhalt, TOKtuple, | |
114 TOKerror, | |
115 | |
116 // Basic types | |
117 TOKvoid, | |
118 TOKint8, TOKuns8, | |
119 TOKint16, TOKuns16, | |
120 TOKint32, TOKuns32, | |
121 TOKint64, TOKuns64, | |
122 TOKint128, TOKuns128, | |
123 TOKfloat32, TOKfloat64, TOKfloat80, | |
124 TOKimaginary32, TOKimaginary64, TOKimaginary80, | |
125 TOKcomplex32, TOKcomplex64, TOKcomplex80, | |
126 TOKchar, TOKwchar, TOKdchar, TOKbool, | |
127 | |
128 // 158 | |
129 // Aggregates | |
130 TOKstruct, TOKclass, TOKinterface, TOKunion, TOKenum, TOKimport, | |
131 TOKalias, TOKoverride, TOKdelegate, TOKfunction, | |
132 TOKmixin, | |
133 | |
134 TOKalign, TOKextern, TOKprivate, TOKprotected, TOKpublic, TOKexport, | |
135 TOKstatic, TOKfinal, TOKconst, TOKabstract, | |
136 TOKdebug, TOKdeprecated, TOKin, TOKout, TOKinout, TOKlazy, | |
137 TOKauto, TOKpackage, TOKmanifest, TOKimmutable, | |
138 | |
139 // Statements | |
140 TOKif, TOKelse, TOKwhile, TOKfor, TOKdo, TOKswitch, | |
141 TOKcase, TOKdefault, TOKbreak, TOKcontinue, TOKwith, | |
142 TOKsynchronized, TOKreturn, TOKgoto, TOKtry, TOKcatch, TOKfinally, | |
143 TOKasm, TOKforeach, TOKforeach_reverse, | |
144 TOKscope, | |
145 TOKon_scope_exit, TOKon_scope_failure, TOKon_scope_success, | |
146 | |
147 // Contracts | |
148 TOKinvariant, | |
149 | |
150 // Testing | |
151 TOKunittest, | |
152 | |
153 // Added after 1.0 | |
154 TOKargTypes, | |
155 TOKref, | |
156 TOKmacro, | |
157 | |
158 TOKparameters, | |
159 TOKtraits, | |
160 TOKoverloadset, | |
161 TOKpure, | |
162 TOKnothrow, | |
163 TOKgshared, | |
164 TOKline, | |
165 TOKfile, | |
166 TOKfilefullpath, | |
167 TOKmodulestring, | |
168 TOKfuncstring, | |
169 TOKprettyfunc, | |
170 TOKshared, | |
171 TOKat, | |
172 TOKpow, | |
173 TOKpowass, | |
174 TOKgoesto, | |
175 TOKvector, | |
176 TOKpound, | |
177 | |
178 TOKinterval, | |
179 TOKvoidexp, | |
180 TOKcantexp, | |
181 | |
182 TOKvectorarray, | |
183 | |
184 TOKMAX | |
185 }; | |
186 | |
187 #define TOKwild TOKinout | |
188 | |
189 // Token has an anonymous struct, which is not strict ISO C++. | |
190 #if defined(__GNUC__) | |
191 #pragma GCC diagnostic push | |
192 #pragma GCC diagnostic ignored "-Wpedantic" | |
193 #endif | |
194 | |
195 struct Token | |
196 { | |
197 Token *next; | |
198 Loc loc; | |
199 const utf8_t *ptr; // pointer to first character of this token within buffer | |
200 TOK value; | |
201 const utf8_t *blockComment; // doc comment string prior to this token | |
202 const utf8_t *lineComment; // doc comment for previous token | |
203 union | |
204 { | |
205 // Integers | |
206 d_int64 int64value; | |
207 d_uns64 uns64value; | |
208 | |
209 // Floats | |
210 real_t floatvalue; | |
211 | |
212 struct | |
213 { utf8_t *ustring; // UTF8 string | |
214 unsigned len; | |
215 unsigned char postfix; // 'c', 'w', 'd' | |
216 }; | |
217 | |
218 Identifier *ident; | |
219 }; | |
220 | |
221 static const char *tochars[TOKMAX]; | |
222 | |
223 static Token *freelist; | |
224 static Token *alloc(); | |
225 void free(); | |
226 | |
227 Token() : next(NULL) {} | |
228 int isKeyword(); | |
229 const char *toChars() const; | |
230 static const char *toChars(TOK); | |
231 }; | |
232 | |
233 #if defined(__GNUC__) | |
234 #pragma GCC diagnostic pop | |
235 #endif |