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

source code of qtbase/src/tools/moc/token.h