1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QQMLJSKEYWORDS_P_H
5#define QQMLJSKEYWORDS_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include "qqmljslexer_p.h"
19
20QT_BEGIN_NAMESPACE
21
22namespace QQmlJS {
23
24static inline int classify2(const QChar *s, int parseModeFlags) {
25 if (s[0].unicode() == 'a') {
26 if (s[1].unicode() == 's') {
27 return Lexer::T_AS;
28 }
29 }
30 else if (s[0].unicode() == 'd') {
31 if (s[1].unicode() == 'o') {
32 return Lexer::T_DO;
33 }
34 }
35 else if (s[0].unicode() == 'i') {
36 if (s[1].unicode() == 'f') {
37 return Lexer::T_IF;
38 }
39 else if (s[1].unicode() == 'n') {
40 return Lexer::T_IN;
41 }
42 }
43 else if (s[0].unicode() == 'o') {
44 if (s[1].unicode() == 'n') {
45 return (parseModeFlags & Lexer::QmlMode) ? Lexer::T_ON : Lexer::T_IDENTIFIER;
46 }
47 else if (s[1].unicode() == 'f') {
48 return Lexer::T_OF;
49 }
50 }
51 return Lexer::T_IDENTIFIER;
52}
53
54static inline int classify3(const QChar *s, int parseModeFlags) {
55 if (s[0].unicode() == 'f') {
56 if (s[1].unicode() == 'o') {
57 if (s[2].unicode() == 'r') {
58 return Lexer::T_FOR;
59 }
60 }
61 }
62 else if (s[0].unicode() == 'g') {
63 if (s[1].unicode() == 'e') {
64 if (s[2].unicode() == 't') {
65 return Lexer::T_GET;
66 }
67 }
68 }
69 else if (s[0].unicode() == 'i') {
70 if (s[1].unicode() == 'n') {
71 if (s[2].unicode() == 't') {
72 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_INT) : int(Lexer::T_IDENTIFIER);
73 }
74 }
75 }
76 else if (s[0].unicode() == 'l') {
77 if (s[1].unicode() == 'e') {
78 if (s[2].unicode() == 't') {
79 return int(Lexer::T_LET);
80 }
81 }
82 }
83 else if (s[0].unicode() == 'n') {
84 if (s[1].unicode() == 'e') {
85 if (s[2].unicode() == 'w') {
86 return Lexer::T_NEW;
87 }
88 }
89 }
90 else if (s[0].unicode() == 's') {
91 if (s[1].unicode() == 'e') {
92 if (s[2].unicode() == 't') {
93 return Lexer::T_SET;
94 }
95 }
96 }
97 else if (s[0].unicode() == 't') {
98 if (s[1].unicode() == 'r') {
99 if (s[2].unicode() == 'y') {
100 return Lexer::T_TRY;
101 }
102 }
103 }
104 else if (s[0].unicode() == 'v') {
105 if (s[1].unicode() == 'a') {
106 if (s[2].unicode() == 'r') {
107 return Lexer::T_VAR;
108 }
109 }
110 }
111 return Lexer::T_IDENTIFIER;
112}
113
114static inline int classify4(const QChar *s, int parseModeFlags) {
115 if (s[0].unicode() == 'b') {
116 if (s[1].unicode() == 'y') {
117 if (s[2].unicode() == 't') {
118 if (s[3].unicode() == 'e') {
119 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_BYTE) : int(Lexer::T_IDENTIFIER);
120 }
121 }
122 }
123 }
124 else if (s[0].unicode() == 'c') {
125 if (s[1].unicode() == 'a') {
126 if (s[2].unicode() == 's') {
127 if (s[3].unicode() == 'e') {
128 return Lexer::T_CASE;
129 }
130 }
131 }
132 else if (s[1].unicode() == 'h') {
133 if (s[2].unicode() == 'a') {
134 if (s[3].unicode() == 'r') {
135 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_CHAR) : int(Lexer::T_IDENTIFIER);
136 }
137 }
138 }
139 }
140 else if (s[0].unicode() == 'e') {
141 if (s[1].unicode() == 'l') {
142 if (s[2].unicode() == 's') {
143 if (s[3].unicode() == 'e') {
144 return Lexer::T_ELSE;
145 }
146 }
147 }
148 else if (s[1].unicode() == 'n') {
149 if (s[2].unicode() == 'u') {
150 if (s[3].unicode() == 'm') {
151 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_ENUM) : int(Lexer::T_RESERVED_WORD);
152 }
153 }
154 }
155 }
156 else if (s[0].unicode() == 'f') {
157 if (s[1].unicode() == 'r') {
158 if (s[2].unicode() == 'o') {
159 if (s[3].unicode() == 'm') {
160 return int(Lexer::T_FROM);
161 }
162 }
163 }
164 }
165 else if (s[0].unicode() == 'g') {
166 if (s[1].unicode() == 'o') {
167 if (s[2].unicode() == 't') {
168 if (s[3].unicode() == 'o') {
169 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_GOTO) : int(Lexer::T_IDENTIFIER);
170 }
171 }
172 }
173 }
174 else if (s[0].unicode() == 'l') {
175 if (s[1].unicode() == 'o') {
176 if (s[2].unicode() == 'n') {
177 if (s[3].unicode() == 'g') {
178 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_LONG) : int(Lexer::T_IDENTIFIER);
179 }
180 }
181 }
182 }
183 else if (s[0].unicode() == 'n') {
184 if (s[1].unicode() == 'u') {
185 if (s[2].unicode() == 'l') {
186 if (s[3].unicode() == 'l') {
187 return Lexer::T_NULL;
188 }
189 }
190 }
191 }
192 else if (s[0].unicode() == 't') {
193 if (s[1].unicode() == 'h') {
194 if (s[2].unicode() == 'i') {
195 if (s[3].unicode() == 's') {
196 return Lexer::T_THIS;
197 }
198 }
199 }
200 else if (s[1].unicode() == 'r') {
201 if (s[2].unicode() == 'u') {
202 if (s[3].unicode() == 'e') {
203 return Lexer::T_TRUE;
204 }
205 }
206 }
207 }
208 else if (s[0].unicode() == 'v') {
209 if (s[1].unicode() == 'o') {
210 if (s[2].unicode() == 'i') {
211 if (s[3].unicode() == 'd') {
212 return Lexer::T_VOID;
213 }
214 }
215 }
216 }
217 else if (s[0].unicode() == 'w') {
218 if (s[1].unicode() == 'i') {
219 if (s[2].unicode() == 't') {
220 if (s[3].unicode() == 'h') {
221 return Lexer::T_WITH;
222 }
223 }
224 }
225 }
226 return Lexer::T_IDENTIFIER;
227}
228
229static inline int classify5(const QChar *s, int parseModeFlags) {
230 if (s[0].unicode() == 'b') {
231 if (s[1].unicode() == 'r') {
232 if (s[2].unicode() == 'e') {
233 if (s[3].unicode() == 'a') {
234 if (s[4].unicode() == 'k') {
235 return Lexer::T_BREAK;
236 }
237 }
238 }
239 }
240 }
241 else if (s[0].unicode() == 'c') {
242 if (s[1].unicode() == 'a') {
243 if (s[2].unicode() == 't') {
244 if (s[3].unicode() == 'c') {
245 if (s[4].unicode() == 'h') {
246 return Lexer::T_CATCH;
247 }
248 }
249 }
250 }
251 else if (s[1].unicode() == 'l') {
252 if (s[2].unicode() == 'a') {
253 if (s[3].unicode() == 's') {
254 if (s[4].unicode() == 's') {
255 return Lexer::T_CLASS;
256 }
257 }
258 }
259 }
260 else if (s[1].unicode() == 'o') {
261 if (s[2].unicode() == 'n') {
262 if (s[3].unicode() == 's') {
263 if (s[4].unicode() == 't') {
264 return int(Lexer::T_CONST);
265 }
266 }
267 }
268 }
269 }
270 else if (s[0].unicode() == 'f') {
271 if (s[1].unicode() == 'a') {
272 if (s[2].unicode() == 'l') {
273 if (s[3].unicode() == 's') {
274 if (s[4].unicode() == 'e') {
275 return Lexer::T_FALSE;
276 }
277 }
278 }
279 }
280 else if (s[1].unicode() == 'i') {
281 if (s[2].unicode() == 'n') {
282 if (s[3].unicode() == 'a') {
283 if (s[4].unicode() == 'l') {
284 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_FINAL) : int(Lexer::T_IDENTIFIER);
285 }
286 }
287 }
288 }
289 else if (s[1].unicode() == 'l') {
290 if (s[2].unicode() == 'o') {
291 if (s[3].unicode() == 'a') {
292 if (s[4].unicode() == 't') {
293 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_FLOAT) : int(Lexer::T_IDENTIFIER);
294 }
295 }
296 }
297 }
298 }
299 else if (s[0].unicode() == 's') {
300 if (s[1].unicode() == 'h') {
301 if (s[2].unicode() == 'o') {
302 if (s[3].unicode() == 'r') {
303 if (s[4].unicode() == 't') {
304 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_SHORT) : int(Lexer::T_IDENTIFIER);
305 }
306 }
307 }
308 }
309 else if (s[1].unicode() == 'u') {
310 if (s[2].unicode() == 'p') {
311 if (s[3].unicode() == 'e') {
312 if (s[4].unicode() == 'r') {
313 return int(Lexer::T_SUPER);
314 }
315 }
316 }
317 }
318 }
319 else if (s[0].unicode() == 't') {
320 if (s[1].unicode() == 'h') {
321 if (s[2].unicode() == 'r') {
322 if (s[3].unicode() == 'o') {
323 if (s[4].unicode() == 'w') {
324 return Lexer::T_THROW;
325 }
326 }
327 }
328 }
329 }
330 else if (s[0].unicode() == 'w') {
331 if (s[1].unicode() == 'h') {
332 if (s[2].unicode() == 'i') {
333 if (s[3].unicode() == 'l') {
334 if (s[4].unicode() == 'e') {
335 return Lexer::T_WHILE;
336 }
337 }
338 }
339 }
340 }
341 else if (s[0].unicode() == 'y') {
342 if (s[1].unicode() == 'i') {
343 if (s[2].unicode() == 'e') {
344 if (s[3].unicode() == 'l') {
345 if (s[4].unicode() == 'd') {
346 return (parseModeFlags & Lexer::YieldIsKeyword) ? Lexer::T_YIELD : Lexer::T_IDENTIFIER;
347 }
348 }
349 }
350 }
351 }
352 return Lexer::T_IDENTIFIER;
353}
354
355static inline int classify6(const QChar *s, int parseModeFlags) {
356 if (s[0].unicode() == 'd') {
357 if (s[1].unicode() == 'e') {
358 if (s[2].unicode() == 'l') {
359 if (s[3].unicode() == 'e') {
360 if (s[4].unicode() == 't') {
361 if (s[5].unicode() == 'e') {
362 return Lexer::T_DELETE;
363 }
364 }
365 }
366 }
367 }
368 else if (s[1].unicode() == 'o') {
369 if (s[2].unicode() == 'u') {
370 if (s[3].unicode() == 'b') {
371 if (s[4].unicode() == 'l') {
372 if (s[5].unicode() == 'e') {
373 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_DOUBLE) : int(Lexer::T_IDENTIFIER);
374 }
375 }
376 }
377 }
378 }
379 }
380 else if (s[0].unicode() == 'e') {
381 if (s[1].unicode() == 'x') {
382 if (s[2].unicode() == 'p') {
383 if (s[3].unicode() == 'o') {
384 if (s[4].unicode() == 'r') {
385 if (s[5].unicode() == 't') {
386 return Lexer::T_EXPORT;
387 }
388 }
389 }
390 }
391 }
392 }
393 else if (s[0].unicode() == 'i') {
394 if (s[1].unicode() == 'm') {
395 if (s[2].unicode() == 'p') {
396 if (s[3].unicode() == 'o') {
397 if (s[4].unicode() == 'r') {
398 if (s[5].unicode() == 't') {
399 return Lexer::T_IMPORT;
400 }
401 }
402 }
403 }
404 }
405 }
406 else if (s[0].unicode() == 'n') {
407 if (s[1].unicode() == 'a') {
408 if (s[2].unicode() == 't') {
409 if (s[3].unicode() == 'i') {
410 if (s[4].unicode() == 'v') {
411 if (s[5].unicode() == 'e') {
412 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_NATIVE) : int(Lexer::T_IDENTIFIER);
413 }
414 }
415 }
416 }
417 }
418 }
419 else if (s[0].unicode() == 'p') {
420 if (s[1].unicode() == 'u') {
421 if (s[2].unicode() == 'b') {
422 if (s[3].unicode() == 'l') {
423 if (s[4].unicode() == 'i') {
424 if (s[5].unicode() == 'c') {
425 return (parseModeFlags & Lexer::QmlMode) ? Lexer::T_PUBLIC : Lexer::T_IDENTIFIER;
426 }
427 }
428 }
429 }
430 }
431 else if (s[1].unicode() == 'r') {
432 if (s[2].unicode() == 'a') {
433 if (s[3].unicode() == 'g') {
434 if (s[4].unicode() == 'm') {
435 if (s[5].unicode() == 'a') {
436 return (parseModeFlags & Lexer::QmlMode) ? Lexer::T_PRAGMA : Lexer::T_IDENTIFIER;
437 }
438 }
439 }
440 }
441 }
442 }
443 else if (s[0].unicode() == 'r') {
444 if (s[1].unicode() == 'e') {
445 if (s[2].unicode() == 't') {
446 if (s[3].unicode() == 'u') {
447 if (s[4].unicode() == 'r') {
448 if (s[5].unicode() == 'n') {
449 return Lexer::T_RETURN;
450 }
451 }
452 }
453 }
454 }
455 }
456 else if (s[0].unicode() == 's') {
457 if ((parseModeFlags & Lexer::QmlMode) && s[1].unicode() == 'i') {
458 if (s[2].unicode() == 'g') {
459 if (s[3].unicode() == 'n') {
460 if (s[4].unicode() == 'a') {
461 if (s[5].unicode() == 'l') {
462 return Lexer::T_SIGNAL;
463 }
464 }
465 }
466 }
467 }
468 else if (s[1].unicode() == 't') {
469 if (s[2].unicode() == 'a') {
470 if (s[3].unicode() == 't') {
471 if (s[4].unicode() == 'i') {
472 if (s[5].unicode() == 'c') {
473 return (parseModeFlags & Lexer::StaticIsKeyword) ? int(Lexer::T_STATIC) : int(Lexer::T_IDENTIFIER);
474 }
475 }
476 }
477 }
478 }
479 else if (s[1].unicode() == 'w') {
480 if (s[2].unicode() == 'i') {
481 if (s[3].unicode() == 't') {
482 if (s[4].unicode() == 'c') {
483 if (s[5].unicode() == 'h') {
484 return Lexer::T_SWITCH;
485 }
486 }
487 }
488 }
489 }
490 }
491 else if (s[0].unicode() == 't') {
492 if (s[1].unicode() == 'h') {
493 if (s[2].unicode() == 'r') {
494 if (s[3].unicode() == 'o') {
495 if (s[4].unicode() == 'w') {
496 if (s[5].unicode() == 's') {
497 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_THROWS) : int(Lexer::T_IDENTIFIER);
498 }
499 }
500 }
501 }
502 }
503 else if (s[1].unicode() == 'y') {
504 if (s[2].unicode() == 'p') {
505 if (s[3].unicode() == 'e') {
506 if (s[4].unicode() == 'o') {
507 if (s[5].unicode() == 'f') {
508 return Lexer::T_TYPEOF;
509 }
510 }
511 }
512 }
513 }
514 }
515 return Lexer::T_IDENTIFIER;
516}
517
518static inline int classify7(const QChar *s, int parseModeFlags) {
519 if (s[0].unicode() == 'b') {
520 if (s[1].unicode() == 'o') {
521 if (s[2].unicode() == 'o') {
522 if (s[3].unicode() == 'l') {
523 if (s[4].unicode() == 'e') {
524 if (s[5].unicode() == 'a') {
525 if (s[6].unicode() == 'n') {
526 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_BOOLEAN) : int(Lexer::T_IDENTIFIER);
527 }
528 }
529 }
530 }
531 }
532 }
533 }
534 else if (s[0].unicode() == 'd') {
535 if (s[1].unicode() == 'e') {
536 if (s[2].unicode() == 'f') {
537 if (s[3].unicode() == 'a') {
538 if (s[4].unicode() == 'u') {
539 if (s[5].unicode() == 'l') {
540 if (s[6].unicode() == 't') {
541 return Lexer::T_DEFAULT;
542 }
543 }
544 }
545 }
546 }
547 }
548 }
549 else if (s[0].unicode() == 'e') {
550 if (s[1].unicode() == 'x') {
551 if (s[2].unicode() == 't') {
552 if (s[3].unicode() == 'e') {
553 if (s[4].unicode() == 'n') {
554 if (s[5].unicode() == 'd') {
555 if (s[6].unicode() == 's') {
556 return Lexer::T_EXTENDS;
557 }
558 }
559 }
560 }
561 }
562 }
563 }
564 else if (s[0].unicode() == 'f') {
565 if (s[1].unicode() == 'i') {
566 if (s[2].unicode() == 'n') {
567 if (s[3].unicode() == 'a') {
568 if (s[4].unicode() == 'l') {
569 if (s[5].unicode() == 'l') {
570 if (s[6].unicode() == 'y') {
571 return Lexer::T_FINALLY;
572 }
573 }
574 }
575 }
576 }
577 }
578 }
579 else if (s[0].unicode() == 'p') {
580 if (s[1].unicode() == 'a') {
581 if (s[2].unicode() == 'c') {
582 if (s[3].unicode() == 'k') {
583 if (s[4].unicode() == 'a') {
584 if (s[5].unicode() == 'g') {
585 if (s[6].unicode() == 'e') {
586 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_PACKAGE) : int(Lexer::T_IDENTIFIER);
587 }
588 }
589 }
590 }
591 }
592 }
593 else if (s[1].unicode() == 'r') {
594 if (s[2].unicode() == 'i') {
595 if (s[3].unicode() == 'v') {
596 if (s[4].unicode() == 'a') {
597 if (s[5].unicode() == 't') {
598 if (s[6].unicode() == 'e') {
599 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_PRIVATE) : int(Lexer::T_IDENTIFIER);
600 }
601 }
602 }
603 }
604 }
605 }
606 }
607 return Lexer::T_IDENTIFIER;
608}
609
610static inline int classify8(const QChar *s, int parseModeFlags) {
611 if (s[0].unicode() == 'a') {
612 if (s[1].unicode() == 'b') {
613 if (s[2].unicode() == 's') {
614 if (s[3].unicode() == 't') {
615 if (s[4].unicode() == 'r') {
616 if (s[5].unicode() == 'a') {
617 if (s[6].unicode() == 'c') {
618 if (s[7].unicode() == 't') {
619 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_ABSTRACT) : int(Lexer::T_IDENTIFIER);
620 }
621 }
622 }
623 }
624 }
625 }
626 }
627 }
628 else if (s[0].unicode() == 'c') {
629 if (s[1].unicode() == 'o') {
630 if (s[2].unicode() == 'n') {
631 if (s[3].unicode() == 't') {
632 if (s[4].unicode() == 'i') {
633 if (s[5].unicode() == 'n') {
634 if (s[6].unicode() == 'u') {
635 if (s[7].unicode() == 'e') {
636 return Lexer::T_CONTINUE;
637 }
638 }
639 }
640 }
641 }
642 }
643 }
644 }
645 else if (s[0].unicode() == 'd') {
646 if (s[1].unicode() == 'e') {
647 if (s[2].unicode() == 'b') {
648 if (s[3].unicode() == 'u') {
649 if (s[4].unicode() == 'g') {
650 if (s[5].unicode() == 'g') {
651 if (s[6].unicode() == 'e') {
652 if (s[7].unicode() == 'r') {
653 return Lexer::T_DEBUGGER;
654 }
655 }
656 }
657 }
658 }
659 }
660 }
661 }
662 else if (s[0].unicode() == 'f') {
663 if (s[1].unicode() == 'u') {
664 if (s[2].unicode() == 'n') {
665 if (s[3].unicode() == 'c') {
666 if (s[4].unicode() == 't') {
667 if (s[5].unicode() == 'i') {
668 if (s[6].unicode() == 'o') {
669 if (s[7].unicode() == 'n') {
670 return Lexer::T_FUNCTION;
671 }
672 }
673 }
674 }
675 }
676 }
677 }
678 }
679 else if ((parseModeFlags & Lexer::QmlMode) && s[0].unicode() == 'p') {
680 if (s[1].unicode() == 'r') {
681 if (s[2].unicode() == 'o') {
682 if (s[3].unicode() == 'p') {
683 if (s[4].unicode() == 'e') {
684 if (s[5].unicode() == 'r') {
685 if (s[6].unicode() == 't') {
686 if (s[7].unicode() == 'y') {
687 return Lexer::T_PROPERTY;
688 }
689 }
690 }
691 }
692 }
693 }
694 }
695 }
696 else if ((parseModeFlags & Lexer::QmlMode) && s[0].unicode() == 'r') {
697 if (s[1].unicode() == 'e') {
698 if (s[2].unicode() == 'a') {
699 if (s[3].unicode() == 'd') {
700 if (s[4].unicode() == 'o') {
701 if (s[5].unicode() == 'n') {
702 if (s[6].unicode() == 'l') {
703 if (s[7].unicode() == 'y') {
704 return Lexer::T_READONLY;
705 }
706 }
707 }
708 }
709 }
710 } else if (s[2].unicode() == 'q') {
711 if (s[3].unicode() == 'u') {
712 if (s[4].unicode() == 'i') {
713 if (s[5].unicode() == 'r') {
714 if (s[6].unicode() == 'e') {
715 if (s[7].unicode() == 'd') {
716 return Lexer::T_REQUIRED;
717 }
718 }
719 }
720 }
721 }
722 }
723 }
724 }
725 else if (s[0].unicode() == 'v') {
726 if (s[1].unicode() == 'o') {
727 if (s[2].unicode() == 'l') {
728 if (s[3].unicode() == 'a') {
729 if (s[4].unicode() == 't') {
730 if (s[5].unicode() == 'i') {
731 if (s[6].unicode() == 'l') {
732 if (s[7].unicode() == 'e') {
733 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_VOLATILE) : int(Lexer::T_IDENTIFIER);
734 }
735 }
736 }
737 }
738 }
739 }
740 }
741 }
742 return Lexer::T_IDENTIFIER;
743}
744
745static inline int classify9(const QChar *s, int parseModeFlags) {
746 if (s[0].unicode() == 'i') {
747 if (s[1].unicode() == 'n') {
748 if (s[2].unicode() == 't') {
749 if (s[3].unicode() == 'e') {
750 if (s[4].unicode() == 'r') {
751 if (s[5].unicode() == 'f') {
752 if (s[6].unicode() == 'a') {
753 if (s[7].unicode() == 'c') {
754 if (s[8].unicode() == 'e') {
755 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_INTERFACE) : int(Lexer::T_IDENTIFIER);
756 }
757 }
758 }
759 }
760 }
761 }
762 }
763 }
764 }
765 else if (s[0].unicode() == 'p') {
766 if (s[1].unicode() == 'r') {
767 if (s[2].unicode() == 'o') {
768 if (s[3].unicode() == 't') {
769 if (s[4].unicode() == 'e') {
770 if (s[5].unicode() == 'c') {
771 if (s[6].unicode() == 't') {
772 if (s[7].unicode() == 'e') {
773 if (s[8].unicode() == 'd') {
774 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_PROTECTED) : int(Lexer::T_IDENTIFIER);
775 }
776 }
777 }
778 }
779 }
780 }
781 }
782 }
783 }
784 else if (s[0].unicode() == 't') {
785 if (s[1].unicode() == 'r') {
786 if (s[2].unicode() == 'a') {
787 if (s[3].unicode() == 'n') {
788 if (s[4].unicode() == 's') {
789 if (s[5].unicode() == 'i') {
790 if (s[6].unicode() == 'e') {
791 if (s[7].unicode() == 'n') {
792 if (s[8].unicode() == 't') {
793 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_TRANSIENT) : int(Lexer::T_IDENTIFIER);
794 }
795 }
796 }
797 }
798 }
799 }
800 }
801 }
802 }
803 else if (s[0].unicode() == 'c') {
804 if (s[1].unicode() == 'o') {
805 if (s[2].unicode() == 'm') {
806 if (s[3].unicode() == 'p') {
807 if (s[4].unicode() == 'o') {
808 if (s[5].unicode() == 'n') {
809 if (s[6].unicode() == 'e') {
810 if (s[7].unicode() == 'n') {
811 if (s[8].unicode() == 't') {
812 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_COMPONENT) : int(Lexer::T_IDENTIFIER);
813 }
814 }
815 }
816 }
817 }
818 }
819 }
820 }
821 }
822 return Lexer::T_IDENTIFIER;
823}
824
825static inline int classify10(const QChar *s, int parseModeFlags) {
826 if (s[0].unicode() == 'i') {
827 if (s[1].unicode() == 'm') {
828 if (s[2].unicode() == 'p') {
829 if (s[3].unicode() == 'l') {
830 if (s[4].unicode() == 'e') {
831 if (s[5].unicode() == 'm') {
832 if (s[6].unicode() == 'e') {
833 if (s[7].unicode() == 'n') {
834 if (s[8].unicode() == 't') {
835 if (s[9].unicode() == 's') {
836 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_IMPLEMENTS) : int(Lexer::T_IDENTIFIER);
837 }
838 }
839 }
840 }
841 }
842 }
843 }
844 }
845 }
846 else if (s[1].unicode() == 'n') {
847 if (s[2].unicode() == 's') {
848 if (s[3].unicode() == 't') {
849 if (s[4].unicode() == 'a') {
850 if (s[5].unicode() == 'n') {
851 if (s[6].unicode() == 'c') {
852 if (s[7].unicode() == 'e') {
853 if (s[8].unicode() == 'o') {
854 if (s[9].unicode() == 'f') {
855 return Lexer::T_INSTANCEOF;
856 }
857 }
858 }
859 }
860 }
861 }
862 }
863 }
864 }
865 }
866 return Lexer::T_IDENTIFIER;
867}
868
869static inline int classify12(const QChar *s, int parseModeFlags) {
870 if (s[0].unicode() == 's') {
871 if (s[1].unicode() == 'y') {
872 if (s[2].unicode() == 'n') {
873 if (s[3].unicode() == 'c') {
874 if (s[4].unicode() == 'h') {
875 if (s[5].unicode() == 'r') {
876 if (s[6].unicode() == 'o') {
877 if (s[7].unicode() == 'n') {
878 if (s[8].unicode() == 'i') {
879 if (s[9].unicode() == 'z') {
880 if (s[10].unicode() == 'e') {
881 if (s[11].unicode() == 'd') {
882 return (parseModeFlags & Lexer::QmlMode) ? int(Lexer::T_SYNCHRONIZED) : int(Lexer::T_IDENTIFIER);
883 }
884 }
885 }
886 }
887 }
888 }
889 }
890 }
891 }
892 }
893 }
894 }
895 return Lexer::T_IDENTIFIER;
896}
897
898int Lexer::classify(const QChar *s, int n, int parseModeFlags) {
899 switch (n) {
900 case 2: return classify2(s, parseModeFlags);
901 case 3: return classify3(s, parseModeFlags);
902 case 4: return classify4(s, parseModeFlags);
903 case 5: return classify5(s, parseModeFlags);
904 case 6: return classify6(s, parseModeFlags);
905 case 7: return classify7(s, parseModeFlags);
906 case 8: return classify8(s, parseModeFlags);
907 case 9: return classify9(s, parseModeFlags);
908 case 10: return classify10(s, parseModeFlags);
909 case 12: return classify12(s, parseModeFlags);
910 default: return Lexer::T_IDENTIFIER;
911 } // switch
912}
913
914} // namespace QQmlJS
915
916QT_END_NAMESPACE
917
918#endif // QQMLJSKEYWORDS_P_H
919

source code of qtdeclarative/src/qml/parser/qqmljskeywords_p.h