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 else if ((parseModeFlags & Lexer::QmlMode) && s[0].unicode() ==
'v') {
526 if (s.slice(1) == QLatin1StringView(
"irtual")) {
527 return Lexer::T_VIRTUAL;
530 return Lexer::T_IDENTIFIER;
533static inline int classify8(QStringView s,
int parseModeFlags) {
534 if (s[0].unicode() ==
'a') {
535 if (s[1].unicode() ==
'b') {
536 if (s[2].unicode() ==
's') {
537 if (s[3].unicode() ==
't') {
538 if (s[4].unicode() ==
'r') {
539 if (s[5].unicode() ==
'a') {
540 if (s[6].unicode() ==
'c') {
541 if (s[7].unicode() ==
't') {
542 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_ABSTRACT) :
int(Lexer::T_IDENTIFIER);
551 else if (s[0].unicode() ==
'c') {
552 if (s[1].unicode() ==
'o') {
553 if (s[2].unicode() ==
'n') {
554 if (s[3].unicode() ==
't') {
555 if (s[4].unicode() ==
'i') {
556 if (s[5].unicode() ==
'n') {
557 if (s[6].unicode() ==
'u') {
558 if (s[7].unicode() ==
'e') {
559 return Lexer::T_CONTINUE;
568 else if (s[0].unicode() ==
'd') {
569 if (s[1].unicode() ==
'e') {
570 if (s[2].unicode() ==
'b') {
571 if (s[3].unicode() ==
'u') {
572 if (s[4].unicode() ==
'g') {
573 if (s[5].unicode() ==
'g') {
574 if (s[6].unicode() ==
'e') {
575 if (s[7].unicode() ==
'r') {
576 return Lexer::T_DEBUGGER;
585 else if (s[0].unicode() ==
'f') {
586 if (s[1].unicode() ==
'u') {
587 if (s[2].unicode() ==
'n') {
588 if (s[3].unicode() ==
'c') {
589 if (s[4].unicode() ==
't') {
590 if (s[5].unicode() ==
'i') {
591 if (s[6].unicode() ==
'o') {
592 if (s[7].unicode() ==
'n') {
593 return Lexer::T_FUNCTION;
602 else if ((parseModeFlags & Lexer::QmlMode) && s[0].unicode() ==
'o') {
603 if (s.slice(1) == QLatin1StringView(
"verride")) {
604 return Lexer::T_OVERRIDE;
607 else if ((parseModeFlags & Lexer::QmlMode) && s[0].unicode() ==
'p') {
608 if (s[1].unicode() ==
'r') {
609 if (s[2].unicode() ==
'o') {
610 if (s[3].unicode() ==
'p') {
611 if (s[4].unicode() ==
'e') {
612 if (s[5].unicode() ==
'r') {
613 if (s[6].unicode() ==
't') {
614 if (s[7].unicode() ==
'y') {
615 return Lexer::T_PROPERTY;
624 else if ((parseModeFlags & Lexer::QmlMode) && s[0].unicode() ==
'r') {
625 if (s[1].unicode() ==
'e') {
626 if (s[2].unicode() ==
'a') {
627 if (s[3].unicode() ==
'd') {
628 if (s[4].unicode() ==
'o') {
629 if (s[5].unicode() ==
'n') {
630 if (s[6].unicode() ==
'l') {
631 if (s[7].unicode() ==
'y') {
632 return Lexer::T_READONLY;
638 }
else if (s[2].unicode() ==
'q') {
639 if (s[3].unicode() ==
'u') {
640 if (s[4].unicode() ==
'i') {
641 if (s[5].unicode() ==
'r') {
642 if (s[6].unicode() ==
'e') {
643 if (s[7].unicode() ==
'd') {
644 return Lexer::T_REQUIRED;
653 else if (s[0].unicode() ==
'v') {
654 if (s[1].unicode() ==
'o') {
655 if (s[2].unicode() ==
'l') {
656 if (s[3].unicode() ==
'a') {
657 if (s[4].unicode() ==
't') {
658 if (s[5].unicode() ==
'i') {
659 if (s[6].unicode() ==
'l') {
660 if (s[7].unicode() ==
'e') {
661 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_VOLATILE) :
int(Lexer::T_IDENTIFIER);
670 return Lexer::T_IDENTIFIER;
673static inline int classify9(QStringView s,
int parseModeFlags) {
674 if (s[0].unicode() ==
'i') {
675 if (s[1].unicode() ==
'n') {
676 if (s[2].unicode() ==
't') {
677 if (s[3].unicode() ==
'e') {
678 if (s[4].unicode() ==
'r') {
679 if (s[5].unicode() ==
'f') {
680 if (s[6].unicode() ==
'a') {
681 if (s[7].unicode() ==
'c') {
682 if (s[8].unicode() ==
'e') {
683 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_INTERFACE) :
int(Lexer::T_IDENTIFIER);
693 else if (s[0].unicode() ==
'p') {
694 if (s[1].unicode() ==
'r') {
695 if (s[2].unicode() ==
'o') {
696 if (s[3].unicode() ==
't') {
697 if (s[4].unicode() ==
'e') {
698 if (s[5].unicode() ==
'c') {
699 if (s[6].unicode() ==
't') {
700 if (s[7].unicode() ==
'e') {
701 if (s[8].unicode() ==
'd') {
702 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_PROTECTED) :
int(Lexer::T_IDENTIFIER);
712 else if (s[0].unicode() ==
't') {
713 if (s[1].unicode() ==
'r') {
714 if (s[2].unicode() ==
'a') {
715 if (s[3].unicode() ==
'n') {
716 if (s[4].unicode() ==
's') {
717 if (s[5].unicode() ==
'i') {
718 if (s[6].unicode() ==
'e') {
719 if (s[7].unicode() ==
'n') {
720 if (s[8].unicode() ==
't') {
721 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_TRANSIENT) :
int(Lexer::T_IDENTIFIER);
731 else if (s[0].unicode() ==
'c') {
732 if (s[1].unicode() ==
'o') {
733 if (s[2].unicode() ==
'm') {
734 if (s[3].unicode() ==
'p') {
735 if (s[4].unicode() ==
'o') {
736 if (s[5].unicode() ==
'n') {
737 if (s[6].unicode() ==
'e') {
738 if (s[7].unicode() ==
'n') {
739 if (s[8].unicode() ==
't') {
740 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_COMPONENT) :
int(Lexer::T_IDENTIFIER);
750 return Lexer::T_IDENTIFIER;
753static inline int classify10(QStringView s,
int parseModeFlags) {
754 if (s[0].unicode() ==
'i') {
755 if (s[1].unicode() ==
'm') {
756 if (s[2].unicode() ==
'p') {
757 if (s[3].unicode() ==
'l') {
758 if (s[4].unicode() ==
'e') {
759 if (s[5].unicode() ==
'm') {
760 if (s[6].unicode() ==
'e') {
761 if (s[7].unicode() ==
'n') {
762 if (s[8].unicode() ==
't') {
763 if (s[9].unicode() ==
's') {
764 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_IMPLEMENTS) :
int(Lexer::T_IDENTIFIER);
774 else if (s[1].unicode() ==
'n') {
775 if (s[2].unicode() ==
's') {
776 if (s[3].unicode() ==
't') {
777 if (s[4].unicode() ==
'a') {
778 if (s[5].unicode() ==
'n') {
779 if (s[6].unicode() ==
'c') {
780 if (s[7].unicode() ==
'e') {
781 if (s[8].unicode() ==
'o') {
782 if (s[9].unicode() ==
'f') {
783 return Lexer::T_INSTANCEOF;
794 return Lexer::T_IDENTIFIER;
797static inline int classify12(QStringView s,
int parseModeFlags) {
798 if (s[0].unicode() ==
's') {
799 if (s[1].unicode() ==
'y') {
800 if (s[2].unicode() ==
'n') {
801 if (s[3].unicode() ==
'c') {
802 if (s[4].unicode() ==
'h') {
803 if (s[5].unicode() ==
'r') {
804 if (s[6].unicode() ==
'o') {
805 if (s[7].unicode() ==
'n') {
806 if (s[8].unicode() ==
'i') {
807 if (s[9].unicode() ==
'z') {
808 if (s[10].unicode() ==
'e') {
809 if (s[11].unicode() ==
'd') {
810 return (parseModeFlags & Lexer::QmlMode) ?
int(Lexer::T_SYNCHRONIZED) :
int(Lexer::T_IDENTIFIER);
823 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)
Combined button and popup list for selecting options.
#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)