1 | /*============================================================================= |
---|
2 | Boost.Wave: A Standard compliant C++ preprocessor library |
---|
3 | The definition of a default set of token identifiers and related |
---|
4 | functions. |
---|
5 | |
---|
6 | http://www.boost.org/ |
---|
7 | |
---|
8 | Copyright (c) 2001-2005 Hartmut Kaiser. Distributed under the Boost |
---|
9 | Software License, Version 1.0. (See accompanying file |
---|
10 | LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
---|
11 | =============================================================================*/ |
---|
12 | |
---|
13 | #if !defined(TOKEN_IDS_HPP_414E9A58_F079_4789_8AFF_513815CE475B_INCLUDED) |
---|
14 | #define TOKEN_IDS_HPP_414E9A58_F079_4789_8AFF_513815CE475B_INCLUDED |
---|
15 | |
---|
16 | #include <string> |
---|
17 | #include <boost/assert.hpp> |
---|
18 | |
---|
19 | #include <boost/wave/wave_config.hpp> |
---|
20 | |
---|
21 | /////////////////////////////////////////////////////////////////////////////// |
---|
22 | // Allow external redefinition of the token identifiers to use |
---|
23 | #if !defined(BOOST_WAVE_TOKEN_IDS_DEFINED) |
---|
24 | #define BOOST_WAVE_TOKEN_IDS_DEFINED |
---|
25 | |
---|
26 | #if defined (__FreeBSD__) && defined (T_DIVIDE) |
---|
27 | #undef T_DIVIDE |
---|
28 | #endif |
---|
29 | |
---|
30 | /////////////////////////////////////////////////////////////////////////////// |
---|
31 | namespace boost { |
---|
32 | namespace wave { |
---|
33 | |
---|
34 | /////////////////////////////////////////////////////////////////////////////// |
---|
35 | // assemble tokenid's |
---|
36 | #define TOKEN_FROM_ID(id, cat) ((id) | (cat)) |
---|
37 | #define ID_FROM_TOKEN(tok) ((tok) & ~TokenTypeMask) |
---|
38 | #define BASEID_FROM_TOKEN(tok) ((tok) & ~ExtTokenTypeMask) |
---|
39 | |
---|
40 | /////////////////////////////////////////////////////////////////////////////// |
---|
41 | // the token_category helps to classify the different token types |
---|
42 | enum token_category { |
---|
43 | IdentifierTokenType = 0x10000000, |
---|
44 | ParameterTokenType = 0x11000000, |
---|
45 | ExtParameterTokenType = 0x11100000, |
---|
46 | KeywordTokenType = 0x20000000, |
---|
47 | OperatorTokenType = 0x30000000, |
---|
48 | LiteralTokenType = 0x40000000, |
---|
49 | IntegerLiteralTokenType = 0x41000000, |
---|
50 | FloatingLiteralTokenType = 0x42000000, |
---|
51 | StringLiteralTokenType = 0x43000000, |
---|
52 | CharacterLiteralTokenType = 0x44000000, |
---|
53 | BoolLiteralTokenType = 0x45000000, |
---|
54 | PPTokenType = 0x50000000, |
---|
55 | PPConditionalTokenType = 0x50800000, |
---|
56 | |
---|
57 | UnknownTokenType = 0xA0000000, |
---|
58 | EOLTokenType = 0xB0000000, |
---|
59 | EOFTokenType = 0xC0000000, |
---|
60 | WhiteSpaceTokenType = 0xD0000000, |
---|
61 | InternalTokenType = 0xE0000000, |
---|
62 | |
---|
63 | TokenTypeMask = 0xFF000000, |
---|
64 | AltTokenType = 0x00100000, |
---|
65 | TriGraphTokenType = 0x00200000, |
---|
66 | AltExtTokenType = 0x00500000, // and, bit_and etc. |
---|
67 | ExtTokenTypeMask = 0xFFF00000, |
---|
68 | ExtTokenOnlyMask = 0x00F00000, |
---|
69 | TokenValueMask = 0x000FFFFF, |
---|
70 | MainTokenMask = 0xFF0FFFFF // TokenTypeMask|TokenValueMask |
---|
71 | }; |
---|
72 | |
---|
73 | /////////////////////////////////////////////////////////////////////////////// |
---|
74 | // the token_id assigns unique numbers to the different C++ lexemes |
---|
75 | enum token_id { |
---|
76 | T_FIRST_TOKEN = 256, |
---|
77 | T_AND = TOKEN_FROM_ID(T_FIRST_TOKEN, OperatorTokenType), |
---|
78 | T_AND_ALT = TOKEN_FROM_ID(T_FIRST_TOKEN, OperatorTokenType|AltExtTokenType), |
---|
79 | T_ANDAND = TOKEN_FROM_ID(257, OperatorTokenType), |
---|
80 | T_ANDAND_ALT = TOKEN_FROM_ID(257, OperatorTokenType|AltExtTokenType), |
---|
81 | T_ASSIGN = TOKEN_FROM_ID(258, OperatorTokenType), |
---|
82 | T_ANDASSIGN = TOKEN_FROM_ID(259, OperatorTokenType), |
---|
83 | T_ANDASSIGN_ALT = TOKEN_FROM_ID(259, OperatorTokenType|AltExtTokenType), |
---|
84 | T_OR = TOKEN_FROM_ID(260, OperatorTokenType), |
---|
85 | T_OR_ALT = TOKEN_FROM_ID(260, OperatorTokenType|AltExtTokenType), |
---|
86 | T_OR_TRIGRAPH = TOKEN_FROM_ID(260, OperatorTokenType|TriGraphTokenType), |
---|
87 | T_ORASSIGN = TOKEN_FROM_ID(261, OperatorTokenType), |
---|
88 | T_ORASSIGN_ALT = TOKEN_FROM_ID(261, OperatorTokenType|AltExtTokenType), |
---|
89 | T_ORASSIGN_TRIGRAPH = TOKEN_FROM_ID(261, OperatorTokenType|TriGraphTokenType), |
---|
90 | T_XOR = TOKEN_FROM_ID(262, OperatorTokenType), |
---|
91 | T_XOR_ALT = TOKEN_FROM_ID(262, OperatorTokenType|AltExtTokenType), |
---|
92 | T_XOR_TRIGRAPH = TOKEN_FROM_ID(262, OperatorTokenType|TriGraphTokenType), |
---|
93 | T_XORASSIGN = TOKEN_FROM_ID(263, OperatorTokenType), |
---|
94 | T_XORASSIGN_ALT = TOKEN_FROM_ID(263, OperatorTokenType|AltExtTokenType), |
---|
95 | T_XORASSIGN_TRIGRAPH = TOKEN_FROM_ID(263, OperatorTokenType|TriGraphTokenType), |
---|
96 | T_COMMA = TOKEN_FROM_ID(264, OperatorTokenType), |
---|
97 | T_COLON = TOKEN_FROM_ID(265, OperatorTokenType), |
---|
98 | T_DIVIDE = TOKEN_FROM_ID(266, OperatorTokenType), |
---|
99 | T_DIVIDEASSIGN = TOKEN_FROM_ID(267, OperatorTokenType), |
---|
100 | T_DOT = TOKEN_FROM_ID(268, OperatorTokenType), |
---|
101 | T_DOTSTAR = TOKEN_FROM_ID(269, OperatorTokenType), |
---|
102 | T_ELLIPSIS = TOKEN_FROM_ID(270, OperatorTokenType), |
---|
103 | T_EQUAL = TOKEN_FROM_ID(271, OperatorTokenType), |
---|
104 | T_GREATER = TOKEN_FROM_ID(272, OperatorTokenType), |
---|
105 | T_GREATEREQUAL = TOKEN_FROM_ID(273, OperatorTokenType), |
---|
106 | T_LEFTBRACE = TOKEN_FROM_ID(274, OperatorTokenType), |
---|
107 | T_LEFTBRACE_ALT = TOKEN_FROM_ID(274, OperatorTokenType|AltTokenType), |
---|
108 | T_LEFTBRACE_TRIGRAPH = TOKEN_FROM_ID(274, OperatorTokenType|TriGraphTokenType), |
---|
109 | T_LESS = TOKEN_FROM_ID(275, OperatorTokenType), |
---|
110 | T_LESSEQUAL = TOKEN_FROM_ID(276, OperatorTokenType), |
---|
111 | T_LEFTPAREN = TOKEN_FROM_ID(277, OperatorTokenType), |
---|
112 | T_LEFTBRACKET = TOKEN_FROM_ID(278, OperatorTokenType), |
---|
113 | T_LEFTBRACKET_ALT = TOKEN_FROM_ID(278, OperatorTokenType|AltTokenType), |
---|
114 | T_LEFTBRACKET_TRIGRAPH = TOKEN_FROM_ID(278, OperatorTokenType|TriGraphTokenType), |
---|
115 | T_MINUS = TOKEN_FROM_ID(279, OperatorTokenType), |
---|
116 | T_MINUSASSIGN = TOKEN_FROM_ID(280, OperatorTokenType), |
---|
117 | T_MINUSMINUS = TOKEN_FROM_ID(281, OperatorTokenType), |
---|
118 | T_PERCENT = TOKEN_FROM_ID(282, OperatorTokenType), |
---|
119 | T_PERCENTASSIGN = TOKEN_FROM_ID(283, OperatorTokenType), |
---|
120 | T_NOT = TOKEN_FROM_ID(284, OperatorTokenType), |
---|
121 | T_NOT_ALT = TOKEN_FROM_ID(284, OperatorTokenType|AltExtTokenType), |
---|
122 | T_NOTEQUAL = TOKEN_FROM_ID(285, OperatorTokenType), |
---|
123 | T_NOTEQUAL_ALT = TOKEN_FROM_ID(285, OperatorTokenType|AltExtTokenType), |
---|
124 | T_OROR = TOKEN_FROM_ID(286, OperatorTokenType), |
---|
125 | T_OROR_ALT = TOKEN_FROM_ID(286, OperatorTokenType|AltExtTokenType), |
---|
126 | T_OROR_TRIGRAPH = TOKEN_FROM_ID(286, OperatorTokenType|TriGraphTokenType), |
---|
127 | T_PLUS = TOKEN_FROM_ID(287, OperatorTokenType), |
---|
128 | T_PLUSASSIGN = TOKEN_FROM_ID(288, OperatorTokenType), |
---|
129 | T_PLUSPLUS = TOKEN_FROM_ID(289, OperatorTokenType), |
---|
130 | T_ARROW = TOKEN_FROM_ID(290, OperatorTokenType), |
---|
131 | T_ARROWSTAR = TOKEN_FROM_ID(291, OperatorTokenType), |
---|
132 | T_QUESTION_MARK = TOKEN_FROM_ID(292, OperatorTokenType), |
---|
133 | T_RIGHTBRACE = TOKEN_FROM_ID(293, OperatorTokenType), |
---|
134 | T_RIGHTBRACE_ALT = TOKEN_FROM_ID(293, OperatorTokenType|AltTokenType), |
---|
135 | T_RIGHTBRACE_TRIGRAPH = TOKEN_FROM_ID(293, OperatorTokenType|TriGraphTokenType), |
---|
136 | T_RIGHTPAREN = TOKEN_FROM_ID(294, OperatorTokenType), |
---|
137 | T_RIGHTBRACKET = TOKEN_FROM_ID(295, OperatorTokenType), |
---|
138 | T_RIGHTBRACKET_ALT = TOKEN_FROM_ID(295, OperatorTokenType|AltTokenType), |
---|
139 | T_RIGHTBRACKET_TRIGRAPH = TOKEN_FROM_ID(295, OperatorTokenType|TriGraphTokenType), |
---|
140 | T_COLON_COLON = TOKEN_FROM_ID(296, OperatorTokenType), |
---|
141 | T_SEMICOLON = TOKEN_FROM_ID(297, OperatorTokenType), |
---|
142 | T_SHIFTLEFT = TOKEN_FROM_ID(298, OperatorTokenType), |
---|
143 | T_SHIFTLEFTASSIGN = TOKEN_FROM_ID(299, OperatorTokenType), |
---|
144 | T_SHIFTRIGHT = TOKEN_FROM_ID(300, OperatorTokenType), |
---|
145 | T_SHIFTRIGHTASSIGN = TOKEN_FROM_ID(301, OperatorTokenType), |
---|
146 | T_STAR = TOKEN_FROM_ID(302, OperatorTokenType), |
---|
147 | T_COMPL = TOKEN_FROM_ID(303, OperatorTokenType), |
---|
148 | T_COMPL_ALT = TOKEN_FROM_ID(303, OperatorTokenType|AltExtTokenType), |
---|
149 | T_COMPL_TRIGRAPH = TOKEN_FROM_ID(303, OperatorTokenType|TriGraphTokenType), |
---|
150 | T_STARASSIGN = TOKEN_FROM_ID(304, OperatorTokenType), |
---|
151 | T_ASM = TOKEN_FROM_ID(305, KeywordTokenType), |
---|
152 | T_AUTO = TOKEN_FROM_ID(306, KeywordTokenType), |
---|
153 | T_BOOL = TOKEN_FROM_ID(307, KeywordTokenType), |
---|
154 | T_FALSE = TOKEN_FROM_ID(308, BoolLiteralTokenType), |
---|
155 | T_TRUE = TOKEN_FROM_ID(309, BoolLiteralTokenType), |
---|
156 | T_BREAK = TOKEN_FROM_ID(310, KeywordTokenType), |
---|
157 | T_CASE = TOKEN_FROM_ID(311, KeywordTokenType), |
---|
158 | T_CATCH = TOKEN_FROM_ID(312, KeywordTokenType), |
---|
159 | T_CHAR = TOKEN_FROM_ID(313, KeywordTokenType), |
---|
160 | T_CLASS = TOKEN_FROM_ID(314, KeywordTokenType), |
---|
161 | T_CONST = TOKEN_FROM_ID(315, KeywordTokenType), |
---|
162 | T_CONSTCAST = TOKEN_FROM_ID(316, KeywordTokenType), |
---|
163 | T_CONTINUE = TOKEN_FROM_ID(317, KeywordTokenType), |
---|
164 | T_DEFAULT = TOKEN_FROM_ID(318, KeywordTokenType), |
---|
165 | T_DEFINED = TOKEN_FROM_ID(319, KeywordTokenType), |
---|
166 | T_DELETE = TOKEN_FROM_ID(320, KeywordTokenType), |
---|
167 | T_DO = TOKEN_FROM_ID(321, KeywordTokenType), |
---|
168 | T_DOUBLE = TOKEN_FROM_ID(322, KeywordTokenType), |
---|
169 | T_DYNAMICCAST = TOKEN_FROM_ID(323, KeywordTokenType), |
---|
170 | T_ELSE = TOKEN_FROM_ID(324, KeywordTokenType), |
---|
171 | T_ENUM = TOKEN_FROM_ID(325, KeywordTokenType), |
---|
172 | T_EXPLICIT = TOKEN_FROM_ID(326, KeywordTokenType), |
---|
173 | T_EXPORT = TOKEN_FROM_ID(327, KeywordTokenType), |
---|
174 | T_EXTERN = TOKEN_FROM_ID(328, KeywordTokenType), |
---|
175 | T_FLOAT = TOKEN_FROM_ID(329, KeywordTokenType), |
---|
176 | T_FOR = TOKEN_FROM_ID(330, KeywordTokenType), |
---|
177 | T_FRIEND = TOKEN_FROM_ID(331, KeywordTokenType), |
---|
178 | T_GOTO = TOKEN_FROM_ID(332, KeywordTokenType), |
---|
179 | T_IF = TOKEN_FROM_ID(333, KeywordTokenType), |
---|
180 | T_INLINE = TOKEN_FROM_ID(334, KeywordTokenType), |
---|
181 | T_INT = TOKEN_FROM_ID(335, KeywordTokenType), |
---|
182 | T_LONG = TOKEN_FROM_ID(336, KeywordTokenType), |
---|
183 | T_MUTABLE = TOKEN_FROM_ID(337, KeywordTokenType), |
---|
184 | T_NAMESPACE = TOKEN_FROM_ID(338, KeywordTokenType), |
---|
185 | T_NEW = TOKEN_FROM_ID(339, KeywordTokenType), |
---|
186 | T_OPERATOR = TOKEN_FROM_ID(340, KeywordTokenType), |
---|
187 | T_PRIVATE = TOKEN_FROM_ID(341, KeywordTokenType), |
---|
188 | T_PROTECTED = TOKEN_FROM_ID(342, KeywordTokenType), |
---|
189 | T_PUBLIC = TOKEN_FROM_ID(343, KeywordTokenType), |
---|
190 | T_REGISTER = TOKEN_FROM_ID(344, KeywordTokenType), |
---|
191 | T_REINTERPRETCAST = TOKEN_FROM_ID(345, KeywordTokenType), |
---|
192 | T_RETURN = TOKEN_FROM_ID(346, KeywordTokenType), |
---|
193 | T_SHORT = TOKEN_FROM_ID(347, KeywordTokenType), |
---|
194 | T_SIGNED = TOKEN_FROM_ID(348, KeywordTokenType), |
---|
195 | T_SIZEOF = TOKEN_FROM_ID(349, KeywordTokenType), |
---|
196 | T_STATIC = TOKEN_FROM_ID(350, KeywordTokenType), |
---|
197 | T_STATICCAST = TOKEN_FROM_ID(351, KeywordTokenType), |
---|
198 | T_STRUCT = TOKEN_FROM_ID(352, KeywordTokenType), |
---|
199 | T_SWITCH = TOKEN_FROM_ID(353, KeywordTokenType), |
---|
200 | T_TEMPLATE = TOKEN_FROM_ID(354, KeywordTokenType), |
---|
201 | T_THIS = TOKEN_FROM_ID(355, KeywordTokenType), |
---|
202 | T_THROW = TOKEN_FROM_ID(356, KeywordTokenType), |
---|
203 | T_TRY = TOKEN_FROM_ID(357, KeywordTokenType), |
---|
204 | T_TYPEDEF = TOKEN_FROM_ID(358, KeywordTokenType), |
---|
205 | T_TYPEID = TOKEN_FROM_ID(359, KeywordTokenType), |
---|
206 | T_TYPENAME = TOKEN_FROM_ID(360, KeywordTokenType), |
---|
207 | T_UNION = TOKEN_FROM_ID(361, KeywordTokenType), |
---|
208 | T_UNSIGNED = TOKEN_FROM_ID(362, KeywordTokenType), |
---|
209 | T_USING = TOKEN_FROM_ID(363, KeywordTokenType), |
---|
210 | T_VIRTUAL = TOKEN_FROM_ID(364, KeywordTokenType), |
---|
211 | T_VOID = TOKEN_FROM_ID(365, KeywordTokenType), |
---|
212 | T_VOLATILE = TOKEN_FROM_ID(366, KeywordTokenType), |
---|
213 | T_WCHART = TOKEN_FROM_ID(367, KeywordTokenType), |
---|
214 | T_WHILE = TOKEN_FROM_ID(368, KeywordTokenType), |
---|
215 | T_PP_DEFINE = TOKEN_FROM_ID(369, PPTokenType), |
---|
216 | T_PP_IF = TOKEN_FROM_ID(370, PPConditionalTokenType), |
---|
217 | T_PP_IFDEF = TOKEN_FROM_ID(371, PPConditionalTokenType), |
---|
218 | T_PP_IFNDEF = TOKEN_FROM_ID(372, PPConditionalTokenType), |
---|
219 | T_PP_ELSE = TOKEN_FROM_ID(373, PPConditionalTokenType), |
---|
220 | T_PP_ELIF = TOKEN_FROM_ID(374, PPConditionalTokenType), |
---|
221 | T_PP_ENDIF = TOKEN_FROM_ID(375, PPConditionalTokenType), |
---|
222 | T_PP_ERROR = TOKEN_FROM_ID(376, PPTokenType), |
---|
223 | T_PP_LINE = TOKEN_FROM_ID(377, PPTokenType), |
---|
224 | T_PP_PRAGMA = TOKEN_FROM_ID(378, PPTokenType), |
---|
225 | T_PP_UNDEF = TOKEN_FROM_ID(379, PPTokenType), |
---|
226 | T_PP_WARNING = TOKEN_FROM_ID(380, PPTokenType), |
---|
227 | T_IDENTIFIER = TOKEN_FROM_ID(381, IdentifierTokenType), |
---|
228 | T_OCTALINT = TOKEN_FROM_ID(382, IntegerLiteralTokenType), |
---|
229 | T_DECIMALINT = TOKEN_FROM_ID(383, IntegerLiteralTokenType), |
---|
230 | T_HEXAINT = TOKEN_FROM_ID(384, IntegerLiteralTokenType), |
---|
231 | T_INTLIT = TOKEN_FROM_ID(385, IntegerLiteralTokenType), |
---|
232 | T_LONGINTLIT = TOKEN_FROM_ID(386, IntegerLiteralTokenType), |
---|
233 | T_FLOATLIT = TOKEN_FROM_ID(387, FloatingLiteralTokenType), |
---|
234 | T_FIXEDPOINTLIT = TOKEN_FROM_ID(387, FloatingLiteralTokenType|AltTokenType), // IDL specific |
---|
235 | T_CCOMMENT = TOKEN_FROM_ID(388, WhiteSpaceTokenType), |
---|
236 | T_CPPCOMMENT = TOKEN_FROM_ID(389, WhiteSpaceTokenType), |
---|
237 | T_CHARLIT = TOKEN_FROM_ID(390, CharacterLiteralTokenType), |
---|
238 | T_STRINGLIT = TOKEN_FROM_ID(391, StringLiteralTokenType), |
---|
239 | T_CONTLINE = TOKEN_FROM_ID(392, EOLTokenType), |
---|
240 | T_SPACE = TOKEN_FROM_ID(393, WhiteSpaceTokenType), |
---|
241 | T_SPACE2 = TOKEN_FROM_ID(394, WhiteSpaceTokenType), |
---|
242 | T_NEWLINE = TOKEN_FROM_ID(395, EOLTokenType), |
---|
243 | T_POUND_POUND = TOKEN_FROM_ID(396, OperatorTokenType), |
---|
244 | T_POUND_POUND_ALT = TOKEN_FROM_ID(396, OperatorTokenType|AltTokenType), |
---|
245 | T_POUND_POUND_TRIGRAPH = TOKEN_FROM_ID(396, OperatorTokenType|TriGraphTokenType), |
---|
246 | T_POUND = TOKEN_FROM_ID(397, OperatorTokenType), |
---|
247 | T_POUND_ALT = TOKEN_FROM_ID(397, OperatorTokenType|AltTokenType), |
---|
248 | T_POUND_TRIGRAPH = TOKEN_FROM_ID(397, OperatorTokenType|TriGraphTokenType), |
---|
249 | T_ANY = TOKEN_FROM_ID(398, UnknownTokenType), |
---|
250 | T_ANY_TRIGRAPH = TOKEN_FROM_ID(398, UnknownTokenType|TriGraphTokenType), |
---|
251 | T_PP_INCLUDE = TOKEN_FROM_ID(399, PPTokenType), |
---|
252 | T_PP_QHEADER = TOKEN_FROM_ID(400, PPTokenType), |
---|
253 | T_PP_HHEADER = TOKEN_FROM_ID(401, PPTokenType), |
---|
254 | T_PP_INCLUDE_NEXT = TOKEN_FROM_ID(399, PPTokenType|AltTokenType), |
---|
255 | T_PP_QHEADER_NEXT = TOKEN_FROM_ID(400, PPTokenType|AltTokenType), |
---|
256 | T_PP_HHEADER_NEXT = TOKEN_FROM_ID(401, PPTokenType|AltTokenType), |
---|
257 | T_EOF = TOKEN_FROM_ID(402, EOFTokenType), // end of file reached |
---|
258 | T_EOI = TOKEN_FROM_ID(403, EOFTokenType), // end of input reached |
---|
259 | |
---|
260 | // MS extensions |
---|
261 | T_MSEXT_INT8 = TOKEN_FROM_ID(404, KeywordTokenType), |
---|
262 | T_MSEXT_INT16 = TOKEN_FROM_ID(405, KeywordTokenType), |
---|
263 | T_MSEXT_INT32 = TOKEN_FROM_ID(406, KeywordTokenType), |
---|
264 | T_MSEXT_INT64 = TOKEN_FROM_ID(407, KeywordTokenType), |
---|
265 | T_MSEXT_BASED = TOKEN_FROM_ID(408, KeywordTokenType), |
---|
266 | T_MSEXT_DECLSPEC = TOKEN_FROM_ID(409, KeywordTokenType), |
---|
267 | T_MSEXT_CDECL = TOKEN_FROM_ID(410, KeywordTokenType), |
---|
268 | T_MSEXT_FASTCALL = TOKEN_FROM_ID(411, KeywordTokenType), |
---|
269 | T_MSEXT_STDCALL = TOKEN_FROM_ID(412, KeywordTokenType), |
---|
270 | T_MSEXT_TRY = TOKEN_FROM_ID(413, KeywordTokenType), |
---|
271 | T_MSEXT_EXCEPT = TOKEN_FROM_ID(414, KeywordTokenType), |
---|
272 | T_MSEXT_FINALLY = TOKEN_FROM_ID(415, KeywordTokenType), |
---|
273 | T_MSEXT_LEAVE = TOKEN_FROM_ID(416, KeywordTokenType), |
---|
274 | T_MSEXT_INLINE = TOKEN_FROM_ID(417, KeywordTokenType), |
---|
275 | T_MSEXT_ASM = TOKEN_FROM_ID(418, KeywordTokenType), |
---|
276 | |
---|
277 | T_MSEXT_PP_REGION = TOKEN_FROM_ID(419, PPTokenType), |
---|
278 | T_MSEXT_PP_ENDREGION = TOKEN_FROM_ID(420, PPTokenType), |
---|
279 | |
---|
280 | T_LAST_TOKEN_ID, |
---|
281 | T_LAST_TOKEN = ID_FROM_TOKEN(T_LAST_TOKEN_ID), |
---|
282 | |
---|
283 | // pseudo tokens to help streamlining macro replacement, these should not |
---|
284 | // returned from the lexer nor should these be returned from the pp-iterator |
---|
285 | T_NONREPLACABLE_IDENTIFIER = TOKEN_FROM_ID(T_LAST_TOKEN+1, IdentifierTokenType), |
---|
286 | T_PLACEHOLDER = TOKEN_FROM_ID(T_LAST_TOKEN+2, WhiteSpaceTokenType), |
---|
287 | T_PLACEMARKER = TOKEN_FROM_ID(T_LAST_TOKEN+3, InternalTokenType), |
---|
288 | T_PARAMETERBASE = TOKEN_FROM_ID(T_LAST_TOKEN+4, ParameterTokenType), |
---|
289 | T_EXTPARAMETERBASE = TOKEN_FROM_ID(T_LAST_TOKEN+5, ExtParameterTokenType) |
---|
290 | }; |
---|
291 | |
---|
292 | /////////////////////////////////////////////////////////////////////////////// |
---|
293 | // redefine the TOKEN_FROM_ID macro to be more type safe |
---|
294 | #undef TOKEN_FROM_ID |
---|
295 | #define TOKEN_FROM_ID(id, cat) boost::wave::token_id((id) | (cat)) |
---|
296 | |
---|
297 | #undef ID_FROM_TOKEN |
---|
298 | #define ID_FROM_TOKEN(tok) ((tok) & ~boost::wave::TokenTypeMask) |
---|
299 | |
---|
300 | #undef BASEID_FROM_TOKEN |
---|
301 | #define BASEID_FROM_TOKEN(tok) \ |
---|
302 | boost::wave::token_id(((tok) & ~boost::wave::ExtTokenTypeMask)) \ |
---|
303 | /**/ |
---|
304 | #define BASE_TOKEN(tok) \ |
---|
305 | boost::wave::token_id((tok) & boost::wave::MainTokenMask) \ |
---|
306 | /**/ |
---|
307 | #define CATEGORY_FROM_TOKEN(tok) ((tok) & boost::wave::TokenTypeMask) |
---|
308 | #define EXTCATEGORY_FROM_TOKEN(tok) ((tok) & boost::wave::ExtTokenTypeMask) |
---|
309 | #define IS_CATEGORY(tok, cat) \ |
---|
310 | ((CATEGORY_FROM_TOKEN(tok) == (cat)) ? true : false) \ |
---|
311 | /**/ |
---|
312 | #define IS_EXTCATEGORY(tok, cat) \ |
---|
313 | ((EXTCATEGORY_FROM_TOKEN(tok) == (cat)) ? true : false) \ |
---|
314 | /**/ |
---|
315 | |
---|
316 | /////////////////////////////////////////////////////////////////////////////// |
---|
317 | // return a token name |
---|
318 | inline BOOST_WAVE_STRINGTYPE |
---|
319 | get_token_name(token_id tokid) |
---|
320 | { |
---|
321 | // Table of token names |
---|
322 | // |
---|
323 | // Please note that the sequence of token names must match the sequence of |
---|
324 | // token id's defined in then enum token_id above. |
---|
325 | static char const *tok_names[] = { |
---|
326 | /* 256 */ "AND", |
---|
327 | /* 257 */ "ANDAND", |
---|
328 | /* 258 */ "ASSIGN", |
---|
329 | /* 259 */ "ANDASSIGN", |
---|
330 | /* 260 */ "OR", |
---|
331 | /* 261 */ "ORASSIGN", |
---|
332 | /* 262 */ "XOR", |
---|
333 | /* 263 */ "XORASSIGN", |
---|
334 | /* 264 */ "COMMA", |
---|
335 | /* 265 */ "COLON", |
---|
336 | /* 266 */ "DIVIDE", |
---|
337 | /* 267 */ "DIVIDEASSIGN", |
---|
338 | /* 268 */ "DOT", |
---|
339 | /* 269 */ "DOTSTAR", |
---|
340 | /* 270 */ "ELLIPSIS", |
---|
341 | /* 271 */ "EQUAL", |
---|
342 | /* 272 */ "GREATER", |
---|
343 | /* 273 */ "GREATEREQUAL", |
---|
344 | /* 274 */ "LEFTBRACE", |
---|
345 | /* 275 */ "LESS", |
---|
346 | /* 276 */ "LESSEQUAL", |
---|
347 | /* 277 */ "LEFTPAREN", |
---|
348 | /* 278 */ "LEFTBRACKET", |
---|
349 | /* 279 */ "MINUS", |
---|
350 | /* 280 */ "MINUSASSIGN", |
---|
351 | /* 281 */ "MINUSMINUS", |
---|
352 | /* 282 */ "PERCENT", |
---|
353 | /* 283 */ "PERCENTASSIGN", |
---|
354 | /* 284 */ "NOT", |
---|
355 | /* 285 */ "NOTEQUAL", |
---|
356 | /* 286 */ "OROR", |
---|
357 | /* 287 */ "PLUS", |
---|
358 | /* 288 */ "PLUSASSIGN", |
---|
359 | /* 289 */ "PLUSPLUS", |
---|
360 | /* 290 */ "ARROW", |
---|
361 | /* 291 */ "ARROWSTAR", |
---|
362 | /* 292 */ "QUESTION_MARK", |
---|
363 | /* 293 */ "RIGHTBRACE", |
---|
364 | /* 294 */ "RIGHTPAREN", |
---|
365 | /* 295 */ "RIGHTBRACKET", |
---|
366 | /* 296 */ "COLON_COLON", |
---|
367 | /* 297 */ "SEMICOLON", |
---|
368 | /* 298 */ "SHIFTLEFT", |
---|
369 | /* 299 */ "SHIFTLEFTASSIGN", |
---|
370 | /* 300 */ "SHIFTRIGHT", |
---|
371 | /* 301 */ "SHIFTRIGHTASSIGN", |
---|
372 | /* 302 */ "STAR", |
---|
373 | /* 303 */ "COMPL", |
---|
374 | /* 304 */ "STARASSIGN", |
---|
375 | /* 305 */ "ASM", |
---|
376 | /* 306 */ "AUTO", |
---|
377 | /* 307 */ "BOOL", |
---|
378 | /* 308 */ "FALSE", |
---|
379 | /* 309 */ "TRUE", |
---|
380 | /* 310 */ "BREAK", |
---|
381 | /* 311 */ "CASE", |
---|
382 | /* 312 */ "CATCH", |
---|
383 | /* 313 */ "CHAR", |
---|
384 | /* 314 */ "CLASS", |
---|
385 | /* 315 */ "CONST", |
---|
386 | /* 316 */ "CONSTCAST", |
---|
387 | /* 317 */ "CONTINUE", |
---|
388 | /* 318 */ "DEFAULT", |
---|
389 | /* 319 */ "DEFINED", |
---|
390 | /* 320 */ "DELETE", |
---|
391 | /* 321 */ "DO", |
---|
392 | /* 322 */ "DOUBLE", |
---|
393 | /* 323 */ "DYNAMICCAST", |
---|
394 | /* 324 */ "ELSE", |
---|
395 | /* 325 */ "ENUM", |
---|
396 | /* 326 */ "EXPLICIT", |
---|
397 | /* 327 */ "EXPORT", |
---|
398 | /* 328 */ "EXTERN", |
---|
399 | /* 329 */ "FLOAT", |
---|
400 | /* 330 */ "FOR", |
---|
401 | /* 331 */ "FRIEND", |
---|
402 | /* 332 */ "GOTO", |
---|
403 | /* 333 */ "IF", |
---|
404 | /* 334 */ "INLINE", |
---|
405 | /* 335 */ "INT", |
---|
406 | /* 336 */ "LONG", |
---|
407 | /* 337 */ "MUTABLE", |
---|
408 | /* 338 */ "NAMESPACE", |
---|
409 | /* 339 */ "NEW", |
---|
410 | /* 340 */ "OPERATOR", |
---|
411 | /* 341 */ "PRIVATE", |
---|
412 | /* 342 */ "PROTECTED", |
---|
413 | /* 343 */ "PUBLIC", |
---|
414 | /* 344 */ "REGISTER", |
---|
415 | /* 345 */ "REINTERPRETCAST", |
---|
416 | /* 346 */ "RETURN", |
---|
417 | /* 347 */ "SHORT", |
---|
418 | /* 348 */ "SIGNED", |
---|
419 | /* 349 */ "SIZEOF", |
---|
420 | /* 350 */ "STATIC", |
---|
421 | /* 351 */ "STATICCAST", |
---|
422 | /* 352 */ "STRUCT", |
---|
423 | /* 353 */ "SWITCH", |
---|
424 | /* 354 */ "TEMPLATE", |
---|
425 | /* 355 */ "THIS", |
---|
426 | /* 356 */ "THROW", |
---|
427 | /* 357 */ "TRY", |
---|
428 | /* 358 */ "TYPEDEF", |
---|
429 | /* 359 */ "TYPEID", |
---|
430 | /* 360 */ "TYPENAME", |
---|
431 | /* 361 */ "UNION", |
---|
432 | /* 362 */ "UNSIGNED", |
---|
433 | /* 363 */ "USING", |
---|
434 | /* 364 */ "VIRTUAL", |
---|
435 | /* 365 */ "VOID", |
---|
436 | /* 366 */ "VOLATILE", |
---|
437 | /* 367 */ "WCHART", |
---|
438 | /* 368 */ "WHILE", |
---|
439 | /* 369 */ "PP_DEFINE", |
---|
440 | /* 370 */ "PP_IF", |
---|
441 | /* 371 */ "PP_IFDEF", |
---|
442 | /* 372 */ "PP_IFNDEF", |
---|
443 | /* 373 */ "PP_ELSE", |
---|
444 | /* 374 */ "PP_ELIF", |
---|
445 | /* 375 */ "PP_ENDIF", |
---|
446 | /* 376 */ "PP_ERROR", |
---|
447 | /* 377 */ "PP_LINE", |
---|
448 | /* 378 */ "PP_PRAGMA", |
---|
449 | /* 379 */ "PP_UNDEF", |
---|
450 | /* 380 */ "PP_WARNING", |
---|
451 | /* 381 */ "IDENTIFIER", |
---|
452 | /* 382 */ "OCTALINT", |
---|
453 | /* 383 */ "DECIMALINT", |
---|
454 | /* 384 */ "HEXAINT", |
---|
455 | /* 385 */ "INTLIT", |
---|
456 | /* 386 */ "LONGINTLIT", |
---|
457 | /* 387 */ "FLOATLIT", |
---|
458 | /* 388 */ "CCOMMENT", |
---|
459 | /* 389 */ "CPPCOMMENT", |
---|
460 | /* 390 */ "CHARLIT", |
---|
461 | /* 391 */ "STRINGLIT", |
---|
462 | /* 392 */ "CONTLINE", |
---|
463 | /* 393 */ "SPACE", |
---|
464 | /* 394 */ "SPACE2", |
---|
465 | /* 395 */ "NEWLINE", |
---|
466 | /* 396 */ "POUND_POUND", |
---|
467 | /* 397 */ "POUND", |
---|
468 | /* 398 */ "ANY", |
---|
469 | /* 399 */ "PP_INCLUDE", |
---|
470 | /* 400 */ "PP_QHEADER", |
---|
471 | /* 401 */ "PP_HHEADER", |
---|
472 | /* 402 */ "EOF", |
---|
473 | /* 403 */ "EOI", |
---|
474 | |
---|
475 | // MS extensions |
---|
476 | /* 404 */ "MSEXT_INT8", |
---|
477 | /* 405 */ "MSEXT_INT16", |
---|
478 | /* 406 */ "MSEXT_INT32", |
---|
479 | /* 407 */ "MSEXT_INT64", |
---|
480 | /* 408 */ "MSEXT_BASED", |
---|
481 | /* 409 */ "MSEXT_DECLSPEC", |
---|
482 | /* 410 */ "MSEXT_CDECL", |
---|
483 | /* 411 */ "MSEXT_FASTCALL", |
---|
484 | /* 412 */ "MSEXT_STDCALL", |
---|
485 | /* 413 */ "MSEXT_TRY", |
---|
486 | /* 414 */ "MSEXT_EXCEPT", |
---|
487 | /* 415 */ "MSEXT_FINALLY", |
---|
488 | /* 416 */ "MSEXT_LEAVE", |
---|
489 | /* 417 */ "MSEXT_INLINE", |
---|
490 | /* 418 */ "MSEXT_ASM", |
---|
491 | /* 419 */ "MSEXT_REGION", |
---|
492 | /* 420 */ "MSEXT_ENDREGION", |
---|
493 | }; |
---|
494 | |
---|
495 | unsigned int id = BASEID_FROM_TOKEN(tokid)-T_FIRST_TOKEN; |
---|
496 | |
---|
497 | BOOST_ASSERT(id < T_LAST_TOKEN-T_FIRST_TOKEN); |
---|
498 | return tok_names[id]; |
---|
499 | } |
---|
500 | |
---|
501 | /////////////////////////////////////////////////////////////////////////////// |
---|
502 | // return a token name |
---|
503 | inline char const * |
---|
504 | get_token_value(token_id tokid) |
---|
505 | { |
---|
506 | // Table of token values |
---|
507 | // |
---|
508 | // Please note that the sequence of token names must match the sequence of |
---|
509 | // token id's defined in then enum token_id above. |
---|
510 | static char const *tok_names[] = { |
---|
511 | /* 256 */ "&", |
---|
512 | /* 257 */ "&&", |
---|
513 | /* 258 */ "=", |
---|
514 | /* 259 */ "&=", |
---|
515 | /* 260 */ "|", |
---|
516 | /* 261 */ "|=", |
---|
517 | /* 262 */ "^", |
---|
518 | /* 263 */ "^=", |
---|
519 | /* 264 */ ",", |
---|
520 | /* 265 */ ":", |
---|
521 | /* 266 */ "/", |
---|
522 | /* 267 */ "/=", |
---|
523 | /* 268 */ ".", |
---|
524 | /* 269 */ ".*", |
---|
525 | /* 270 */ "...", |
---|
526 | /* 271 */ "==", |
---|
527 | /* 272 */ ">", |
---|
528 | /* 273 */ ">=", |
---|
529 | /* 274 */ "{", |
---|
530 | /* 275 */ "<", |
---|
531 | /* 276 */ "<=", |
---|
532 | /* 277 */ "(", |
---|
533 | /* 278 */ "[", |
---|
534 | /* 279 */ "-", |
---|
535 | /* 280 */ "-=", |
---|
536 | /* 281 */ "--", |
---|
537 | /* 282 */ "%", |
---|
538 | /* 283 */ "%=", |
---|
539 | /* 284 */ "!", |
---|
540 | /* 285 */ "!=", |
---|
541 | /* 286 */ "||", |
---|
542 | /* 287 */ "+", |
---|
543 | /* 288 */ "+=", |
---|
544 | /* 289 */ "++", |
---|
545 | /* 290 */ "->", |
---|
546 | /* 291 */ "->*", |
---|
547 | /* 292 */ "?", |
---|
548 | /* 293 */ "}", |
---|
549 | /* 294 */ ")", |
---|
550 | /* 295 */ "]", |
---|
551 | /* 296 */ "::", |
---|
552 | /* 297 */ ";", |
---|
553 | /* 298 */ "<<", |
---|
554 | /* 299 */ "<<=", |
---|
555 | /* 300 */ ">>", |
---|
556 | /* 301 */ ">>=", |
---|
557 | /* 302 */ "*", |
---|
558 | /* 303 */ "~", |
---|
559 | /* 304 */ "*=", |
---|
560 | /* 305 */ "asm", |
---|
561 | /* 306 */ "auto", |
---|
562 | /* 307 */ "bool", |
---|
563 | /* 308 */ "false", |
---|
564 | /* 309 */ "true", |
---|
565 | /* 310 */ "break", |
---|
566 | /* 311 */ "case", |
---|
567 | /* 312 */ "catch", |
---|
568 | /* 313 */ "char", |
---|
569 | /* 314 */ "class", |
---|
570 | /* 315 */ "const", |
---|
571 | /* 316 */ "const_cast", |
---|
572 | /* 317 */ "continue", |
---|
573 | /* 318 */ "default", |
---|
574 | /* 319 */ "defined", |
---|
575 | /* 320 */ "delete", |
---|
576 | /* 321 */ "do", |
---|
577 | /* 322 */ "double", |
---|
578 | /* 323 */ "dynamic_cast", |
---|
579 | /* 324 */ "else", |
---|
580 | /* 325 */ "enum", |
---|
581 | /* 326 */ "explicit", |
---|
582 | /* 327 */ "export", |
---|
583 | /* 328 */ "extern", |
---|
584 | /* 329 */ "float", |
---|
585 | /* 330 */ "for", |
---|
586 | /* 331 */ "friend", |
---|
587 | /* 332 */ "goto", |
---|
588 | /* 333 */ "if", |
---|
589 | /* 334 */ "inline", |
---|
590 | /* 335 */ "int", |
---|
591 | /* 336 */ "long", |
---|
592 | /* 337 */ "mutable", |
---|
593 | /* 338 */ "namespace", |
---|
594 | /* 339 */ "new", |
---|
595 | /* 340 */ "operator", |
---|
596 | /* 341 */ "private", |
---|
597 | /* 342 */ "protected", |
---|
598 | /* 343 */ "public", |
---|
599 | /* 344 */ "register", |
---|
600 | /* 345 */ "reinterpret_cast", |
---|
601 | /* 346 */ "return", |
---|
602 | /* 347 */ "short", |
---|
603 | /* 348 */ "signed", |
---|
604 | /* 349 */ "sizeof", |
---|
605 | /* 350 */ "static", |
---|
606 | /* 351 */ "static_cast", |
---|
607 | /* 352 */ "struct", |
---|
608 | /* 353 */ "switch", |
---|
609 | /* 354 */ "template", |
---|
610 | /* 355 */ "this", |
---|
611 | /* 356 */ "throw", |
---|
612 | /* 357 */ "try", |
---|
613 | /* 358 */ "typedef", |
---|
614 | /* 359 */ "typeid", |
---|
615 | /* 360 */ "typename", |
---|
616 | /* 361 */ "union", |
---|
617 | /* 362 */ "unsigned", |
---|
618 | /* 363 */ "using", |
---|
619 | /* 364 */ "virtual", |
---|
620 | /* 365 */ "void", |
---|
621 | /* 366 */ "volatile", |
---|
622 | /* 367 */ "wchar_t", |
---|
623 | /* 368 */ "while", |
---|
624 | /* 369 */ "#define", |
---|
625 | /* 370 */ "#if", |
---|
626 | /* 371 */ "#ifdef", |
---|
627 | /* 372 */ "#ifndef", |
---|
628 | /* 373 */ "#else", |
---|
629 | /* 374 */ "#elif", |
---|
630 | /* 375 */ "#endif", |
---|
631 | /* 376 */ "#error", |
---|
632 | /* 377 */ "#line", |
---|
633 | /* 378 */ "#pragma ", |
---|
634 | /* 379 */ "#undef ", |
---|
635 | /* 380 */ "#warning", |
---|
636 | /* 381 */ "", // identifier |
---|
637 | /* 382 */ "", // octalint |
---|
638 | /* 383 */ "", // decimalint |
---|
639 | /* 384 */ "", // hexlit |
---|
640 | /* 385 */ "", // intlit |
---|
641 | /* 386 */ "", // longintlit |
---|
642 | /* 387 */ "", // floatlit |
---|
643 | /* 388 */ "", // ccomment |
---|
644 | /* 389 */ "", // cppcomment |
---|
645 | /* 390 */ "", // charlit |
---|
646 | /* 391 */ "", // stringlit |
---|
647 | /* 392 */ "", // contline |
---|
648 | /* 393 */ "", // space |
---|
649 | /* 394 */ "", // space2 |
---|
650 | /* 395 */ "\n", |
---|
651 | /* 396 */ "##", |
---|
652 | /* 397 */ "#", |
---|
653 | /* 398 */ "", // any |
---|
654 | /* 399 */ "#include", |
---|
655 | /* 400 */ "#include", |
---|
656 | /* 401 */ "#include", |
---|
657 | /* 402 */ "", // eof |
---|
658 | /* 403 */ "", // eoi |
---|
659 | |
---|
660 | // MS extensions |
---|
661 | /* 404 */ "__int8", |
---|
662 | /* 405 */ "__int16", |
---|
663 | /* 406 */ "__int32", |
---|
664 | /* 407 */ "__int64", |
---|
665 | /* 408 */ "__based", |
---|
666 | /* 409 */ "__declspec", |
---|
667 | /* 410 */ "__cdecl", |
---|
668 | /* 411 */ "__fastcall", |
---|
669 | /* 412 */ "__stdcall", |
---|
670 | /* 413 */ "__try", |
---|
671 | /* 414 */ "__except", |
---|
672 | /* 415 */ "__finally", |
---|
673 | /* 416 */ "__leave", |
---|
674 | /* 417 */ "__inline", |
---|
675 | /* 418 */ "__asm", |
---|
676 | /* 419 */ "#region", |
---|
677 | /* 420 */ "#endregion", |
---|
678 | }; |
---|
679 | |
---|
680 | unsigned int id = BASEID_FROM_TOKEN(tokid)-T_FIRST_TOKEN; |
---|
681 | |
---|
682 | BOOST_ASSERT(id < T_LAST_TOKEN-T_FIRST_TOKEN); |
---|
683 | return tok_names[id]; |
---|
684 | } |
---|
685 | |
---|
686 | /////////////////////////////////////////////////////////////////////////////// |
---|
687 | } // namespace wave |
---|
688 | } // namespace boost |
---|
689 | |
---|
690 | #endif // #if !defined(BOOST_WAVE_TOKEN_IDS_DEFINED) |
---|
691 | |
---|
692 | #endif // !defined(TOKEN_IDS_HPP_414E9A58_F079_4789_8AFF_513815CE475B_INCLUDED) |
---|
693 | |
---|