5#ifndef QQMLJSKEYWORDS_P_H
6#define QQMLJSKEYWORDS_P_H
25static inline int classify2(QStringView s,
int parseModeFlags) {
26 if (s[0].unicode() ==
'a') {
27 if (s[1].unicode() ==
's') {
31 else if (s[0].unicode() ==
'd') {
32 if (s[1].unicode() ==
'o') {
36 else if (s[0].unicode() ==
'i') {
37 if (s[1].unicode() ==
'f') {
40 else if (s[1].unicode() ==
'n') {
44 else if (s[0].unicode() ==
'o') {
45 if (s[1].unicode() ==
'n') {
46 return (parseModeFlags & Lexer::QmlMode) ? Lexer::T_ON : Lexer::T_IDENTIFIER;
48 else if (s[1].unicode() ==
'f') {
52 return Lexer::T_IDENTIFIER;
55static inline int classify3(QStringView s,
int parseModeFlags) {
56 Q_UNUSED(parseModeFlags);
57 if (s[0].unicode() ==
'f') {
58 if (s[1].unicode() ==
'o') {
59 if (s[2].unicode() ==
'r') {
64 else if (s[0].unicode() ==
'g') {
65 if (s[1].unicode() ==
'e') {
66 if (s[2].unicode() ==
't') {
71 else if (s[0].unicode() ==
'l') {
72 if (s[1].unicode() ==
'e') {
73 if (s[2].unicode() ==
't') {
74 return int(Lexer::T_LET);
78 else if (s[0].unicode() ==
'n') {
79 if (s[1].unicode() ==
'e') {
80 if (s[2].unicode() ==
'w') {
85 else if (s[0].unicode() ==
's') {
86 if (s[1].unicode() ==
'e') {
87 if (s[2].unicode() ==
't') {
92 else if (s[0].unicode() ==
't') {
93 if (s[1].unicode() ==
'r') {
94 if (s[2].unicode() ==
'y') {
99 else if (s[0].unicode() ==
'v') {
100 if (s[1].unicode() ==
'a') {
101 if (s[2].unicode() ==
'r') {
106 return Lexer::T_IDENTIFIER;
109static inline int classify4(QStringView s,
int parseModeFlags) {
110 Q_UNUSED(parseModeFlags);
111 if (s[0].unicode() ==
'c') {
112 if (s[1].unicode() ==
'a') {
113 if (s[2].unicode() ==
's') {
114 if (s[3].unicode() ==
'e') {
115 return Lexer::T_CASE;
120 else if (s[0].unicode() ==
'e') {
121 if (s[1].unicode() ==
'l') {
122 if (s[2].unicode() ==
's') {
123 if (s[3].unicode() ==
'e') {
124 return Lexer::T_ELSE;
128 else if (s[1].unicode() ==
'n') {
129 if (s[2].unicode() ==
'u') {
130 if (s[3].unicode() ==
'm') {
131 return int(Lexer::T_ENUM);
136 else if (s[0].unicode() ==
'f') {
137 if (s[1].unicode() ==
'r') {
138 if (s[2].unicode() ==
'o') {
139 if (s[3].unicode() ==
'm') {
140 return int(Lexer::T_FROM);
145 else if (s[0].unicode() ==
'n') {
146 if (s[1].unicode() ==
'u') {
147 if (s[2].unicode() ==
'l') {
148 if (s[3].unicode() ==
'l') {
149 return Lexer::T_NULL;
154 else if (s[0].unicode() ==
't') {
155 if (s[1].unicode() ==
'h') {
156 if (s[2].unicode() ==
'i') {
157 if (s[3].unicode() ==
's') {
158 return Lexer::T_THIS;
162 else if (s[1].unicode() ==
'r') {
163 if (s[2].unicode() ==
'u') {
164 if (s[3].unicode() ==
'e') {
165 return Lexer::T_TRUE;
170 else if (s[0].unicode() ==
'v') {
171 if (s[1].unicode() ==
'o') {
172 if (s[2].unicode() ==
'i') {
173 if (s[3].unicode() ==
'd') {
174 return Lexer::T_VOID;
179 else if (s[0].unicode() ==
'w') {
180 if (s[1].unicode() ==
'i') {
181 if (s[2].unicode() ==
't') {
182 if (s[3].unicode() ==
'h') {
183 return Lexer::T_WITH;
188 return Lexer::T_IDENTIFIER;
191static inline int classify5(QStringView s,
int parseModeFlags) {
192 if (s[0].unicode() ==
'b') {
193 if (s[1].unicode() ==
'r') {
194 if (s[2].unicode() ==
'e') {
195 if (s[3].unicode() ==
'a') {
196 if (s[4].unicode() ==
'k') {
197 return Lexer::T_BREAK;
203 else if (s[0].unicode() ==
'c') {
204 if (s[1].unicode() ==
'a') {
205 if (s[2].unicode() ==
't') {
206 if (s[3].unicode() ==
'c') {
207 if (s[4].unicode() ==
'h') {
208 return Lexer::T_CATCH;
213 else if (s[1].unicode() ==
'l') {
214 if (s[2].unicode() ==
'a') {
215 if (s[3].unicode() ==
's') {
216 if (s[4].unicode() ==
's') {
217 return Lexer::T_CLASS;
222 else if (s[1].unicode() ==
'o') {
223 if (s[2].unicode() ==
'n') {
224 if (s[3].unicode() ==
's') {
225 if (s[4].unicode() ==
't') {
226 return int(Lexer::T_CONST);
232 else if (s[0].unicode() ==
'f') {
233 if (s[1].unicode() ==
'a') {
234 if (s[2].unicode() ==
'l') {
235 if (s[3].unicode() ==
's') {
236 if (s[4].unicode() ==
'e') {
237 return Lexer::T_FALSE;
242 else if (s[1].unicode() ==
'i') {
243 if (s[2].unicode() ==
'n') {
244 if (s[3].unicode() ==
'a') {
245 if (s[4].unicode() ==
'l') {
246 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_FINAL) :
int(Lexer::T_IDENTIFIER);
252 else if (s[0].unicode() ==
's') {
253 if (s[1].unicode() ==
'u') {
254 if (s[2].unicode() ==
'p') {
255 if (s[3].unicode() ==
'e') {
256 if (s[4].unicode() ==
'r') {
257 return int(Lexer::T_SUPER);
263 else if (s[0].unicode() ==
't') {
264 if (s[1].unicode() ==
'h') {
265 if (s[2].unicode() ==
'r') {
266 if (s[3].unicode() ==
'o') {
267 if (s[4].unicode() ==
'w') {
268 return Lexer::T_THROW;
274 else if (s[0].unicode() ==
'w') {
275 if (s[1].unicode() ==
'h') {
276 if (s[2].unicode() ==
'i') {
277 if (s[3].unicode() ==
'l') {
278 if (s[4].unicode() ==
'e') {
279 return Lexer::T_WHILE;
285 else if (s[0].unicode() ==
'y') {
286 if (s[1].unicode() ==
'i') {
287 if (s[2].unicode() ==
'e') {
288 if (s[3].unicode() ==
'l') {
289 if (s[4].unicode() ==
'd') {
290 return (parseModeFlags & Lexer::YieldIsKeyword) ? Lexer::T_YIELD : Lexer::T_IDENTIFIER;
296 return Lexer::T_IDENTIFIER;
299static inline int classify6(QStringView s,
int parseModeFlags) {
300 if (s[0].unicode() ==
'd') {
301 if (s[1].unicode() ==
'e') {
302 if (s[2].unicode() ==
'l') {
303 if (s[3].unicode() ==
'e') {
304 if (s[4].unicode() ==
't') {
305 if (s[5].unicode() ==
'e') {
306 return Lexer::T_DELETE;
313 else if (s[0].unicode() ==
'e') {
314 if (s[1].unicode() ==
'x') {
315 if (s[2].unicode() ==
'p') {
316 if (s[3].unicode() ==
'o') {
317 if (s[4].unicode() ==
'r') {
318 if (s[5].unicode() ==
't') {
319 return Lexer::T_EXPORT;
326 else if (s[0].unicode() ==
'i') {
327 if (s[1].unicode() ==
'm') {
328 if (s[2].unicode() ==
'p') {
329 if (s[3].unicode() ==
'o') {
330 if (s[4].unicode() ==
'r') {
331 if (s[5].unicode() ==
't') {
332 return Lexer::T_IMPORT;
339 else if (s[0].unicode() ==
'n') {
340 if (s[1].unicode() ==
'a') {
341 if (s[2].unicode() ==
't') {
342 if (s[3].unicode() ==
'i') {
343 if (s[4].unicode() ==
'v') {
344 if (s[5].unicode() ==
'e') {
345 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_NATIVE) :
int(Lexer::T_IDENTIFIER);
352 else if (s[0].unicode() ==
'p') {
353 if (s[1].unicode() ==
'u') {
354 if (s[2].unicode() ==
'b') {
355 if (s[3].unicode() ==
'l') {
356 if (s[4].unicode() ==
'i') {
357 if (s[5].unicode() ==
'c') {
358 return (parseModeFlags & Lexer::QmlMode) ? Lexer::T_PUBLIC : Lexer::T_IDENTIFIER;
364 else if (s[1].unicode() ==
'r') {
365 if (s[2].unicode() ==
'a') {
366 if (s[3].unicode() ==
'g') {
367 if (s[4].unicode() ==
'm') {
368 if (s[5].unicode() ==
'a') {
369 return (parseModeFlags & Lexer::QmlMode) ? Lexer::T_PRAGMA : Lexer::T_IDENTIFIER;
376 else if (s[0].unicode() ==
'r') {
377 if (s[1].unicode() ==
'e') {
378 if (s[2].unicode() ==
't') {
379 if (s[3].unicode() ==
'u') {
380 if (s[4].unicode() ==
'r') {
381 if (s[5].unicode() ==
'n') {
382 return Lexer::T_RETURN;
389 else if (s[0].unicode() ==
's') {
390 if ((parseModeFlags & Lexer::QmlMode) && s[1].unicode() ==
'i') {
391 if (s[2].unicode() ==
'g') {
392 if (s[3].unicode() ==
'n') {
393 if (s[4].unicode() ==
'a') {
394 if (s[5].unicode() ==
'l') {
395 return Lexer::T_SIGNAL;
401 else if (s[1].unicode() ==
't') {
402 if (s[2].unicode() ==
'a') {
403 if (s[3].unicode() ==
't') {
404 if (s[4].unicode() ==
'i') {
405 if (s[5].unicode() ==
'c') {
406 return (parseModeFlags & Lexer::StaticIsKeyword) ?
int(Lexer::T_STATIC) :
int(Lexer::T_IDENTIFIER);
412 else if (s[1].unicode() ==
'w') {
413 if (s[2].unicode() ==
'i') {
414 if (s[3].unicode() ==
't') {
415 if (s[4].unicode() ==
'c') {
416 if (s[5].unicode() ==
'h') {
417 return Lexer::T_SWITCH;
424 else if (s[0].unicode() ==
't') {
425 if (s[1].unicode() ==
'h') {
426 if (s[2].unicode() ==
'r') {
427 if (s[3].unicode() ==
'o') {
428 if (s[4].unicode() ==
'w') {
429 if (s[5].unicode() ==
's') {
430 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_THROWS) :
int(Lexer::T_IDENTIFIER);
436 else if (s[1].unicode() ==
'y') {
437 if (s[2].unicode() ==
'p') {
438 if (s[3].unicode() ==
'e') {
439 if (s[4].unicode() ==
'o') {
440 if (s[5].unicode() ==
'f') {
441 return Lexer::T_TYPEOF;
448 return Lexer::T_IDENTIFIER;
451static inline int classify7(QStringView s,
int parseModeFlags) {
452 if (s[0].unicode() ==
'd') {
453 if (s[1].unicode() ==
'e') {
454 if (s[2].unicode() ==
'f') {
455 if (s[3].unicode() ==
'a') {
456 if (s[4].unicode() ==
'u') {
457 if (s[5].unicode() ==
'l') {
458 if (s[6].unicode() ==
't') {
459 return Lexer::T_DEFAULT;
467 else if (s[0].unicode() ==
'e') {
468 if (s[1].unicode() ==
'x') {
469 if (s[2].unicode() ==
't') {
470 if (s[3].unicode() ==
'e') {
471 if (s[4].unicode() ==
'n') {
472 if (s[5].unicode() ==
'd') {
473 if (s[6].unicode() ==
's') {
474 return Lexer::T_EXTENDS;
482 else if (s[0].unicode() ==
'f') {
483 if (s[1].unicode() ==
'i') {
484 if (s[2].unicode() ==
'n') {
485 if (s[3].unicode() ==
'a') {
486 if (s[4].unicode() ==
'l') {
487 if (s[5].unicode() ==
'l') {
488 if (s[6].unicode() ==
'y') {
489 return Lexer::T_FINALLY;
497 else if (s[0].unicode() ==
'p') {
498 if (s[1].unicode() ==
'a') {
499 if (s[2].unicode() ==
'c') {
500 if (s[3].unicode() ==
'k') {
501 if (s[4].unicode() ==
'a') {
502 if (s[5].unicode() ==
'g') {
503 if (s[6].unicode() ==
'e') {
504 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_PACKAGE) :
int(Lexer::T_IDENTIFIER);
511 else if (s[1].unicode() ==
'r') {
512 if (s[2].unicode() ==
'i') {
513 if (s[3].unicode() ==
'v') {
514 if (s[4].unicode() ==
'a') {
515 if (s[5].unicode() ==
't') {
516 if (s[6].unicode() ==
'e') {
517 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_PRIVATE) :
int(Lexer::T_IDENTIFIER);
525 return Lexer::T_IDENTIFIER;
528static inline int classify8(QStringView s,
int parseModeFlags) {
529 if (s[0].unicode() ==
'a') {
530 if (s[1].unicode() ==
'b') {
531 if (s[2].unicode() ==
's') {
532 if (s[3].unicode() ==
't') {
533 if (s[4].unicode() ==
'r') {
534 if (s[5].unicode() ==
'a') {
535 if (s[6].unicode() ==
'c') {
536 if (s[7].unicode() ==
't') {
537 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_ABSTRACT) :
int(Lexer::T_IDENTIFIER);
546 else if (s[0].unicode() ==
'c') {
547 if (s[1].unicode() ==
'o') {
548 if (s[2].unicode() ==
'n') {
549 if (s[3].unicode() ==
't') {
550 if (s[4].unicode() ==
'i') {
551 if (s[5].unicode() ==
'n') {
552 if (s[6].unicode() ==
'u') {
553 if (s[7].unicode() ==
'e') {
554 return Lexer::T_CONTINUE;
563 else if (s[0].unicode() ==
'd') {
564 if (s[1].unicode() ==
'e') {
565 if (s[2].unicode() ==
'b') {
566 if (s[3].unicode() ==
'u') {
567 if (s[4].unicode() ==
'g') {
568 if (s[5].unicode() ==
'g') {
569 if (s[6].unicode() ==
'e') {
570 if (s[7].unicode() ==
'r') {
571 return Lexer::T_DEBUGGER;
580 else if (s[0].unicode() ==
'f') {
581 if (s[1].unicode() ==
'u') {
582 if (s[2].unicode() ==
'n') {
583 if (s[3].unicode() ==
'c') {
584 if (s[4].unicode() ==
't') {
585 if (s[5].unicode() ==
'i') {
586 if (s[6].unicode() ==
'o') {
587 if (s[7].unicode() ==
'n') {
588 return Lexer::T_FUNCTION;
597 else if ((parseModeFlags & Lexer::QmlMode) && s[0].unicode() ==
'p') {
598 if (s[1].unicode() ==
'r') {
599 if (s[2].unicode() ==
'o') {
600 if (s[3].unicode() ==
'p') {
601 if (s[4].unicode() ==
'e') {
602 if (s[5].unicode() ==
'r') {
603 if (s[6].unicode() ==
't') {
604 if (s[7].unicode() ==
'y') {
605 return Lexer::T_PROPERTY;
614 else if ((parseModeFlags & Lexer::QmlMode) && s[0].unicode() ==
'r') {
615 if (s[1].unicode() ==
'e') {
616 if (s[2].unicode() ==
'a') {
617 if (s[3].unicode() ==
'd') {
618 if (s[4].unicode() ==
'o') {
619 if (s[5].unicode() ==
'n') {
620 if (s[6].unicode() ==
'l') {
621 if (s[7].unicode() ==
'y') {
622 return Lexer::T_READONLY;
628 }
else if (s[2].unicode() ==
'q') {
629 if (s[3].unicode() ==
'u') {
630 if (s[4].unicode() ==
'i') {
631 if (s[5].unicode() ==
'r') {
632 if (s[6].unicode() ==
'e') {
633 if (s[7].unicode() ==
'd') {
634 return Lexer::T_REQUIRED;
643 else if (s[0].unicode() ==
'v') {
644 if (s[1].unicode() ==
'o') {
645 if (s[2].unicode() ==
'l') {
646 if (s[3].unicode() ==
'a') {
647 if (s[4].unicode() ==
't') {
648 if (s[5].unicode() ==
'i') {
649 if (s[6].unicode() ==
'l') {
650 if (s[7].unicode() ==
'e') {
651 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_VOLATILE) :
int(Lexer::T_IDENTIFIER);
660 return Lexer::T_IDENTIFIER;
663static inline int classify9(QStringView s,
int parseModeFlags) {
664 if (s[0].unicode() ==
'i') {
665 if (s[1].unicode() ==
'n') {
666 if (s[2].unicode() ==
't') {
667 if (s[3].unicode() ==
'e') {
668 if (s[4].unicode() ==
'r') {
669 if (s[5].unicode() ==
'f') {
670 if (s[6].unicode() ==
'a') {
671 if (s[7].unicode() ==
'c') {
672 if (s[8].unicode() ==
'e') {
673 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_INTERFACE) :
int(Lexer::T_IDENTIFIER);
683 else if (s[0].unicode() ==
'p') {
684 if (s[1].unicode() ==
'r') {
685 if (s[2].unicode() ==
'o') {
686 if (s[3].unicode() ==
't') {
687 if (s[4].unicode() ==
'e') {
688 if (s[5].unicode() ==
'c') {
689 if (s[6].unicode() ==
't') {
690 if (s[7].unicode() ==
'e') {
691 if (s[8].unicode() ==
'd') {
692 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_PROTECTED) :
int(Lexer::T_IDENTIFIER);
702 else if (s[0].unicode() ==
't') {
703 if (s[1].unicode() ==
'r') {
704 if (s[2].unicode() ==
'a') {
705 if (s[3].unicode() ==
'n') {
706 if (s[4].unicode() ==
's') {
707 if (s[5].unicode() ==
'i') {
708 if (s[6].unicode() ==
'e') {
709 if (s[7].unicode() ==
'n') {
710 if (s[8].unicode() ==
't') {
711 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_TRANSIENT) :
int(Lexer::T_IDENTIFIER);
721 else if (s[0].unicode() ==
'c') {
722 if (s[1].unicode() ==
'o') {
723 if (s[2].unicode() ==
'm') {
724 if (s[3].unicode() ==
'p') {
725 if (s[4].unicode() ==
'o') {
726 if (s[5].unicode() ==
'n') {
727 if (s[6].unicode() ==
'e') {
728 if (s[7].unicode() ==
'n') {
729 if (s[8].unicode() ==
't') {
730 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_COMPONENT) :
int(Lexer::T_IDENTIFIER);
740 return Lexer::T_IDENTIFIER;
743static inline int classify10(QStringView s,
int parseModeFlags) {
744 if (s[0].unicode() ==
'i') {
745 if (s[1].unicode() ==
'm') {
746 if (s[2].unicode() ==
'p') {
747 if (s[3].unicode() ==
'l') {
748 if (s[4].unicode() ==
'e') {
749 if (s[5].unicode() ==
'm') {
750 if (s[6].unicode() ==
'e') {
751 if (s[7].unicode() ==
'n') {
752 if (s[8].unicode() ==
't') {
753 if (s[9].unicode() ==
's') {
754 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_IMPLEMENTS) :
int(Lexer::T_IDENTIFIER);
764 else if (s[1].unicode() ==
'n') {
765 if (s[2].unicode() ==
's') {
766 if (s[3].unicode() ==
't') {
767 if (s[4].unicode() ==
'a') {
768 if (s[5].unicode() ==
'n') {
769 if (s[6].unicode() ==
'c') {
770 if (s[7].unicode() ==
'e') {
771 if (s[8].unicode() ==
'o') {
772 if (s[9].unicode() ==
'f') {
773 return Lexer::T_INSTANCEOF;
784 return Lexer::T_IDENTIFIER;
787static inline int classify12(QStringView s,
int parseModeFlags) {
788 if (s[0].unicode() ==
's') {
789 if (s[1].unicode() ==
'y') {
790 if (s[2].unicode() ==
'n') {
791 if (s[3].unicode() ==
'c') {
792 if (s[4].unicode() ==
'h') {
793 if (s[5].unicode() ==
'r') {
794 if (s[6].unicode() ==
'o') {
795 if (s[7].unicode() ==
'n') {
796 if (s[8].unicode() ==
'i') {
797 if (s[9].unicode() ==
'z') {
798 if (s[10].unicode() ==
'e') {
799 if (s[11].unicode() ==
'd') {
800 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_SYNCHRONIZED) :
int(Lexer::T_IDENTIFIER);
813 return Lexer::T_IDENTIFIER;
QStringView newStringRef(const QChar *chars, int size)
const MemoryPool * pool() const
void addComment(int pos, int len, int line, int col)
const QString & code() const
QStringView midRef(int position, int size)
QStringView newStringRef(const QString &text)
QList< SourceLocation > comments() const
void setCode(const QString &code)
void setLexer(Lexer *lexer)
void setDirectives(Directives *directives)
Directives * directives() const
static int classify8(QStringView s, int parseModeFlags)
static int classify3(QStringView s, int parseModeFlags)
static int classify2(QStringView s, int parseModeFlags)
static int classify10(QStringView s, int parseModeFlags)
static int classify6(QStringView s, int parseModeFlags)
static int classify12(QStringView s, int parseModeFlags)
static int classify7(QStringView s, int parseModeFlags)
static int classify4(QStringView s, int parseModeFlags)
static int classify9(QStringView s, int parseModeFlags)
static int classify5(QStringView s, int parseModeFlags)
#define QML_PARSER_EXPORT
static int regExpFlagFromChar(const QChar &ch)
static bool isIdentifierPart(uint ch)
static QChar convertHex(QChar c1, QChar c2)
static const int uriTokens[]
static bool isUriToken(int token)
static unsigned char convertHex(ushort c)
static bool isIdentifierStart(uint ch)