1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the tools applications of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21 ** included in the packaging of this file. Please review the following
22 ** information to ensure the GNU General Public License requirements will
23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24 **
25 ** $QT_END_LICENSE$
26 **
27 ****************************************************************************/
28 
29 #ifndef TOKEN_H
30 #define TOKEN_H
31 
32 #include <QtCore/qglobal.h>
33 
34 QT_BEGIN_NAMESPACE
35 
36 #define FOR_ALL_TOKENS(F) \
37     F(NOTOKEN) \
38     F(IDENTIFIER) \
39     F(INTEGER_LITERAL) \
40     F(CHARACTER_LITERAL) \
41     F(STRING_LITERAL) \
42     F(BOOLEAN_LITERAL) \
43     F(HEADER_NAME) \
44     F(LANGLE) \
45     F(RANGLE) \
46     F(LPAREN) \
47     F(RPAREN) \
48     F(ELIPSIS) \
49     F(LBRACK) \
50     F(RBRACK) \
51     F(LBRACE) \
52     F(RBRACE) \
53     F(EQ) \
54     F(SCOPE) \
55     F(SEMIC) \
56     F(COLON) \
57     F(DOTSTAR) \
58     F(QUESTION) \
59     F(DOT) \
60     F(DYNAMIC_CAST) \
61     F(STATIC_CAST) \
62     F(REINTERPRET_CAST) \
63     F(CONST_CAST) \
64     F(TYPEID) \
65     F(THIS) \
66     F(TEMPLATE) \
67     F(THROW) \
68     F(TRY) \
69     F(CATCH) \
70     F(TYPEDEF) \
71     F(FRIEND) \
72     F(CLASS) \
73     F(NAMESPACE) \
74     F(ENUM) \
75     F(STRUCT) \
76     F(UNION) \
77     F(VIRTUAL) \
78     F(PRIVATE) \
79     F(PROTECTED) \
80     F(PUBLIC) \
81     F(EXPORT) \
82     F(AUTO) \
83     F(REGISTER) \
84     F(EXTERN) \
85     F(MUTABLE) \
86     F(ASM) \
87     F(USING) \
88     F(INLINE) \
89     F(EXPLICIT) \
90     F(STATIC) \
91     F(CONST) \
92     F(VOLATILE) \
93     F(OPERATOR) \
94     F(SIZEOF) \
95     F(NEW) \
96     F(DELETE) \
97     F(PLUS) \
98     F(MINUS) \
99     F(STAR) \
100     F(SLASH) \
101     F(PERCENT) \
102     F(HAT) \
103     F(AND) \
104     F(OR) \
105     F(TILDE) \
106     F(NOT) \
107     F(PLUS_EQ) \
108     F(MINUS_EQ) \
109     F(STAR_EQ) \
110     F(SLASH_EQ) \
111     F(PERCENT_EQ) \
112     F(HAT_EQ) \
113     F(AND_EQ) \
114     F(OR_EQ) \
115     F(LTLT) \
116     F(GTGT) \
117     F(GTGT_EQ) \
118     F(LTLT_EQ) \
119     F(EQEQ) \
120     F(NE) \
121     F(LE) \
122     F(GE) \
123     F(ANDAND) \
124     F(OROR) \
125     F(INCR) \
126     F(DECR) \
127     F(COMMA) \
128     F(ARROW_STAR) \
129     F(ARROW) \
130     F(CHAR) \
131     F(WCHAR) \
132     F(BOOL) \
133     F(SHORT) \
134     F(INT) \
135     F(LONG) \
136     F(SIGNED) \
137     F(UNSIGNED) \
138     F(FLOAT) \
139     F(DOUBLE) \
140     F(VOID) \
141     F(CASE) \
142     F(DEFAULT) \
143     F(IF) \
144     F(ELSE) \
145     F(SWITCH) \
146     F(WHILE) \
147     F(DO) \
148     F(FOR) \
149     F(BREAK) \
150     F(CONTINUE) \
151     F(GOTO) \
152     F(SIGNALS) \
153     F(SLOTS) \
154     F(RETURN) \
155     F(Q_OBJECT_TOKEN) \
156     F(Q_GADGET_TOKEN) \
157     F(Q_NAMESPACE_TOKEN) \
158     F(Q_NAMESPACE_EXPORT_TOKEN) \
159     F(Q_PROPERTY_TOKEN) \
160     F(Q_PLUGIN_METADATA_TOKEN) \
161     F(Q_ENUMS_TOKEN) \
162     F(Q_ENUM_TOKEN) \
163     F(Q_ENUM_NS_TOKEN) \
164     F(Q_FLAGS_TOKEN) \
165     F(Q_FLAG_TOKEN) \
166     F(Q_FLAG_NS_TOKEN) \
167     F(Q_DECLARE_FLAGS_TOKEN) \
168     F(Q_DECLARE_INTERFACE_TOKEN) \
169     F(Q_DECLARE_METATYPE_TOKEN) \
170     F(Q_CLASSINFO_TOKEN) \
171     F(Q_INTERFACES_TOKEN) \
172     F(Q_SIGNALS_TOKEN) \
173     F(Q_SLOTS_TOKEN) \
174     F(Q_SIGNAL_TOKEN) \
175     F(Q_SLOT_TOKEN) \
176     F(Q_PRIVATE_SLOT_TOKEN) \
177     F(Q_MOC_COMPAT_TOKEN) \
178     F(Q_INVOKABLE_TOKEN) \
179     F(Q_SCRIPTABLE_TOKEN) \
180     F(Q_PRIVATE_PROPERTY_TOKEN) \
181     F(Q_REVISION_TOKEN) \
182     F(SPECIAL_TREATMENT_MARK) \
183     F(MOC_INCLUDE_BEGIN) \
184     F(MOC_INCLUDE_END) \
185     F(CPP_COMMENT) \
186     F(C_COMMENT) \
187     F(FLOATING_LITERAL) \
188     F(HASH) \
189     F(QUOTE) \
190     F(SINGLEQUOTE) \
191     F(LANGLE_SCOPE) \
192     F(DIGIT) \
193     F(CHARACTER) \
194     F(NEWLINE) \
195     F(WHITESPACE) \
196     F(BACKSLASH) \
197     F(INCOMPLETE) \
198     F(PP_DEFINE) \
199     F(PP_UNDEF) \
200     F(PP_IF) \
201     F(PP_IFDEF) \
202     F(PP_IFNDEF) \
203     F(PP_ELIF) \
204     F(PP_ELSE) \
205     F(PP_ENDIF) \
206     F(PP_INCLUDE) \
207     F(PP_HASHHASH) \
208     F(PP_HASH) \
209     F(PP_DEFINED) \
210     F(PP_INCOMPLETE) \
211     F(PP_MOC_TRUE) \
212     F(PP_MOC_FALSE)
213 
214 
215 enum Token {
216 
217 #define CREATE_ENUM_VALUE(Name) Name,
218     FOR_ALL_TOKENS(CREATE_ENUM_VALUE)
219 #undef CREATE_ENUM_VALUE
220 
221     // aliases
222     PP_AND = AND,
223     PP_ANDAND = ANDAND,
224     PP_BACKSLASH = BACKSLASH,
225     PP_CHARACTER = CHARACTER,
226     PP_CHARACTER_LITERAL = CHARACTER_LITERAL,
227     PP_COLON = COLON,
228     PP_COMMA = COMMA,
229     PP_CPP_COMMENT = CPP_COMMENT,
230     PP_C_COMMENT = C_COMMENT,
231     PP_DIGIT = DIGIT,
232     PP_EQEQ = EQEQ,
233     PP_FLOATING_LITERAL = FLOATING_LITERAL,
234     PP_GE = GE,
235     PP_GTGT = GTGT,
236     PP_HAT = HAT,
237     PP_IDENTIFIER = IDENTIFIER,
238     PP_INTEGER_LITERAL = INTEGER_LITERAL,
239     PP_LANGLE = LANGLE,
240     PP_LE = LE,
241     PP_LPAREN = LPAREN,
242     PP_LTLT = LTLT,
243     PP_MINUS = MINUS,
244     PP_NE = NE,
245     PP_NEWLINE = NEWLINE,
246     PP_NOTOKEN = NOTOKEN,
247     PP_NOT = NOT,
248     PP_OR = OR,
249     PP_OROR = OROR,
250     PP_PERCENT = PERCENT,
251     PP_PLUS = PLUS,
252     PP_QUESTION = QUESTION,
253     PP_QUOTE = QUOTE,
254     PP_RANGLE = RANGLE,
255     PP_RPAREN = RPAREN,
256     PP_SINGLEQUOTE = SINGLEQUOTE,
257     PP_SLASH = SLASH,
258     PP_STAR = STAR,
259     PP_STRING_LITERAL = STRING_LITERAL,
260     PP_TILDE = TILDE,
261     PP_WHITESPACE = WHITESPACE,
262     Q_META_TOKEN_BEGIN = Q_OBJECT_TOKEN,
263     Q_META_TOKEN_END = SPECIAL_TREATMENT_MARK
264 };
265 
266 // for debugging only
267 #if defined(DEBUG_MOC)
268 const char *tokenTypeName(Token t);
269 #endif
270 
271 typedef Token PP_Token;
272 
273 QT_END_NAMESPACE
274 
275 #endif // TOKEN_H
276