| 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() \ |
| 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() \ |
| 186 | F() \ |
| 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 | = CPP_COMMENT, |
| 230 | = 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 | |