| 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 | |
| 9 | QT_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() \ |
| 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() \ |
| 168 | F() \ |
| 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 | |
| 197 | enum 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 | = CPP_COMMENT, |
| 212 | = 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) |
| 248 | const char *tokenTypeName(Token t); |
| 249 | #endif |
| 250 | |
| 251 | typedef Token PP_Token; |
| 252 | |
| 253 | QT_END_NAMESPACE |
| 254 | |
| 255 | #endif // TOKEN_H |
| 256 | |