7#include <QtCore/QMetaEnum>
16 bool ®expMayFollow)
19 case QQmlJSGrammar::T_DIVIDE_:
20 case QQmlJSGrammar::T_DIVIDE_EQ:
21 if (regexpMayFollow) {
23 if (tokenKind == QQmlJSGrammar::T_DIVIDE_)
28 regexpMayFollow =
false;
31 qCWarning(domLog) <<
"lexing error scannign regexp in" << lexer.
code()
35 }
else if (tokenKind == QQmlJSGrammar::T_DIVIDE_) {
36 regexpMayFollow =
true;
40 case QQmlJSGrammar::T_AND:
41 case QQmlJSGrammar::T_AND_AND:
42 case QQmlJSGrammar::T_AND_EQ:
43 case QQmlJSGrammar::T_ARROW:
44 case QQmlJSGrammar::T_EQ:
45 case QQmlJSGrammar::T_EQ_EQ:
46 case QQmlJSGrammar::T_EQ_EQ_EQ:
47 case QQmlJSGrammar::T_GE:
48 case QQmlJSGrammar::T_GT:
49 case QQmlJSGrammar::T_GT_GT:
50 case QQmlJSGrammar::T_GT_GT_EQ:
51 case QQmlJSGrammar::T_GT_GT_GT:
52 case QQmlJSGrammar::T_GT_GT_GT_EQ:
53 case QQmlJSGrammar::T_LE:
54 case QQmlJSGrammar::T_LT:
55 case QQmlJSGrammar::T_LT_LT:
56 case QQmlJSGrammar::T_LT_LT_EQ:
57 case QQmlJSGrammar::T_MINUS:
58 case QQmlJSGrammar::T_MINUS_EQ:
59 case QQmlJSGrammar::T_MINUS_MINUS:
60 case QQmlJSGrammar::T_NOT:
61 case QQmlJSGrammar::T_NOT_EQ:
62 case QQmlJSGrammar::T_NOT_EQ_EQ:
63 case QQmlJSGrammar::T_OR:
64 case QQmlJSGrammar::T_OR_EQ:
65 case QQmlJSGrammar::T_OR_OR:
66 case QQmlJSGrammar::T_PLUS:
67 case QQmlJSGrammar::T_PLUS_EQ:
68 case QQmlJSGrammar::T_PLUS_PLUS:
69 case QQmlJSGrammar::T_QUESTION:
70 case QQmlJSGrammar::T_QUESTION_DOT:
71 case QQmlJSGrammar::T_QUESTION_QUESTION:
72 case QQmlJSGrammar::T_REMAINDER:
73 case QQmlJSGrammar::T_REMAINDER_EQ:
74 case QQmlJSGrammar::T_STAR:
75 case QQmlJSGrammar::T_STAR_EQ:
76 case QQmlJSGrammar::T_STAR_STAR:
77 case QQmlJSGrammar::T_STAR_STAR_EQ:
78 case QQmlJSGrammar::T_TILDE:
79 case QQmlJSGrammar::T_XOR:
80 case QQmlJSGrammar::T_XOR_EQ:
82 case QQmlJSGrammar::T_AT:
84 case QQmlJSGrammar::T_AUTOMATIC_SEMICOLON:
85 case QQmlJSGrammar::T_COMPATIBILITY_SEMICOLON:
86 case QQmlJSGrammar::T_SEMICOLON:
88 case QQmlJSGrammar::T_COLON:
89 case QQmlJSGrammar::T_COMMA:
90 case QQmlJSGrammar::T_LBRACE:
91 case QQmlJSGrammar::T_LBRACKET:
92 case QQmlJSGrammar::T_LPAREN:
94 case QQmlJSGrammar::T_ELLIPSIS:
95 regexpMayFollow =
true;
98 case QQmlJSGrammar::T_FUNCTION:
105 case QQmlJSGrammar::T_DOT:
106 case QQmlJSGrammar::T_RBRACE:
107 case QQmlJSGrammar::T_RBRACKET:
108 case QQmlJSGrammar::T_RPAREN:
109 regexpMayFollow =
false;
114 case QQmlJSGrammar::T_TEMPLATE_HEAD:
115 regexpMayFollow =
true;
118 QQmlJSGrammar::T_PLUS));
120 case QQmlJSGrammar::T_TEMPLATE_MIDDLE:
121 regexpMayFollow =
true;
125 QQmlJSGrammar::T_PLUS));
127 case QQmlJSGrammar::T_TEMPLATE_TAIL:
128 regexpMayFollow =
true;
132 case QQmlJSGrammar::T_PARTIAL_TEMPLATE_MIDDLE:
133 regexpMayFollow =
true;
137 case QQmlJSGrammar::T_MULTILINE_STRING_LITERAL:
138 case QQmlJSGrammar::T_NO_SUBSTITUTION_TEMPLATE:
139 case QQmlJSGrammar::T_STRING_LITERAL:
140 case QQmlJSGrammar::T_PARTIAL_SINGLE_QUOTE_STRING_LITERAL:
141 case QQmlJSGrammar::T_PARTIAL_DOUBLE_QUOTE_STRING_LITERAL:
142 case QQmlJSGrammar::T_PARTIAL_TEMPLATE_HEAD:
143 regexpMayFollow = (tokenKind == QQmlJSGrammar::T_TEMPLATE_MIDDLE
144 || tokenKind == QQmlJSGrammar::T_TEMPLATE_HEAD);
147 case QQmlJSGrammar::T_VERSION_NUMBER:
151 tokenKind = lexer.
lex();
152 Q_ASSERT(tokenKind == QQmlJSGrammar::T_DOT);
153 tokenKind = lexer.
lex();
154 Q_ASSERT(tokenKind == QQmlJSGrammar::T_VERSION_NUMBER);
176bool Token::lexKindIsDelimiter(
int kind)
179 case QQmlJSGrammar::T_AND:
180 case QQmlJSGrammar::T_AND_AND:
181 case QQmlJSGrammar::T_AND_EQ:
182 case QQmlJSGrammar::T_ARROW:
183 case QQmlJSGrammar::T_EQ:
184 case QQmlJSGrammar::T_EQ_EQ:
185 case QQmlJSGrammar::T_EQ_EQ_EQ:
186 case QQmlJSGrammar::T_GE:
187 case QQmlJSGrammar::T_GT:
188 case QQmlJSGrammar::T_GT_GT:
189 case QQmlJSGrammar::T_GT_GT_EQ:
190 case QQmlJSGrammar::T_GT_GT_GT:
191 case QQmlJSGrammar::T_GT_GT_GT_EQ:
192 case QQmlJSGrammar::T_LE:
193 case QQmlJSGrammar::T_LT:
194 case QQmlJSGrammar::T_LT_LT:
195 case QQmlJSGrammar::T_LT_LT_EQ:
196 case QQmlJSGrammar::T_MINUS:
197 case QQmlJSGrammar::T_MINUS_EQ:
198 case QQmlJSGrammar::T_MINUS_MINUS:
199 case QQmlJSGrammar::T_NOT:
200 case QQmlJSGrammar::T_NOT_EQ:
201 case QQmlJSGrammar::T_NOT_EQ_EQ:
202 case QQmlJSGrammar::T_OR:
203 case QQmlJSGrammar::T_OR_EQ:
204 case QQmlJSGrammar::T_OR_OR:
205 case QQmlJSGrammar::T_PLUS:
206 case QQmlJSGrammar::T_PLUS_EQ:
207 case QQmlJSGrammar::T_PLUS_PLUS:
208 case QQmlJSGrammar::T_QUESTION:
209 case QQmlJSGrammar::T_QUESTION_DOT:
210 case QQmlJSGrammar::T_QUESTION_QUESTION:
211 case QQmlJSGrammar::T_REMAINDER:
212 case QQmlJSGrammar::T_REMAINDER_EQ:
213 case QQmlJSGrammar::T_STAR:
214 case QQmlJSGrammar::T_STAR_EQ:
215 case QQmlJSGrammar::T_STAR_STAR:
216 case QQmlJSGrammar::T_STAR_STAR_EQ:
217 case QQmlJSGrammar::T_TILDE:
218 case QQmlJSGrammar::T_XOR:
219 case QQmlJSGrammar::T_XOR_EQ:
221 case QQmlJSGrammar::T_AT:
232 case QQmlJSGrammar::T_AS:
233 case QQmlJSGrammar::T_IMPORT:
234 case QQmlJSGrammar::T_SIGNAL:
235 case QQmlJSGrammar::T_PROPERTY:
236 case QQmlJSGrammar::T_READONLY:
237 case QQmlJSGrammar::T_COMPONENT:
238 case QQmlJSGrammar::T_REQUIRED:
239 case QQmlJSGrammar::T_ON:
240 case QQmlJSGrammar::T_ENUM:
251 case QQmlJSGrammar::T_COMMENT:
252 case QQmlJSGrammar::T_PARTIAL_COMMENT:
263 case QQmlJSGrammar::T_BREAK:
264 case QQmlJSGrammar::T_CASE:
265 case QQmlJSGrammar::T_CATCH:
266 case QQmlJSGrammar::T_CLASS:
267 case QQmlJSGrammar::T_CONST:
268 case QQmlJSGrammar::T_CONTINUE:
269 case QQmlJSGrammar::T_DEBUGGER:
270 case QQmlJSGrammar::T_DEFAULT:
271 case QQmlJSGrammar::T_DELETE:
272 case QQmlJSGrammar::T_DO:
273 case QQmlJSGrammar::T_ELSE:
274 case QQmlJSGrammar::T_ENUM:
275 case QQmlJSGrammar::T_EXPORT:
276 case QQmlJSGrammar::T_EXTENDS:
277 case QQmlJSGrammar::T_FALSE:
278 case QQmlJSGrammar::T_FINALLY:
279 case QQmlJSGrammar::T_FOR:
280 case QQmlJSGrammar::T_FROM:
281 case QQmlJSGrammar::T_GET:
282 case QQmlJSGrammar::T_IF:
283 case QQmlJSGrammar::T_IN:
284 case QQmlJSGrammar::T_INSTANCEOF:
285 case QQmlJSGrammar::T_LET:
286 case QQmlJSGrammar::T_NEW:
287 case QQmlJSGrammar::T_RETURN:
288 case QQmlJSGrammar::T_SUPER:
289 case QQmlJSGrammar::T_SWITCH:
290 case QQmlJSGrammar::T_THEN:
291 case QQmlJSGrammar::T_THIS:
292 case QQmlJSGrammar::T_THROW:
293 case QQmlJSGrammar::T_VOID:
294 case QQmlJSGrammar::T_WHILE:
295 case QQmlJSGrammar::T_WITH:
296 case QQmlJSGrammar::T_YIELD:
297 case QQmlJSGrammar::T_VAR:
298 case QQmlJSGrammar::T_FUNCTION_STAR:
299 case QQmlJSGrammar::T_FUNCTION:
310 case QQmlJSGrammar::T_IDENTIFIER:
311 case QQmlJSGrammar::T_COMPONENT:
312 case QQmlJSGrammar::T_REQUIRED:
313 case QQmlJSGrammar::T_AS:
314 case QQmlJSGrammar::T_PRAGMA:
315 case QQmlJSGrammar::T_IMPORT:
316 case QQmlJSGrammar::T_RESERVED_WORD:
317 case QQmlJSGrammar::T_SET:
318 case QQmlJSGrammar::T_SIGNAL:
319 case QQmlJSGrammar::T_PROPERTY:
320 case QQmlJSGrammar::T_PUBLIC:
321 case QQmlJSGrammar::T_READONLY:
322 case QQmlJSGrammar::T_NULL:
323 case QQmlJSGrammar::T_OF:
324 case QQmlJSGrammar::T_ON:
325 case QQmlJSGrammar::T_STATIC:
326 case QQmlJSGrammar::T_TRUE:
327 case QQmlJSGrammar::T_TRY:
328 case QQmlJSGrammar::T_TYPEOF:
329 case QQmlJSGrammar::T_WITHOUTAS:
340 case QQmlJSGrammar::T_PARTIAL_TEMPLATE_MIDDLE:
341 case QQmlJSGrammar::T_MULTILINE_STRING_LITERAL:
342 case QQmlJSGrammar::T_NO_SUBSTITUTION_TEMPLATE:
343 case QQmlJSGrammar::T_STRING_LITERAL:
344 case QQmlJSGrammar::T_PARTIAL_SINGLE_QUOTE_STRING_LITERAL:
345 case QQmlJSGrammar::T_PARTIAL_DOUBLE_QUOTE_STRING_LITERAL:
346 case QQmlJSGrammar::T_PARTIAL_TEMPLATE_HEAD:
357 case QQmlJSGrammar::T_NONE:
358 case QQmlJSGrammar::T_EOL:
359 case QQmlJSGrammar::EOF_SYMBOL:
360 case QQmlJSGrammar::T_ERROR:
361 case QQmlJSGrammar::T_FEED_JS_EXPRESSION:
362 case QQmlJSGrammar::T_FEED_JS_MODULE:
363 case QQmlJSGrammar::T_FEED_JS_SCRIPT:
364 case QQmlJSGrammar::T_FEED_JS_STATEMENT:
365 case QQmlJSGrammar::T_FEED_UI_OBJECT_MEMBER:
366 case QQmlJSGrammar::T_FEED_UI_PROGRAM:
367 case QQmlJSGrammar::REDUCE_HERE:
368 case QQmlJSGrammar::T_FORCE_BLOCK:
369 case QQmlJSGrammar::T_FORCE_DECLARATION:
370 case QQmlJSGrammar::T_FOR_LOOKAHEAD_OK:
388 if (!
value.isEmpty()) {
407 int tokenKind = lexer.
lex();
408 if (tokenKind == QQmlJSGrammar::T_EOL || tokenKind == QQmlJSGrammar::EOF_SYMBOL)
422bool Scanner::State::isMultiline()
const
425 case QQmlJSGrammar::T_PARTIAL_COMMENT:
426 case QQmlJSGrammar::T_PARTIAL_DOUBLE_QUOTE_STRING_LITERAL:
427 case QQmlJSGrammar::T_PARTIAL_SINGLE_QUOTE_STRING_LITERAL:
428 case QQmlJSGrammar::T_PARTIAL_TEMPLATE_HEAD:
429 case QQmlJSGrammar::T_PARTIAL_TEMPLATE_MIDDLE:
437bool Scanner::State::isMultilineComment()
const
439 switch (
state.tokenKind) {
440 case QQmlJSGrammar::T_PARTIAL_COMMENT:
void append(parameter_type t)
QList< Token > operator()(QStringView text, const State &startState)
static bool lexKindIsIdentifier(int kind)
void dump(Sink s, QStringView line=QStringView()) const
static bool lexKindIsQmlReserved(int kind)
static bool lexKindIsComment(int kind)
static bool lexKindIsJSKeyword(int kind)
static bool lexKindIsStringType(int kind)
static bool lexKindIsInvalid(int kind)
void setCode(const QString &code, int lineno, bool qmlMode=true, CodeContinuation codeContinuation=CodeContinuation::Reset)
int tokenStartColumn() const
QString tokenText() const
bool scanRegExp(RegExpBodyPrefix prefix=NoPrefix)
const State & state() const
void setState(const State &state)
QString errorMessage() const
\macro QT_RESTRICTED_CAST_FROM_ASCII
qsizetype size() const
Returns the number of characters in this string.
QString mid(qsizetype position, qsizetype n=-1) const
Returns a string that contains n characters of this string, starting at the specified position index.
bool endsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Returns true if the string ends with s; otherwise returns false.
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
void sinkEscaped(Sink sink, QStringView s, EscapeOptions options)
dumps a string as quoted string (escaping things like quotes or newlines)
void sinkInt(Sink s, T i)
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define qCWarning(category,...)
GLenum GLuint GLenum GLsizei length
GLenum GLuint GLintptr offset
static void addLexToken(QList< Token > &tokens, int tokenKind, QQmlJS::Lexer &lexer, bool ®expMayFollow)