syntax: 'meth' -> 'fun', 'attr' -> 'var'
[nit.git] / src / parser / lexer.nit
1 # Lexer and its tokens.
2 # This file was generated by SableCC (http://www.sablecc.org/).
3 package lexer
4
5 import parser_nodes
6
7 redef class Token
8 readable writable var _text: String
9 readable var _filename: String
10 readable var _line: Int
11 readable var _pos: Int
12
13 fun parser_index: Int is abstract
14
15 redef fun to_s: String do
16 return "'{_text}'"
17 end
18 end
19
20 redef class TEol
21 redef fun parser_index: Int
22 do
23 return 0
24 end
25
26 init init_tk(text: String, fname: String, line: Int, pos: Int)
27 do
28 _text = text
29 _filename = fname
30 _line = line
31 _pos = pos
32 end
33 end
34
35 redef class TComment
36 redef fun parser_index: Int
37 do
38 return 1
39 end
40
41 init init_tk(text: String, fname: String, line: Int, pos: Int)
42 do
43 _text = text
44 _filename = fname
45 _line = line
46 _pos = pos
47 end
48 end
49
50 redef class TKwpackage
51 redef fun parser_index: Int
52 do
53 return 2
54 end
55
56 init init_tk(fname: String, line: Int, pos: Int)
57 do
58 _text = once "package"
59 _filename = fname
60 _line = line
61 _pos = pos
62 end
63 end
64
65 redef class TKwimport
66 redef fun parser_index: Int
67 do
68 return 3
69 end
70
71 init init_tk(fname: String, line: Int, pos: Int)
72 do
73 _text = once "import"
74 _filename = fname
75 _line = line
76 _pos = pos
77 end
78 end
79
80 redef class TKwclass
81 redef fun parser_index: Int
82 do
83 return 4
84 end
85
86 init init_tk(fname: String, line: Int, pos: Int)
87 do
88 _text = once "class"
89 _filename = fname
90 _line = line
91 _pos = pos
92 end
93 end
94
95 redef class TKwabstract
96 redef fun parser_index: Int
97 do
98 return 5
99 end
100
101 init init_tk(fname: String, line: Int, pos: Int)
102 do
103 _text = once "abstract"
104 _filename = fname
105 _line = line
106 _pos = pos
107 end
108 end
109
110 redef class TKwinterface
111 redef fun parser_index: Int
112 do
113 return 6
114 end
115
116 init init_tk(fname: String, line: Int, pos: Int)
117 do
118 _text = once "interface"
119 _filename = fname
120 _line = line
121 _pos = pos
122 end
123 end
124
125 redef class TKwuniversal
126 redef fun parser_index: Int
127 do
128 return 7
129 end
130
131 init init_tk(fname: String, line: Int, pos: Int)
132 do
133 _text = once "universal"
134 _filename = fname
135 _line = line
136 _pos = pos
137 end
138 end
139
140 redef class TKwspecial
141 redef fun parser_index: Int
142 do
143 return 8
144 end
145
146 init init_tk(fname: String, line: Int, pos: Int)
147 do
148 _text = once "special"
149 _filename = fname
150 _line = line
151 _pos = pos
152 end
153 end
154
155 redef class TKwend
156 redef fun parser_index: Int
157 do
158 return 9
159 end
160
161 init init_tk(fname: String, line: Int, pos: Int)
162 do
163 _text = once "end"
164 _filename = fname
165 _line = line
166 _pos = pos
167 end
168 end
169
170 redef class TKwmeth
171 redef fun parser_index: Int
172 do
173 return 10
174 end
175
176 init init_tk(text: String, fname: String, line: Int, pos: Int)
177 do
178 _text = text
179 _filename = fname
180 _line = line
181 _pos = pos
182 end
183 end
184
185 redef class TKwtype
186 redef fun parser_index: Int
187 do
188 return 11
189 end
190
191 init init_tk(fname: String, line: Int, pos: Int)
192 do
193 _text = once "type"
194 _filename = fname
195 _line = line
196 _pos = pos
197 end
198 end
199
200 redef class TKwattr
201 redef fun parser_index: Int
202 do
203 return 12
204 end
205
206 init init_tk(fname: String, line: Int, pos: Int)
207 do
208 _text = once "attr"
209 _filename = fname
210 _line = line
211 _pos = pos
212 end
213 end
214
215 redef class TKwinit
216 redef fun parser_index: Int
217 do
218 return 13
219 end
220
221 init init_tk(fname: String, line: Int, pos: Int)
222 do
223 _text = once "init"
224 _filename = fname
225 _line = line
226 _pos = pos
227 end
228 end
229
230 redef class TKwredef
231 redef fun parser_index: Int
232 do
233 return 14
234 end
235
236 init init_tk(fname: String, line: Int, pos: Int)
237 do
238 _text = once "redef"
239 _filename = fname
240 _line = line
241 _pos = pos
242 end
243 end
244
245 redef class TKwis
246 redef fun parser_index: Int
247 do
248 return 15
249 end
250
251 init init_tk(fname: String, line: Int, pos: Int)
252 do
253 _text = once "is"
254 _filename = fname
255 _line = line
256 _pos = pos
257 end
258 end
259
260 redef class TKwdo
261 redef fun parser_index: Int
262 do
263 return 16
264 end
265
266 init init_tk(fname: String, line: Int, pos: Int)
267 do
268 _text = once "do"
269 _filename = fname
270 _line = line
271 _pos = pos
272 end
273 end
274
275 redef class TKwreadable
276 redef fun parser_index: Int
277 do
278 return 17
279 end
280
281 init init_tk(fname: String, line: Int, pos: Int)
282 do
283 _text = once "readable"
284 _filename = fname
285 _line = line
286 _pos = pos
287 end
288 end
289
290 redef class TKwwritable
291 redef fun parser_index: Int
292 do
293 return 18
294 end
295
296 init init_tk(fname: String, line: Int, pos: Int)
297 do
298 _text = once "writable"
299 _filename = fname
300 _line = line
301 _pos = pos
302 end
303 end
304
305 redef class TKwvar
306 redef fun parser_index: Int
307 do
308 return 19
309 end
310
311 init init_tk(fname: String, line: Int, pos: Int)
312 do
313 _text = once "var"
314 _filename = fname
315 _line = line
316 _pos = pos
317 end
318 end
319
320 redef class TKwintern
321 redef fun parser_index: Int
322 do
323 return 20
324 end
325
326 init init_tk(fname: String, line: Int, pos: Int)
327 do
328 _text = once "intern"
329 _filename = fname
330 _line = line
331 _pos = pos
332 end
333 end
334
335 redef class TKwextern
336 redef fun parser_index: Int
337 do
338 return 21
339 end
340
341 init init_tk(fname: String, line: Int, pos: Int)
342 do
343 _text = once "extern"
344 _filename = fname
345 _line = line
346 _pos = pos
347 end
348 end
349
350 redef class TKwprotected
351 redef fun parser_index: Int
352 do
353 return 22
354 end
355
356 init init_tk(fname: String, line: Int, pos: Int)
357 do
358 _text = once "protected"
359 _filename = fname
360 _line = line
361 _pos = pos
362 end
363 end
364
365 redef class TKwprivate
366 redef fun parser_index: Int
367 do
368 return 23
369 end
370
371 init init_tk(fname: String, line: Int, pos: Int)
372 do
373 _text = once "private"
374 _filename = fname
375 _line = line
376 _pos = pos
377 end
378 end
379
380 redef class TKwintrude
381 redef fun parser_index: Int
382 do
383 return 24
384 end
385
386 init init_tk(fname: String, line: Int, pos: Int)
387 do
388 _text = once "intrude"
389 _filename = fname
390 _line = line
391 _pos = pos
392 end
393 end
394
395 redef class TKwif
396 redef fun parser_index: Int
397 do
398 return 25
399 end
400
401 init init_tk(fname: String, line: Int, pos: Int)
402 do
403 _text = once "if"
404 _filename = fname
405 _line = line
406 _pos = pos
407 end
408 end
409
410 redef class TKwthen
411 redef fun parser_index: Int
412 do
413 return 26
414 end
415
416 init init_tk(fname: String, line: Int, pos: Int)
417 do
418 _text = once "then"
419 _filename = fname
420 _line = line
421 _pos = pos
422 end
423 end
424
425 redef class TKwelse
426 redef fun parser_index: Int
427 do
428 return 27
429 end
430
431 init init_tk(fname: String, line: Int, pos: Int)
432 do
433 _text = once "else"
434 _filename = fname
435 _line = line
436 _pos = pos
437 end
438 end
439
440 redef class TKwwhile
441 redef fun parser_index: Int
442 do
443 return 28
444 end
445
446 init init_tk(fname: String, line: Int, pos: Int)
447 do
448 _text = once "while"
449 _filename = fname
450 _line = line
451 _pos = pos
452 end
453 end
454
455 redef class TKwfor
456 redef fun parser_index: Int
457 do
458 return 29
459 end
460
461 init init_tk(fname: String, line: Int, pos: Int)
462 do
463 _text = once "for"
464 _filename = fname
465 _line = line
466 _pos = pos
467 end
468 end
469
470 redef class TKwin
471 redef fun parser_index: Int
472 do
473 return 30
474 end
475
476 init init_tk(fname: String, line: Int, pos: Int)
477 do
478 _text = once "in"
479 _filename = fname
480 _line = line
481 _pos = pos
482 end
483 end
484
485 redef class TKwand
486 redef fun parser_index: Int
487 do
488 return 31
489 end
490
491 init init_tk(fname: String, line: Int, pos: Int)
492 do
493 _text = once "and"
494 _filename = fname
495 _line = line
496 _pos = pos
497 end
498 end
499
500 redef class TKwor
501 redef fun parser_index: Int
502 do
503 return 32
504 end
505
506 init init_tk(fname: String, line: Int, pos: Int)
507 do
508 _text = once "or"
509 _filename = fname
510 _line = line
511 _pos = pos
512 end
513 end
514
515 redef class TKwnot
516 redef fun parser_index: Int
517 do
518 return 33
519 end
520
521 init init_tk(fname: String, line: Int, pos: Int)
522 do
523 _text = once "not"
524 _filename = fname
525 _line = line
526 _pos = pos
527 end
528 end
529
530 redef class TKwreturn
531 redef fun parser_index: Int
532 do
533 return 34
534 end
535
536 init init_tk(fname: String, line: Int, pos: Int)
537 do
538 _text = once "return"
539 _filename = fname
540 _line = line
541 _pos = pos
542 end
543 end
544
545 redef class TKwcontinue
546 redef fun parser_index: Int
547 do
548 return 35
549 end
550
551 init init_tk(fname: String, line: Int, pos: Int)
552 do
553 _text = once "continue"
554 _filename = fname
555 _line = line
556 _pos = pos
557 end
558 end
559
560 redef class TKwbreak
561 redef fun parser_index: Int
562 do
563 return 36
564 end
565
566 init init_tk(fname: String, line: Int, pos: Int)
567 do
568 _text = once "break"
569 _filename = fname
570 _line = line
571 _pos = pos
572 end
573 end
574
575 redef class TKwabort
576 redef fun parser_index: Int
577 do
578 return 37
579 end
580
581 init init_tk(fname: String, line: Int, pos: Int)
582 do
583 _text = once "abort"
584 _filename = fname
585 _line = line
586 _pos = pos
587 end
588 end
589
590 redef class TKwassert
591 redef fun parser_index: Int
592 do
593 return 38
594 end
595
596 init init_tk(fname: String, line: Int, pos: Int)
597 do
598 _text = once "assert"
599 _filename = fname
600 _line = line
601 _pos = pos
602 end
603 end
604
605 redef class TKwnew
606 redef fun parser_index: Int
607 do
608 return 39
609 end
610
611 init init_tk(fname: String, line: Int, pos: Int)
612 do
613 _text = once "new"
614 _filename = fname
615 _line = line
616 _pos = pos
617 end
618 end
619
620 redef class TKwisa
621 redef fun parser_index: Int
622 do
623 return 40
624 end
625
626 init init_tk(fname: String, line: Int, pos: Int)
627 do
628 _text = once "isa"
629 _filename = fname
630 _line = line
631 _pos = pos
632 end
633 end
634
635 redef class TKwonce
636 redef fun parser_index: Int
637 do
638 return 41
639 end
640
641 init init_tk(fname: String, line: Int, pos: Int)
642 do
643 _text = once "once"
644 _filename = fname
645 _line = line
646 _pos = pos
647 end
648 end
649
650 redef class TKwsuper
651 redef fun parser_index: Int
652 do
653 return 42
654 end
655
656 init init_tk(fname: String, line: Int, pos: Int)
657 do
658 _text = once "super"
659 _filename = fname
660 _line = line
661 _pos = pos
662 end
663 end
664
665 redef class TKwself
666 redef fun parser_index: Int
667 do
668 return 43
669 end
670
671 init init_tk(fname: String, line: Int, pos: Int)
672 do
673 _text = once "self"
674 _filename = fname
675 _line = line
676 _pos = pos
677 end
678 end
679
680 redef class TKwtrue
681 redef fun parser_index: Int
682 do
683 return 44
684 end
685
686 init init_tk(fname: String, line: Int, pos: Int)
687 do
688 _text = once "true"
689 _filename = fname
690 _line = line
691 _pos = pos
692 end
693 end
694
695 redef class TKwfalse
696 redef fun parser_index: Int
697 do
698 return 45
699 end
700
701 init init_tk(fname: String, line: Int, pos: Int)
702 do
703 _text = once "false"
704 _filename = fname
705 _line = line
706 _pos = pos
707 end
708 end
709
710 redef class TKwnull
711 redef fun parser_index: Int
712 do
713 return 46
714 end
715
716 init init_tk(fname: String, line: Int, pos: Int)
717 do
718 _text = once "null"
719 _filename = fname
720 _line = line
721 _pos = pos
722 end
723 end
724
725 redef class TKwas
726 redef fun parser_index: Int
727 do
728 return 47
729 end
730
731 init init_tk(fname: String, line: Int, pos: Int)
732 do
733 _text = once "as"
734 _filename = fname
735 _line = line
736 _pos = pos
737 end
738 end
739
740 redef class TKwwith
741 redef fun parser_index: Int
742 do
743 return 48
744 end
745
746 init init_tk(fname: String, line: Int, pos: Int)
747 do
748 _text = once "with"
749 _filename = fname
750 _line = line
751 _pos = pos
752 end
753 end
754
755 redef class TKwnullable
756 redef fun parser_index: Int
757 do
758 return 49
759 end
760
761 init init_tk(fname: String, line: Int, pos: Int)
762 do
763 _text = once "nullable"
764 _filename = fname
765 _line = line
766 _pos = pos
767 end
768 end
769
770 redef class TKwisset
771 redef fun parser_index: Int
772 do
773 return 50
774 end
775
776 init init_tk(fname: String, line: Int, pos: Int)
777 do
778 _text = once "isset"
779 _filename = fname
780 _line = line
781 _pos = pos
782 end
783 end
784
785 redef class TOpar
786 redef fun parser_index: Int
787 do
788 return 51
789 end
790
791 init init_tk(fname: String, line: Int, pos: Int)
792 do
793 _text = once "("
794 _filename = fname
795 _line = line
796 _pos = pos
797 end
798 end
799
800 redef class TCpar
801 redef fun parser_index: Int
802 do
803 return 52
804 end
805
806 init init_tk(fname: String, line: Int, pos: Int)
807 do
808 _text = once ")"
809 _filename = fname
810 _line = line
811 _pos = pos
812 end
813 end
814
815 redef class TObra
816 redef fun parser_index: Int
817 do
818 return 53
819 end
820
821 init init_tk(fname: String, line: Int, pos: Int)
822 do
823 _text = once "["
824 _filename = fname
825 _line = line
826 _pos = pos
827 end
828 end
829
830 redef class TCbra
831 redef fun parser_index: Int
832 do
833 return 54
834 end
835
836 init init_tk(fname: String, line: Int, pos: Int)
837 do
838 _text = once "]"
839 _filename = fname
840 _line = line
841 _pos = pos
842 end
843 end
844
845 redef class TComma
846 redef fun parser_index: Int
847 do
848 return 55
849 end
850
851 init init_tk(fname: String, line: Int, pos: Int)
852 do
853 _text = once ","
854 _filename = fname
855 _line = line
856 _pos = pos
857 end
858 end
859
860 redef class TColumn
861 redef fun parser_index: Int
862 do
863 return 56
864 end
865
866 init init_tk(fname: String, line: Int, pos: Int)
867 do
868 _text = once ":"
869 _filename = fname
870 _line = line
871 _pos = pos
872 end
873 end
874
875 redef class TQuad
876 redef fun parser_index: Int
877 do
878 return 57
879 end
880
881 init init_tk(fname: String, line: Int, pos: Int)
882 do
883 _text = once "::"
884 _filename = fname
885 _line = line
886 _pos = pos
887 end
888 end
889
890 redef class TAssign
891 redef fun parser_index: Int
892 do
893 return 58
894 end
895
896 init init_tk(fname: String, line: Int, pos: Int)
897 do
898 _text = once "="
899 _filename = fname
900 _line = line
901 _pos = pos
902 end
903 end
904
905 redef class TPluseq
906 redef fun parser_index: Int
907 do
908 return 59
909 end
910
911 init init_tk(fname: String, line: Int, pos: Int)
912 do
913 _text = once "+="
914 _filename = fname
915 _line = line
916 _pos = pos
917 end
918 end
919
920 redef class TMinuseq
921 redef fun parser_index: Int
922 do
923 return 60
924 end
925
926 init init_tk(fname: String, line: Int, pos: Int)
927 do
928 _text = once "-="
929 _filename = fname
930 _line = line
931 _pos = pos
932 end
933 end
934
935 redef class TDotdotdot
936 redef fun parser_index: Int
937 do
938 return 61
939 end
940
941 init init_tk(fname: String, line: Int, pos: Int)
942 do
943 _text = once "..."
944 _filename = fname
945 _line = line
946 _pos = pos
947 end
948 end
949
950 redef class TDotdot
951 redef fun parser_index: Int
952 do
953 return 62
954 end
955
956 init init_tk(fname: String, line: Int, pos: Int)
957 do
958 _text = once ".."
959 _filename = fname
960 _line = line
961 _pos = pos
962 end
963 end
964
965 redef class TDot
966 redef fun parser_index: Int
967 do
968 return 63
969 end
970
971 init init_tk(fname: String, line: Int, pos: Int)
972 do
973 _text = once "."
974 _filename = fname
975 _line = line
976 _pos = pos
977 end
978 end
979
980 redef class TPlus
981 redef fun parser_index: Int
982 do
983 return 64
984 end
985
986 init init_tk(fname: String, line: Int, pos: Int)
987 do
988 _text = once "+"
989 _filename = fname
990 _line = line
991 _pos = pos
992 end
993 end
994
995 redef class TMinus
996 redef fun parser_index: Int
997 do
998 return 65
999 end
1000
1001 init init_tk(fname: String, line: Int, pos: Int)
1002 do
1003 _text = once "-"
1004 _filename = fname
1005 _line = line
1006 _pos = pos
1007 end
1008 end
1009
1010 redef class TStar
1011 redef fun parser_index: Int
1012 do
1013 return 66
1014 end
1015
1016 init init_tk(fname: String, line: Int, pos: Int)
1017 do
1018 _text = once "*"
1019 _filename = fname
1020 _line = line
1021 _pos = pos
1022 end
1023 end
1024
1025 redef class TSlash
1026 redef fun parser_index: Int
1027 do
1028 return 67
1029 end
1030
1031 init init_tk(fname: String, line: Int, pos: Int)
1032 do
1033 _text = once "/"
1034 _filename = fname
1035 _line = line
1036 _pos = pos
1037 end
1038 end
1039
1040 redef class TPercent
1041 redef fun parser_index: Int
1042 do
1043 return 68
1044 end
1045
1046 init init_tk(fname: String, line: Int, pos: Int)
1047 do
1048 _text = once "%"
1049 _filename = fname
1050 _line = line
1051 _pos = pos
1052 end
1053 end
1054
1055 redef class TEq
1056 redef fun parser_index: Int
1057 do
1058 return 69
1059 end
1060
1061 init init_tk(fname: String, line: Int, pos: Int)
1062 do
1063 _text = once "=="
1064 _filename = fname
1065 _line = line
1066 _pos = pos
1067 end
1068 end
1069
1070 redef class TNe
1071 redef fun parser_index: Int
1072 do
1073 return 70
1074 end
1075
1076 init init_tk(fname: String, line: Int, pos: Int)
1077 do
1078 _text = once "!="
1079 _filename = fname
1080 _line = line
1081 _pos = pos
1082 end
1083 end
1084
1085 redef class TLt
1086 redef fun parser_index: Int
1087 do
1088 return 71
1089 end
1090
1091 init init_tk(fname: String, line: Int, pos: Int)
1092 do
1093 _text = once "<"
1094 _filename = fname
1095 _line = line
1096 _pos = pos
1097 end
1098 end
1099
1100 redef class TLe
1101 redef fun parser_index: Int
1102 do
1103 return 72
1104 end
1105
1106 init init_tk(fname: String, line: Int, pos: Int)
1107 do
1108 _text = once "<="
1109 _filename = fname
1110 _line = line
1111 _pos = pos
1112 end
1113 end
1114
1115 redef class TGt
1116 redef fun parser_index: Int
1117 do
1118 return 73
1119 end
1120
1121 init init_tk(fname: String, line: Int, pos: Int)
1122 do
1123 _text = once ">"
1124 _filename = fname
1125 _line = line
1126 _pos = pos
1127 end
1128 end
1129
1130 redef class TGe
1131 redef fun parser_index: Int
1132 do
1133 return 74
1134 end
1135
1136 init init_tk(fname: String, line: Int, pos: Int)
1137 do
1138 _text = once ">="
1139 _filename = fname
1140 _line = line
1141 _pos = pos
1142 end
1143 end
1144
1145 redef class TStarship
1146 redef fun parser_index: Int
1147 do
1148 return 75
1149 end
1150
1151 init init_tk(fname: String, line: Int, pos: Int)
1152 do
1153 _text = once "<=>"
1154 _filename = fname
1155 _line = line
1156 _pos = pos
1157 end
1158 end
1159
1160 redef class TClassid
1161 redef fun parser_index: Int
1162 do
1163 return 76
1164 end
1165
1166 init init_tk(text: String, fname: String, line: Int, pos: Int)
1167 do
1168 _text = text
1169 _filename = fname
1170 _line = line
1171 _pos = pos
1172 end
1173 end
1174
1175 redef class TId
1176 redef fun parser_index: Int
1177 do
1178 return 77
1179 end
1180
1181 init init_tk(text: String, fname: String, line: Int, pos: Int)
1182 do
1183 _text = text
1184 _filename = fname
1185 _line = line
1186 _pos = pos
1187 end
1188 end
1189
1190 redef class TAttrid
1191 redef fun parser_index: Int
1192 do
1193 return 78
1194 end
1195
1196 init init_tk(text: String, fname: String, line: Int, pos: Int)
1197 do
1198 _text = text
1199 _filename = fname
1200 _line = line
1201 _pos = pos
1202 end
1203 end
1204
1205 redef class TNumber
1206 redef fun parser_index: Int
1207 do
1208 return 79
1209 end
1210
1211 init init_tk(text: String, fname: String, line: Int, pos: Int)
1212 do
1213 _text = text
1214 _filename = fname
1215 _line = line
1216 _pos = pos
1217 end
1218 end
1219
1220 redef class TFloat
1221 redef fun parser_index: Int
1222 do
1223 return 80
1224 end
1225
1226 init init_tk(text: String, fname: String, line: Int, pos: Int)
1227 do
1228 _text = text
1229 _filename = fname
1230 _line = line
1231 _pos = pos
1232 end
1233 end
1234
1235 redef class TChar
1236 redef fun parser_index: Int
1237 do
1238 return 81
1239 end
1240
1241 init init_tk(text: String, fname: String, line: Int, pos: Int)
1242 do
1243 _text = text
1244 _filename = fname
1245 _line = line
1246 _pos = pos
1247 end
1248 end
1249
1250 redef class TString
1251 redef fun parser_index: Int
1252 do
1253 return 82
1254 end
1255
1256 init init_tk(text: String, fname: String, line: Int, pos: Int)
1257 do
1258 _text = text
1259 _filename = fname
1260 _line = line
1261 _pos = pos
1262 end
1263 end
1264
1265 redef class TStartString
1266 redef fun parser_index: Int
1267 do
1268 return 83
1269 end
1270
1271 init init_tk(text: String, fname: String, line: Int, pos: Int)
1272 do
1273 _text = text
1274 _filename = fname
1275 _line = line
1276 _pos = pos
1277 end
1278 end
1279
1280 redef class TMidString
1281 redef fun parser_index: Int
1282 do
1283 return 84
1284 end
1285
1286 init init_tk(text: String, fname: String, line: Int, pos: Int)
1287 do
1288 _text = text
1289 _filename = fname
1290 _line = line
1291 _pos = pos
1292 end
1293 end
1294
1295 redef class TEndString
1296 redef fun parser_index: Int
1297 do
1298 return 85
1299 end
1300
1301 init init_tk(text: String, fname: String, line: Int, pos: Int)
1302 do
1303 _text = text
1304 _filename = fname
1305 _line = line
1306 _pos = pos
1307 end
1308 end
1309
1310
1311 redef class EOF
1312 redef fun parser_index: Int
1313 do
1314 return 86
1315 end
1316
1317 init(fname: String, line: Int, pos: Int)
1318 do
1319 _filename = fname
1320 _text = ""
1321 _line = line
1322 _pos = pos
1323 end
1324 end
1325
1326 redef class PError
1327 readable writable var _message: String
1328
1329 init init_error(fname: String, line: Int, pos: Int, message: String)
1330 do
1331 init(fname, line, pos)
1332 _message = message
1333 end
1334 end
1335
1336
1337 # The lexer extract NIT tokens from an input stream.
1338 # It is better user with the Parser
1339 class Lexer
1340 # Last peeked token
1341 var _token: nullable Token
1342
1343 # Lexer current state
1344 var _state: Int = 0
1345
1346 # Name of the stream (as given to tokens)
1347 readable var _filename: String
1348
1349 # Input stream where character are read
1350 var _stream: IStream
1351
1352 # Pushback buffer to store unread character
1353 var _stream_buf: Buffer
1354
1355 # Number of character stored in the pushback buffer
1356 var _stream_pos: Int
1357
1358 # Current line number in the input stream
1359 var _line: Int = 0
1360
1361 # Current column in the input stream
1362 var _pos: Int = 0
1363
1364 # Was the last character a cariage-return?
1365 var _cr: Bool = false
1366
1367 # If the end of stream?
1368 var _eof: Bool = false
1369
1370 # Current working text read from the input stream
1371 var _text: Buffer
1372
1373 # Constante state values
1374 private fun state_initial: Int do return 0 end
1375
1376 # Create a new lexer for a stream (and a name)
1377 init(stream: IStream, fname: String)
1378 do
1379 _filename = fname
1380 _text = new Buffer
1381 _stream = stream
1382 _stream_pos = -1
1383 _stream_buf = new Buffer
1384 build_goto_table
1385 build_accept_table
1386 end
1387
1388 # Give the next token (but do not consume it)
1389 fun peek: Token
1390 do
1391 while _token == null do
1392 _token = get_token
1393 end
1394 return _token.as(not null)
1395 end
1396
1397 # Give and consume the next token
1398 fun next: Token
1399 do
1400 var result = _token
1401 while result == null do
1402 result = get_token
1403 end
1404 _token = null
1405 return result.as(not null)
1406 end
1407
1408 # Get a token, or null if it is discarded
1409 private fun get_token: nullable Token
1410 do
1411 var dfa_state = 0
1412
1413 var start_pos = _pos
1414 var start_line = _line
1415
1416 var accept_state = -1
1417 var accept_token = -1
1418 var accept_length = -1
1419 var accept_pos = -1
1420 var accept_line = -1
1421
1422 var goto_table = _goto_table[_state]
1423 var accept = _accept_table[_state]
1424 _text.clear
1425
1426 while true do
1427 var c = get_char
1428
1429 if c != -1 then
1430 if c == 10 then
1431 if _cr then
1432 _cr = false
1433 else
1434 _line = _line + 1
1435 _pos = 0
1436 end
1437 else if c == 13 then
1438 _line = _line + 1
1439 _pos = 0
1440 _cr = true
1441 else
1442 _pos = _pos + 1
1443 _cr = false
1444 end
1445
1446 _text.add(c.ascii)
1447
1448 var first_loop = true # aka until
1449 while dfa_state < -1 or first_loop do
1450 var old_state = dfa_state
1451 if dfa_state < -1 then
1452 old_state = -2 - dfa_state
1453 end
1454
1455 dfa_state = -1
1456
1457 var tmp1 = goto_table[old_state]
1458 var low = 0
1459 var high = tmp1.length - 1
1460
1461 while low <= high do
1462 var middle = (low + high) / 2
1463 var tmp2 = tmp1[middle]
1464
1465 if c < tmp2[0] then
1466 high = middle - 1
1467 else if c > tmp2[1] then
1468 low = middle + 1
1469 else
1470 dfa_state = tmp2[2]
1471 low = high + 1 # aka break
1472 end
1473 end
1474 first_loop = false # aka until
1475 end
1476 else
1477 dfa_state = -1
1478 end
1479
1480 if dfa_state >= 0 then
1481 if accept[dfa_state] != -1 then
1482 accept_state = dfa_state
1483 accept_token = accept[dfa_state]
1484 accept_length = _text.length
1485 accept_pos = _pos
1486 accept_line = _line
1487 end
1488 else
1489 if accept_state != -1 then
1490 if accept_token == 0 then
1491 push_back(accept_length)
1492 _pos = accept_pos
1493 _line = accept_line
1494 return null
1495 end
1496 if accept_token == 1 then
1497 var token_text = _text.substring(0, accept_length)
1498 var token = new TEol.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
1499 push_back(accept_length)
1500 _pos = accept_pos
1501 _line = accept_line
1502 return token
1503 end
1504 if accept_token == 2 then
1505 var token_text = _text.substring(0, accept_length)
1506 var token = new TComment.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
1507 push_back(accept_length)
1508 _pos = accept_pos
1509 _line = accept_line
1510 return token
1511 end
1512 if accept_token == 3 then
1513 var token = new TKwpackage.init_tk(_filename, start_line + 1, start_pos + 1)
1514 push_back(accept_length)
1515 _pos = accept_pos
1516 _line = accept_line
1517 return token
1518 end
1519 if accept_token == 4 then
1520 var token = new TKwimport.init_tk(_filename, start_line + 1, start_pos + 1)
1521 push_back(accept_length)
1522 _pos = accept_pos
1523 _line = accept_line
1524 return token
1525 end
1526 if accept_token == 5 then
1527 var token = new TKwclass.init_tk(_filename, start_line + 1, start_pos + 1)
1528 push_back(accept_length)
1529 _pos = accept_pos
1530 _line = accept_line
1531 return token
1532 end
1533 if accept_token == 6 then
1534 var token = new TKwabstract.init_tk(_filename, start_line + 1, start_pos + 1)
1535 push_back(accept_length)
1536 _pos = accept_pos
1537 _line = accept_line
1538 return token
1539 end
1540 if accept_token == 7 then
1541 var token = new TKwinterface.init_tk(_filename, start_line + 1, start_pos + 1)
1542 push_back(accept_length)
1543 _pos = accept_pos
1544 _line = accept_line
1545 return token
1546 end
1547 if accept_token == 8 then
1548 var token = new TKwuniversal.init_tk(_filename, start_line + 1, start_pos + 1)
1549 push_back(accept_length)
1550 _pos = accept_pos
1551 _line = accept_line
1552 return token
1553 end
1554 if accept_token == 9 then
1555 var token = new TKwspecial.init_tk(_filename, start_line + 1, start_pos + 1)
1556 push_back(accept_length)
1557 _pos = accept_pos
1558 _line = accept_line
1559 return token
1560 end
1561 if accept_token == 10 then
1562 var token = new TKwend.init_tk(_filename, start_line + 1, start_pos + 1)
1563 push_back(accept_length)
1564 _pos = accept_pos
1565 _line = accept_line
1566 return token
1567 end
1568 if accept_token == 11 then
1569 var token_text = _text.substring(0, accept_length)
1570 var token = new TKwmeth.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
1571 push_back(accept_length)
1572 _pos = accept_pos
1573 _line = accept_line
1574 return token
1575 end
1576 if accept_token == 12 then
1577 var token = new TKwtype.init_tk(_filename, start_line + 1, start_pos + 1)
1578 push_back(accept_length)
1579 _pos = accept_pos
1580 _line = accept_line
1581 return token
1582 end
1583 if accept_token == 13 then
1584 var token = new TKwattr.init_tk(_filename, start_line + 1, start_pos + 1)
1585 push_back(accept_length)
1586 _pos = accept_pos
1587 _line = accept_line
1588 return token
1589 end
1590 if accept_token == 14 then
1591 var token = new TKwinit.init_tk(_filename, start_line + 1, start_pos + 1)
1592 push_back(accept_length)
1593 _pos = accept_pos
1594 _line = accept_line
1595 return token
1596 end
1597 if accept_token == 15 then
1598 var token = new TKwredef.init_tk(_filename, start_line + 1, start_pos + 1)
1599 push_back(accept_length)
1600 _pos = accept_pos
1601 _line = accept_line
1602 return token
1603 end
1604 if accept_token == 16 then
1605 var token = new TKwis.init_tk(_filename, start_line + 1, start_pos + 1)
1606 push_back(accept_length)
1607 _pos = accept_pos
1608 _line = accept_line
1609 return token
1610 end
1611 if accept_token == 17 then
1612 var token = new TKwdo.init_tk(_filename, start_line + 1, start_pos + 1)
1613 push_back(accept_length)
1614 _pos = accept_pos
1615 _line = accept_line
1616 return token
1617 end
1618 if accept_token == 18 then
1619 var token = new TKwreadable.init_tk(_filename, start_line + 1, start_pos + 1)
1620 push_back(accept_length)
1621 _pos = accept_pos
1622 _line = accept_line
1623 return token
1624 end
1625 if accept_token == 19 then
1626 var token = new TKwwritable.init_tk(_filename, start_line + 1, start_pos + 1)
1627 push_back(accept_length)
1628 _pos = accept_pos
1629 _line = accept_line
1630 return token
1631 end
1632 if accept_token == 20 then
1633 var token = new TKwvar.init_tk(_filename, start_line + 1, start_pos + 1)
1634 push_back(accept_length)
1635 _pos = accept_pos
1636 _line = accept_line
1637 return token
1638 end
1639 if accept_token == 21 then
1640 var token = new TKwintern.init_tk(_filename, start_line + 1, start_pos + 1)
1641 push_back(accept_length)
1642 _pos = accept_pos
1643 _line = accept_line
1644 return token
1645 end
1646 if accept_token == 22 then
1647 var token = new TKwextern.init_tk(_filename, start_line + 1, start_pos + 1)
1648 push_back(accept_length)
1649 _pos = accept_pos
1650 _line = accept_line
1651 return token
1652 end
1653 if accept_token == 23 then
1654 var token = new TKwprotected.init_tk(_filename, start_line + 1, start_pos + 1)
1655 push_back(accept_length)
1656 _pos = accept_pos
1657 _line = accept_line
1658 return token
1659 end
1660 if accept_token == 24 then
1661 var token = new TKwprivate.init_tk(_filename, start_line + 1, start_pos + 1)
1662 push_back(accept_length)
1663 _pos = accept_pos
1664 _line = accept_line
1665 return token
1666 end
1667 if accept_token == 25 then
1668 var token = new TKwintrude.init_tk(_filename, start_line + 1, start_pos + 1)
1669 push_back(accept_length)
1670 _pos = accept_pos
1671 _line = accept_line
1672 return token
1673 end
1674 if accept_token == 26 then
1675 var token = new TKwif.init_tk(_filename, start_line + 1, start_pos + 1)
1676 push_back(accept_length)
1677 _pos = accept_pos
1678 _line = accept_line
1679 return token
1680 end
1681 if accept_token == 27 then
1682 var token = new TKwthen.init_tk(_filename, start_line + 1, start_pos + 1)
1683 push_back(accept_length)
1684 _pos = accept_pos
1685 _line = accept_line
1686 return token
1687 end
1688 if accept_token == 28 then
1689 var token = new TKwelse.init_tk(_filename, start_line + 1, start_pos + 1)
1690 push_back(accept_length)
1691 _pos = accept_pos
1692 _line = accept_line
1693 return token
1694 end
1695 if accept_token == 29 then
1696 var token = new TKwwhile.init_tk(_filename, start_line + 1, start_pos + 1)
1697 push_back(accept_length)
1698 _pos = accept_pos
1699 _line = accept_line
1700 return token
1701 end
1702 if accept_token == 30 then
1703 var token = new TKwfor.init_tk(_filename, start_line + 1, start_pos + 1)
1704 push_back(accept_length)
1705 _pos = accept_pos
1706 _line = accept_line
1707 return token
1708 end
1709 if accept_token == 31 then
1710 var token = new TKwin.init_tk(_filename, start_line + 1, start_pos + 1)
1711 push_back(accept_length)
1712 _pos = accept_pos
1713 _line = accept_line
1714 return token
1715 end
1716 if accept_token == 32 then
1717 var token = new TKwand.init_tk(_filename, start_line + 1, start_pos + 1)
1718 push_back(accept_length)
1719 _pos = accept_pos
1720 _line = accept_line
1721 return token
1722 end
1723 if accept_token == 33 then
1724 var token = new TKwor.init_tk(_filename, start_line + 1, start_pos + 1)
1725 push_back(accept_length)
1726 _pos = accept_pos
1727 _line = accept_line
1728 return token
1729 end
1730 if accept_token == 34 then
1731 var token = new TKwnot.init_tk(_filename, start_line + 1, start_pos + 1)
1732 push_back(accept_length)
1733 _pos = accept_pos
1734 _line = accept_line
1735 return token
1736 end
1737 if accept_token == 35 then
1738 var token = new TKwreturn.init_tk(_filename, start_line + 1, start_pos + 1)
1739 push_back(accept_length)
1740 _pos = accept_pos
1741 _line = accept_line
1742 return token
1743 end
1744 if accept_token == 36 then
1745 var token = new TKwcontinue.init_tk(_filename, start_line + 1, start_pos + 1)
1746 push_back(accept_length)
1747 _pos = accept_pos
1748 _line = accept_line
1749 return token
1750 end
1751 if accept_token == 37 then
1752 var token = new TKwbreak.init_tk(_filename, start_line + 1, start_pos + 1)
1753 push_back(accept_length)
1754 _pos = accept_pos
1755 _line = accept_line
1756 return token
1757 end
1758 if accept_token == 38 then
1759 var token = new TKwabort.init_tk(_filename, start_line + 1, start_pos + 1)
1760 push_back(accept_length)
1761 _pos = accept_pos
1762 _line = accept_line
1763 return token
1764 end
1765 if accept_token == 39 then
1766 var token = new TKwassert.init_tk(_filename, start_line + 1, start_pos + 1)
1767 push_back(accept_length)
1768 _pos = accept_pos
1769 _line = accept_line
1770 return token
1771 end
1772 if accept_token == 40 then
1773 var token = new TKwnew.init_tk(_filename, start_line + 1, start_pos + 1)
1774 push_back(accept_length)
1775 _pos = accept_pos
1776 _line = accept_line
1777 return token
1778 end
1779 if accept_token == 41 then
1780 var token = new TKwisa.init_tk(_filename, start_line + 1, start_pos + 1)
1781 push_back(accept_length)
1782 _pos = accept_pos
1783 _line = accept_line
1784 return token
1785 end
1786 if accept_token == 42 then
1787 var token = new TKwonce.init_tk(_filename, start_line + 1, start_pos + 1)
1788 push_back(accept_length)
1789 _pos = accept_pos
1790 _line = accept_line
1791 return token
1792 end
1793 if accept_token == 43 then
1794 var token = new TKwsuper.init_tk(_filename, start_line + 1, start_pos + 1)
1795 push_back(accept_length)
1796 _pos = accept_pos
1797 _line = accept_line
1798 return token
1799 end
1800 if accept_token == 44 then
1801 var token = new TKwself.init_tk(_filename, start_line + 1, start_pos + 1)
1802 push_back(accept_length)
1803 _pos = accept_pos
1804 _line = accept_line
1805 return token
1806 end
1807 if accept_token == 45 then
1808 var token = new TKwtrue.init_tk(_filename, start_line + 1, start_pos + 1)
1809 push_back(accept_length)
1810 _pos = accept_pos
1811 _line = accept_line
1812 return token
1813 end
1814 if accept_token == 46 then
1815 var token = new TKwfalse.init_tk(_filename, start_line + 1, start_pos + 1)
1816 push_back(accept_length)
1817 _pos = accept_pos
1818 _line = accept_line
1819 return token
1820 end
1821 if accept_token == 47 then
1822 var token = new TKwnull.init_tk(_filename, start_line + 1, start_pos + 1)
1823 push_back(accept_length)
1824 _pos = accept_pos
1825 _line = accept_line
1826 return token
1827 end
1828 if accept_token == 48 then
1829 var token = new TKwas.init_tk(_filename, start_line + 1, start_pos + 1)
1830 push_back(accept_length)
1831 _pos = accept_pos
1832 _line = accept_line
1833 return token
1834 end
1835 if accept_token == 49 then
1836 var token = new TKwwith.init_tk(_filename, start_line + 1, start_pos + 1)
1837 push_back(accept_length)
1838 _pos = accept_pos
1839 _line = accept_line
1840 return token
1841 end
1842 if accept_token == 50 then
1843 var token = new TKwnullable.init_tk(_filename, start_line + 1, start_pos + 1)
1844 push_back(accept_length)
1845 _pos = accept_pos
1846 _line = accept_line
1847 return token
1848 end
1849 if accept_token == 51 then
1850 var token = new TKwisset.init_tk(_filename, start_line + 1, start_pos + 1)
1851 push_back(accept_length)
1852 _pos = accept_pos
1853 _line = accept_line
1854 return token
1855 end
1856 if accept_token == 52 then
1857 var token = new TOpar.init_tk(_filename, start_line + 1, start_pos + 1)
1858 push_back(accept_length)
1859 _pos = accept_pos
1860 _line = accept_line
1861 return token
1862 end
1863 if accept_token == 53 then
1864 var token = new TCpar.init_tk(_filename, start_line + 1, start_pos + 1)
1865 push_back(accept_length)
1866 _pos = accept_pos
1867 _line = accept_line
1868 return token
1869 end
1870 if accept_token == 54 then
1871 var token = new TObra.init_tk(_filename, start_line + 1, start_pos + 1)
1872 push_back(accept_length)
1873 _pos = accept_pos
1874 _line = accept_line
1875 return token
1876 end
1877 if accept_token == 55 then
1878 var token = new TCbra.init_tk(_filename, start_line + 1, start_pos + 1)
1879 push_back(accept_length)
1880 _pos = accept_pos
1881 _line = accept_line
1882 return token
1883 end
1884 if accept_token == 56 then
1885 var token = new TComma.init_tk(_filename, start_line + 1, start_pos + 1)
1886 push_back(accept_length)
1887 _pos = accept_pos
1888 _line = accept_line
1889 return token
1890 end
1891 if accept_token == 57 then
1892 var token = new TColumn.init_tk(_filename, start_line + 1, start_pos + 1)
1893 push_back(accept_length)
1894 _pos = accept_pos
1895 _line = accept_line
1896 return token
1897 end
1898 if accept_token == 58 then
1899 var token = new TQuad.init_tk(_filename, start_line + 1, start_pos + 1)
1900 push_back(accept_length)
1901 _pos = accept_pos
1902 _line = accept_line
1903 return token
1904 end
1905 if accept_token == 59 then
1906 var token = new TAssign.init_tk(_filename, start_line + 1, start_pos + 1)
1907 push_back(accept_length)
1908 _pos = accept_pos
1909 _line = accept_line
1910 return token
1911 end
1912 if accept_token == 60 then
1913 var token = new TPluseq.init_tk(_filename, start_line + 1, start_pos + 1)
1914 push_back(accept_length)
1915 _pos = accept_pos
1916 _line = accept_line
1917 return token
1918 end
1919 if accept_token == 61 then
1920 var token = new TMinuseq.init_tk(_filename, start_line + 1, start_pos + 1)
1921 push_back(accept_length)
1922 _pos = accept_pos
1923 _line = accept_line
1924 return token
1925 end
1926 if accept_token == 62 then
1927 var token = new TDotdotdot.init_tk(_filename, start_line + 1, start_pos + 1)
1928 push_back(accept_length)
1929 _pos = accept_pos
1930 _line = accept_line
1931 return token
1932 end
1933 if accept_token == 63 then
1934 var token = new TDotdot.init_tk(_filename, start_line + 1, start_pos + 1)
1935 push_back(accept_length)
1936 _pos = accept_pos
1937 _line = accept_line
1938 return token
1939 end
1940 if accept_token == 64 then
1941 var token = new TDot.init_tk(_filename, start_line + 1, start_pos + 1)
1942 push_back(accept_length)
1943 _pos = accept_pos
1944 _line = accept_line
1945 return token
1946 end
1947 if accept_token == 65 then
1948 var token = new TPlus.init_tk(_filename, start_line + 1, start_pos + 1)
1949 push_back(accept_length)
1950 _pos = accept_pos
1951 _line = accept_line
1952 return token
1953 end
1954 if accept_token == 66 then
1955 var token = new TMinus.init_tk(_filename, start_line + 1, start_pos + 1)
1956 push_back(accept_length)
1957 _pos = accept_pos
1958 _line = accept_line
1959 return token
1960 end
1961 if accept_token == 67 then
1962 var token = new TStar.init_tk(_filename, start_line + 1, start_pos + 1)
1963 push_back(accept_length)
1964 _pos = accept_pos
1965 _line = accept_line
1966 return token
1967 end
1968 if accept_token == 68 then
1969 var token = new TSlash.init_tk(_filename, start_line + 1, start_pos + 1)
1970 push_back(accept_length)
1971 _pos = accept_pos
1972 _line = accept_line
1973 return token
1974 end
1975 if accept_token == 69 then
1976 var token = new TPercent.init_tk(_filename, start_line + 1, start_pos + 1)
1977 push_back(accept_length)
1978 _pos = accept_pos
1979 _line = accept_line
1980 return token
1981 end
1982 if accept_token == 70 then
1983 var token = new TEq.init_tk(_filename, start_line + 1, start_pos + 1)
1984 push_back(accept_length)
1985 _pos = accept_pos
1986 _line = accept_line
1987 return token
1988 end
1989 if accept_token == 71 then
1990 var token = new TNe.init_tk(_filename, start_line + 1, start_pos + 1)
1991 push_back(accept_length)
1992 _pos = accept_pos
1993 _line = accept_line
1994 return token
1995 end
1996 if accept_token == 72 then
1997 var token = new TLt.init_tk(_filename, start_line + 1, start_pos + 1)
1998 push_back(accept_length)
1999 _pos = accept_pos
2000 _line = accept_line
2001 return token
2002 end
2003 if accept_token == 73 then
2004 var token = new TLe.init_tk(_filename, start_line + 1, start_pos + 1)
2005 push_back(accept_length)
2006 _pos = accept_pos
2007 _line = accept_line
2008 return token
2009 end
2010 if accept_token == 74 then
2011 var token = new TGt.init_tk(_filename, start_line + 1, start_pos + 1)
2012 push_back(accept_length)
2013 _pos = accept_pos
2014 _line = accept_line
2015 return token
2016 end
2017 if accept_token == 75 then
2018 var token = new TGe.init_tk(_filename, start_line + 1, start_pos + 1)
2019 push_back(accept_length)
2020 _pos = accept_pos
2021 _line = accept_line
2022 return token
2023 end
2024 if accept_token == 76 then
2025 var token = new TStarship.init_tk(_filename, start_line + 1, start_pos + 1)
2026 push_back(accept_length)
2027 _pos = accept_pos
2028 _line = accept_line
2029 return token
2030 end
2031 if accept_token == 77 then
2032 var token_text = _text.substring(0, accept_length)
2033 var token = new TClassid.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
2034 push_back(accept_length)
2035 _pos = accept_pos
2036 _line = accept_line
2037 return token
2038 end
2039 if accept_token == 78 then
2040 var token_text = _text.substring(0, accept_length)
2041 var token = new TId.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
2042 push_back(accept_length)
2043 _pos = accept_pos
2044 _line = accept_line
2045 return token
2046 end
2047 if accept_token == 79 then
2048 var token_text = _text.substring(0, accept_length)
2049 var token = new TAttrid.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
2050 push_back(accept_length)
2051 _pos = accept_pos
2052 _line = accept_line
2053 return token
2054 end
2055 if accept_token == 80 then
2056 var token_text = _text.substring(0, accept_length)
2057 var token = new TNumber.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
2058 push_back(accept_length)
2059 _pos = accept_pos
2060 _line = accept_line
2061 return token
2062 end
2063 if accept_token == 81 then
2064 var token_text = _text.substring(0, accept_length)
2065 var token = new TFloat.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
2066 push_back(accept_length)
2067 _pos = accept_pos
2068 _line = accept_line
2069 return token
2070 end
2071 if accept_token == 82 then
2072 var token_text = _text.substring(0, accept_length)
2073 var token = new TChar.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
2074 push_back(accept_length)
2075 _pos = accept_pos
2076 _line = accept_line
2077 return token
2078 end
2079 if accept_token == 83 then
2080 var token_text = _text.substring(0, accept_length)
2081 var token = new TString.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
2082 push_back(accept_length)
2083 _pos = accept_pos
2084 _line = accept_line
2085 return token
2086 end
2087 if accept_token == 84 then
2088 var token_text = _text.substring(0, accept_length)
2089 var token = new TStartString.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
2090 push_back(accept_length)
2091 _pos = accept_pos
2092 _line = accept_line
2093 return token
2094 end
2095 if accept_token == 85 then
2096 var token_text = _text.substring(0, accept_length)
2097 var token = new TMidString.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
2098 push_back(accept_length)
2099 _pos = accept_pos
2100 _line = accept_line
2101 return token
2102 end
2103 if accept_token == 86 then
2104 var token_text = _text.substring(0, accept_length)
2105 var token = new TEndString.init_tk(token_text, _filename, start_line + 1, start_pos + 1)
2106 push_back(accept_length)
2107 _pos = accept_pos
2108 _line = accept_line
2109 return token
2110 end
2111 else
2112 if _text.length > 0 then
2113 var token = new PError.init_error(_filename, start_line + 1, start_pos + 1, "Unknown token: {_text}")
2114 return token
2115 else
2116 var token = new EOF(_filename, start_line + 1, start_pos + 1)
2117 return token
2118 end
2119 end
2120 end
2121 end
2122 return null
2123 end
2124
2125 # Read the next character.
2126 # The character is read from the stream of from the pushback buffer.
2127 private fun get_char: Int
2128 do
2129 if _eof then
2130 return -1
2131 end
2132
2133 var result: Int
2134
2135 var sp = _stream_pos
2136 if sp >= 0 then
2137 var res = _stream_buf[_stream_pos]
2138 _stream_pos = sp - 1
2139 result = res.ascii
2140 else
2141 result = _stream.read_char
2142 end
2143
2144 if result == -1 then
2145 _eof = true
2146 end
2147
2148 return result
2149 end
2150
2151 # Unread some characters.
2152 # Unread characters are stored in the pushback buffer.
2153 private fun push_back(accept_length: Int)
2154 do
2155 var length = _text.length
2156 var i = length - 1
2157 while i >= accept_length do
2158 _eof = false
2159 _stream_pos = _stream_pos + 1
2160 _stream_buf[_stream_pos] = _text[i]
2161 i = i - 1
2162 end
2163 end
2164
2165 var _goto_table: Array[Array[Array[Array[Int]]]]
2166 private fun build_goto_table
2167 do
2168 _goto_table = once [
2169 [
2170 [
2171 [9, 9, 1] ,
2172 [10, 10, 2] ,
2173 [13, 13, 3] ,
2174 [32, 32, 4] ,
2175 [33, 33, 5] ,
2176 [34, 34, 6] ,
2177 [35, 35, 7] ,
2178 [37, 37, 8] ,
2179 [39, 39, 9] ,
2180 [40, 40, 10] ,
2181 [41, 41, 11] ,
2182 [42, 42, 12] ,
2183 [43, 43, 13] ,
2184 [44, 44, 14] ,
2185 [45, 45, 15] ,
2186 [46, 46, 16] ,
2187 [47, 47, 17] ,
2188 [48, 57, 18] ,
2189 [58, 58, 19] ,
2190 [60, 60, 20] ,
2191 [61, 61, 21] ,
2192 [62, 62, 22] ,
2193 [65, 90, 23] ,
2194 [91, 91, 24] ,
2195 [93, 93, 25] ,
2196 [95, 95, 26] ,
2197 [97, 97, 27] ,
2198 [98, 98, 28] ,
2199 [99, 99, 29] ,
2200 [100, 100, 30] ,
2201 [101, 101, 31] ,
2202 [102, 102, 32] ,
2203 [103, 104, 33] ,
2204 [105, 105, 34] ,
2205 [106, 108, 33] ,
2206 [109, 109, 35] ,
2207 [110, 110, 36] ,
2208 [111, 111, 37] ,
2209 [112, 112, 38] ,
2210 [113, 113, 33] ,
2211 [114, 114, 39] ,
2212 [115, 115, 40] ,
2213 [116, 116, 41] ,
2214 [117, 117, 42] ,
2215 [118, 118, 43] ,
2216 [119, 119, 44] ,
2217 [120, 122, 33] ,
2218 [125, 125, 45]
2219 ] ,
2220 [
2221 [9, 9, 1] ,
2222 [32, 32, 4]
2223 ] ,
2224 nil_array ,
2225 [
2226 [10, 10, 46]
2227 ] ,
2228 [
2229 [9, 32, -3]
2230 ] ,
2231 [
2232 [61, 61, 47]
2233 ] ,
2234 [
2235 [0, 9, 48] ,
2236 [11, 12, 48] ,
2237 [14, 33, 48] ,
2238 [34, 34, 49] ,
2239 [35, 91, 48] ,
2240 [92, 92, 50] ,
2241 [93, 122, 48] ,
2242 [123, 123, 51] ,
2243 [124, 255, 48]
2244 ] ,
2245 [
2246 [0, 9, 52] ,
2247 [10, 10, 53] ,
2248 [11, 12, 52] ,
2249 [13, 13, 54] ,
2250 [14, 255, 52]
2251 ] ,
2252 nil_array ,
2253 [
2254 [0, 9, 55] ,
2255 [11, 12, 55] ,
2256 [14, 38, 55] ,
2257 [39, 39, 56] ,
2258 [40, 255, 55]
2259 ] ,
2260 nil_array ,
2261 nil_array ,
2262 nil_array ,
2263 [
2264 [61, 61, 57]
2265 ] ,
2266 nil_array ,
2267 [
2268 [61, 61, 58]
2269 ] ,
2270 [
2271 [46, 46, 59] ,
2272 [48, 57, 60]
2273 ] ,
2274 nil_array ,
2275 [
2276 [46, 46, 61] ,
2277 [48, 57, 18]
2278 ] ,
2279 [
2280 [58, 58, 62]
2281 ] ,
2282 [
2283 [61, 61, 63]
2284 ] ,
2285 [
2286 [61, 61, 64]
2287 ] ,
2288 [
2289 [61, 61, 65]
2290 ] ,
2291 [
2292 [48, 57, 66] ,
2293 [65, 90, 67] ,
2294 [95, 95, 68] ,
2295 [97, 122, 69]
2296 ] ,
2297 nil_array ,
2298 nil_array ,
2299 [
2300 [97, 122, 70]
2301 ] ,
2302 [
2303 [48, 57, 71] ,
2304 [65, 90, 72] ,
2305 [95, 95, 73] ,
2306 [97, 97, 74] ,
2307 [98, 98, 75] ,
2308 [99, 109, 74] ,
2309 [110, 110, 76] ,
2310 [111, 114, 74] ,
2311 [115, 115, 77] ,
2312 [116, 116, 78] ,
2313 [117, 122, 74]
2314 ] ,
2315 [
2316 [48, 95, -29] ,
2317 [97, 113, 74] ,
2318 [114, 114, 79] ,
2319 [115, 122, 74]
2320 ] ,
2321 [
2322 [48, 95, -29] ,
2323 [97, 107, 74] ,
2324 [108, 108, 80] ,
2325 [109, 110, 74] ,
2326 [111, 111, 81] ,
2327 [112, 122, 74]
2328 ] ,
2329 [
2330 [48, 95, -29] ,
2331 [97, 110, 74] ,
2332 [111, 111, 82] ,
2333 [112, 122, 74]
2334 ] ,
2335 [
2336 [48, 107, -31] ,
2337 [108, 108, 83] ,
2338 [109, 109, 74] ,
2339 [110, 110, 84] ,
2340 [111, 119, 74] ,
2341 [120, 120, 85] ,
2342 [121, 122, 74]
2343 ] ,
2344 [
2345 [48, 95, -29] ,
2346 [97, 97, 86] ,
2347 [98, 110, 74] ,
2348 [111, 111, 87] ,
2349 [112, 116, 74] ,
2350 [117, 117, 88] ,
2351 [118, 122, 74]
2352 ] ,
2353 [
2354 [48, 95, -29] ,
2355 [97, 122, 74]
2356 ] ,
2357 [
2358 [48, 95, -29] ,
2359 [97, 101, 74] ,
2360 [102, 102, 89] ,
2361 [103, 108, 74] ,
2362 [109, 109, 90] ,
2363 [110, 110, 91] ,
2364 [111, 114, 74] ,
2365 [115, 115, 92] ,
2366 [116, 122, 74]
2367 ] ,
2368 [
2369 [48, 95, -29] ,
2370 [97, 100, 74] ,
2371 [101, 101, 93] ,
2372 [102, 122, 74]
2373 ] ,
2374 [
2375 [48, 100, -37] ,
2376 [101, 101, 94] ,
2377 [102, 110, 74] ,
2378 [111, 111, 95] ,
2379 [112, 116, 74] ,
2380 [117, 117, 96] ,
2381 [118, 122, 74]
2382 ] ,
2383 [
2384 [48, 95, -29] ,
2385 [97, 109, 74] ,
2386 [110, 110, 97] ,
2387 [111, 113, 74] ,
2388 [114, 114, 98] ,
2389 [115, 122, 74]
2390 ] ,
2391 [
2392 [48, 95, -29] ,
2393 [97, 97, 99] ,
2394 [98, 113, 74] ,
2395 [114, 114, 100] ,
2396 [115, 122, 74]
2397 ] ,
2398 [
2399 [48, 100, -37] ,
2400 [101, 101, 101] ,
2401 [102, 122, 74]
2402 ] ,
2403 [
2404 [48, 100, -37] ,
2405 [101, 101, 102] ,
2406 [102, 111, 74] ,
2407 [112, 112, 103] ,
2408 [113, 116, 74] ,
2409 [117, 117, 104] ,
2410 [118, 122, 74]
2411 ] ,
2412 [
2413 [48, 95, -29] ,
2414 [97, 103, 74] ,
2415 [104, 104, 105] ,
2416 [105, 113, 74] ,
2417 [114, 114, 106] ,
2418 [115, 120, 74] ,
2419 [121, 121, 107] ,
2420 [122, 122, 74]
2421 ] ,
2422 [
2423 [48, 109, -39] ,
2424 [110, 110, 108] ,
2425 [111, 122, 74]
2426 ] ,
2427 [
2428 [48, 95, -29] ,
2429 [97, 97, 109] ,
2430 [98, 122, 74]
2431 ] ,
2432 [
2433 [48, 103, -43] ,
2434 [104, 104, 110] ,
2435 [105, 105, 111] ,
2436 [106, 113, 74] ,
2437 [114, 114, 112] ,
2438 [115, 122, 74]
2439 ] ,
2440 [
2441 [0, 9, 113] ,
2442 [11, 12, 113] ,
2443 [14, 33, 113] ,
2444 [34, 34, 114] ,
2445 [35, 91, 113] ,
2446 [92, 92, 115] ,
2447 [93, 122, 113] ,
2448 [123, 123, 116] ,
2449 [124, 255, 113]
2450 ] ,
2451 nil_array ,
2452 nil_array ,
2453 [
2454 [0, 255, -8]
2455 ] ,
2456 nil_array ,
2457 [
2458 [0, 9, 117] ,
2459 [11, 12, 117] ,
2460 [14, 255, 117]
2461 ] ,
2462 nil_array ,
2463 [
2464 [0, 255, -9]
2465 ] ,
2466 nil_array ,
2467 [
2468 [10, 10, 118]
2469 ] ,
2470 [
2471 [0, 255, -11]
2472 ] ,
2473 nil_array ,
2474 nil_array ,
2475 nil_array ,
2476 [
2477 [46, 46, 119]
2478 ] ,
2479 [
2480 [48, 57, 60]
2481 ] ,
2482 [
2483 [48, 57, 60]
2484 ] ,
2485 nil_array ,
2486 [
2487 [62, 62, 120]
2488 ] ,
2489 nil_array ,
2490 nil_array ,
2491 [
2492 [48, 122, -25]
2493 ] ,
2494 [
2495 [48, 122, -25]
2496 ] ,
2497 [
2498 [48, 122, -25]
2499 ] ,
2500 [
2501 [48, 122, -25]
2502 ] ,
2503 [
2504 [48, 57, 121] ,
2505 [65, 90, 122] ,
2506 [95, 95, 123] ,
2507 [97, 122, 124]
2508 ] ,
2509 [
2510 [48, 122, -35]
2511 ] ,
2512 [
2513 [48, 122, -35]
2514 ] ,
2515 [
2516 [48, 122, -35]
2517 ] ,
2518 [
2519 [48, 122, -35]
2520 ] ,
2521 [
2522 [48, 110, -32] ,
2523 [111, 111, 125] ,
2524 [112, 114, 74] ,
2525 [115, 115, 126] ,
2526 [116, 122, 74]
2527 ] ,
2528 [
2529 [48, 95, -29] ,
2530 [97, 99, 74] ,
2531 [100, 100, 127] ,
2532 [101, 122, 74]
2533 ] ,
2534 [
2535 [48, 95, -29] ,
2536 [97, 114, 74] ,
2537 [115, 115, 128] ,
2538 [116, 122, 74]
2539 ] ,
2540 [
2541 [48, 95, -29] ,
2542 [97, 115, 74] ,
2543 [116, 116, 129] ,
2544 [117, 122, 74]
2545 ] ,
2546 [
2547 [48, 100, -37] ,
2548 [101, 101, 130] ,
2549 [102, 122, 74]
2550 ] ,
2551 [
2552 [48, 95, -29] ,
2553 [97, 97, 131] ,
2554 [98, 122, 74]
2555 ] ,
2556 [
2557 [48, 109, -39] ,
2558 [110, 110, 132] ,
2559 [111, 122, 74]
2560 ] ,
2561 [
2562 [48, 122, -35]
2563 ] ,
2564 [
2565 [48, 114, -79] ,
2566 [115, 115, 133] ,
2567 [116, 122, 74]
2568 ] ,
2569 [
2570 [48, 99, -78] ,
2571 [100, 100, 134] ,
2572 [101, 122, 74]
2573 ] ,
2574 [
2575 [48, 115, -80] ,
2576 [116, 116, 135] ,
2577 [117, 122, 74]
2578 ] ,
2579 [
2580 [48, 107, -31] ,
2581 [108, 108, 136] ,
2582 [109, 122, 74]
2583 ] ,
2584 [
2585 [48, 113, -30] ,
2586 [114, 114, 137] ,
2587 [115, 122, 74]
2588 ] ,
2589 [
2590 [48, 109, -39] ,
2591 [110, 110, 138] ,
2592 [111, 122, 74]
2593 ] ,
2594 [
2595 [48, 122, -35]
2596 ] ,
2597 [
2598 [48, 95, -29] ,
2599 [97, 111, 74] ,
2600 [112, 112, 139] ,
2601 [113, 122, 74]
2602 ] ,
2603 [
2604 [48, 95, -29] ,
2605 [97, 104, 74] ,
2606 [105, 105, 140] ,
2607 [106, 115, 74] ,
2608 [116, 116, 141] ,
2609 [117, 122, 74]
2610 ] ,
2611 [
2612 [48, 95, -29] ,
2613 [97, 97, 142] ,
2614 [98, 114, 74] ,
2615 [115, 115, 143] ,
2616 [116, 122, 74]
2617 ] ,
2618 [
2619 [48, 115, -80] ,
2620 [116, 116, 144] ,
2621 [117, 122, 74]
2622 ] ,
2623 [
2624 [48, 95, -29] ,
2625 [97, 118, 74] ,
2626 [119, 119, 145] ,
2627 [120, 122, 74]
2628 ] ,
2629 [
2630 [48, 115, -80] ,
2631 [116, 116, 146] ,
2632 [117, 122, 74]
2633 ] ,
2634 [
2635 [48, 107, -31] ,
2636 [108, 108, 147] ,
2637 [109, 122, 74]
2638 ] ,
2639 [
2640 [48, 95, -29] ,
2641 [97, 98, 74] ,
2642 [99, 99, 148] ,
2643 [100, 122, 74]
2644 ] ,
2645 [
2646 [48, 122, -35]
2647 ] ,
2648 [
2649 [48, 98, -99] ,
2650 [99, 99, 149] ,
2651 [100, 122, 74]
2652 ] ,
2653 [
2654 [48, 104, -93] ,
2655 [105, 105, 150] ,
2656 [106, 110, 74] ,
2657 [111, 111, 151] ,
2658 [112, 122, 74]
2659 ] ,
2660 [
2661 [48, 95, -29] ,
2662 [97, 97, 152] ,
2663 [98, 99, 74] ,
2664 [100, 100, 153] ,
2665 [101, 115, 74] ,
2666 [116, 116, 154] ,
2667 [117, 122, 74]
2668 ] ,
2669 [
2670 [48, 107, -31] ,
2671 [108, 108, 155] ,
2672 [109, 122, 74]
2673 ] ,
2674 [
2675 [48, 100, -37] ,
2676 [101, 101, 156] ,
2677 [102, 122, 74]
2678 ] ,
2679 [
2680 [48, 111, -92] ,
2681 [112, 112, 157] ,
2682 [113, 122, 74]
2683 ] ,
2684 [
2685 [48, 100, -37] ,
2686 [101, 101, 158] ,
2687 [102, 122, 74]
2688 ] ,
2689 [
2690 [48, 95, -29] ,
2691 [97, 116, 74] ,
2692 [117, 117, 159] ,
2693 [118, 122, 74]
2694 ] ,
2695 [
2696 [48, 111, -92] ,
2697 [112, 112, 160] ,
2698 [113, 122, 74]
2699 ] ,
2700 [
2701 [48, 104, -93] ,
2702 [105, 105, 161] ,
2703 [106, 122, 74]
2704 ] ,
2705 [
2706 [48, 113, -30] ,
2707 [114, 114, 162] ,
2708 [115, 122, 74]
2709 ] ,
2710 [
2711 [48, 104, -93] ,
2712 [105, 105, 163] ,
2713 [106, 122, 74]
2714 ] ,
2715 [
2716 [48, 115, -80] ,
2717 [116, 116, 164] ,
2718 [117, 122, 74]
2719 ] ,
2720 [
2721 [48, 104, -93] ,
2722 [105, 105, 165] ,
2723 [106, 122, 74]
2724 ] ,
2725 [
2726 [0, 255, -47]
2727 ] ,
2728 nil_array ,
2729 [
2730 [0, 9, 166] ,
2731 [11, 12, 166] ,
2732 [14, 255, 166]
2733 ] ,
2734 nil_array ,
2735 [
2736 [0, 255, -8]
2737 ] ,
2738 nil_array ,
2739 nil_array ,
2740 nil_array ,
2741 [
2742 [48, 122, -72]
2743 ] ,
2744 [
2745 [48, 122, -72]
2746 ] ,
2747 [
2748 [48, 122, -72]
2749 ] ,
2750 [
2751 [48, 122, -72]
2752 ] ,
2753 [
2754 [48, 113, -30] ,
2755 [114, 114, 167] ,
2756 [115, 122, 74]
2757 ] ,
2758 [
2759 [48, 115, -80] ,
2760 [116, 116, 168] ,
2761 [117, 122, 74]
2762 ] ,
2763 [
2764 [48, 122, -35]
2765 ] ,
2766 [
2767 [48, 100, -37] ,
2768 [101, 101, 169] ,
2769 [102, 122, 74]
2770 ] ,
2771 [
2772 [48, 113, -30] ,
2773 [114, 114, 170] ,
2774 [115, 122, 74]
2775 ] ,
2776 [
2777 [48, 95, -29] ,
2778 [97, 97, 171] ,
2779 [98, 122, 74]
2780 ] ,
2781 [
2782 [48, 114, -79] ,
2783 [115, 115, 172] ,
2784 [116, 122, 74]
2785 ] ,
2786 [
2787 [48, 115, -80] ,
2788 [116, 116, 173] ,
2789 [117, 122, 74]
2790 ] ,
2791 [
2792 [48, 100, -37] ,
2793 [101, 101, 174] ,
2794 [102, 122, 74]
2795 ] ,
2796 [
2797 [48, 122, -35]
2798 ] ,
2799 [
2800 [48, 100, -37] ,
2801 [101, 101, 175] ,
2802 [102, 122, 74]
2803 ] ,
2804 [
2805 [48, 114, -79] ,
2806 [115, 115, 176] ,
2807 [116, 122, 74]
2808 ] ,
2809 [
2810 [48, 122, -35]
2811 ] ,
2812 [
2813 [48, 122, -35]
2814 ] ,
2815 [
2816 [48, 110, -32] ,
2817 [111, 111, 177] ,
2818 [112, 122, 74]
2819 ] ,
2820 [
2821 [48, 115, -80] ,
2822 [116, 116, 178] ,
2823 [117, 122, 74]
2824 ] ,
2825 [
2826 [48, 100, -37] ,
2827 [101, 101, 179] ,
2828 [102, 113, 74] ,
2829 [114, 114, 180] ,
2830 [115, 122, 74]
2831 ] ,
2832 [
2833 [48, 122, -35]
2834 ] ,
2835 [
2836 [48, 100, -37] ,
2837 [101, 101, 181] ,
2838 [102, 122, 74]
2839 ] ,
2840 [
2841 [48, 103, -43] ,
2842 [104, 104, 182] ,
2843 [105, 122, 74]
2844 ] ,
2845 [
2846 [48, 122, -35]
2847 ] ,
2848 [
2849 [48, 122, -35]
2850 ] ,
2851 [
2852 [48, 107, -31] ,
2853 [108, 108, 183] ,
2854 [109, 122, 74]
2855 ] ,
2856 [
2857 [48, 100, -37] ,
2858 [101, 101, 184] ,
2859 [102, 122, 74]
2860 ] ,
2861 [
2862 [48, 95, -29] ,
2863 [97, 106, 74] ,
2864 [107, 107, 185] ,
2865 [108, 122, 74]
2866 ] ,
2867 [
2868 [48, 95, -29] ,
2869 [97, 117, 74] ,
2870 [118, 118, 186] ,
2871 [119, 122, 74]
2872 ] ,
2873 [
2874 [48, 115, -80] ,
2875 [116, 116, 187] ,
2876 [117, 122, 74]
2877 ] ,
2878 [
2879 [48, 99, -78] ,
2880 [100, 100, 188] ,
2881 [101, 122, 74]
2882 ] ,
2883 [
2884 [48, 100, -37] ,
2885 [101, 101, 189] ,
2886 [102, 122, 74]
2887 ] ,
2888 [
2889 [48, 116, -108] ,
2890 [117, 117, 190] ,
2891 [118, 122, 74]
2892 ] ,
2893 [
2894 [48, 101, -36] ,
2895 [102, 102, 191] ,
2896 [103, 122, 74]
2897 ] ,
2898 [
2899 [48, 98, -99] ,
2900 [99, 99, 192] ,
2901 [100, 122, 74]
2902 ] ,
2903 [
2904 [48, 100, -37] ,
2905 [101, 101, 193] ,
2906 [102, 122, 74]
2907 ] ,
2908 [
2909 [48, 109, -39] ,
2910 [110, 110, 194] ,
2911 [111, 122, 74]
2912 ] ,
2913 [
2914 [48, 100, -37] ,
2915 [101, 101, 195] ,
2916 [102, 122, 74]
2917 ] ,
2918 [
2919 [48, 100, -37] ,
2920 [101, 101, 196] ,
2921 [102, 122, 74]
2922 ] ,
2923 [
2924 [48, 117, -152] ,
2925 [118, 118, 197] ,
2926 [119, 122, 74]
2927 ] ,
2928 [
2929 [48, 122, -35]
2930 ] ,
2931 [
2932 [48, 107, -31] ,
2933 [108, 108, 198] ,
2934 [109, 122, 74]
2935 ] ,
2936 [
2937 [48, 103, -43] ,
2938 [104, 104, 199] ,
2939 [105, 122, 74]
2940 ] ,
2941 [
2942 [48, 115, -80] ,
2943 [116, 116, 200] ,
2944 [117, 122, 74]
2945 ] ,
2946 [
2947 [0, 255, -47]
2948 ] ,
2949 [
2950 [48, 115, -80] ,
2951 [116, 116, 201] ,
2952 [117, 122, 74]
2953 ] ,
2954 [
2955 [48, 113, -30] ,
2956 [114, 114, 202] ,
2957 [115, 122, 74]
2958 ] ,
2959 [
2960 [48, 113, -30] ,
2961 [114, 114, 203] ,
2962 [115, 122, 74]
2963 ] ,
2964 [
2965 [48, 122, -35]
2966 ] ,
2967 [
2968 [48, 106, -151] ,
2969 [107, 107, 204] ,
2970 [108, 122, 74]
2971 ] ,
2972 [
2973 [48, 114, -79] ,
2974 [115, 115, 205] ,
2975 [116, 122, 74]
2976 ] ,
2977 [
2978 [48, 104, -93] ,
2979 [105, 105, 206] ,
2980 [106, 122, 74]
2981 ] ,
2982 [
2983 [48, 122, -35]
2984 ] ,
2985 [
2986 [48, 113, -30] ,
2987 [114, 114, 207] ,
2988 [115, 122, 74]
2989 ] ,
2990 [
2991 [48, 100, -37] ,
2992 [101, 101, 208] ,
2993 [102, 122, 74]
2994 ] ,
2995 [
2996 [48, 113, -30] ,
2997 [114, 114, 209] ,
2998 [115, 122, 74]
2999 ] ,
3000 [
3001 [48, 122, -35]
3002 ] ,
3003 [
3004 [48, 113, -30] ,
3005 [114, 114, 210] ,
3006 [115, 122, 74]
3007 ] ,
3008 [
3009 [48, 116, -108] ,
3010 [117, 117, 211] ,
3011 [118, 122, 74]
3012 ] ,
3013 [
3014 [48, 115, -80] ,
3015 [116, 116, 212] ,
3016 [117, 122, 74]
3017 ] ,
3018 [
3019 [48, 122, -35]
3020 ] ,
3021 [
3022 [48, 95, -29] ,
3023 [97, 97, 213] ,
3024 [98, 122, 74]
3025 ] ,
3026 [
3027 [48, 122, -35]
3028 ] ,
3029 [
3030 [48, 95, -29] ,
3031 [97, 97, 214] ,
3032 [98, 122, 74]
3033 ] ,
3034 [
3035 [48, 95, -29] ,
3036 [97, 97, 215] ,
3037 [98, 122, 74]
3038 ] ,
3039 [
3040 [48, 100, -37] ,
3041 [101, 101, 216] ,
3042 [102, 122, 74]
3043 ] ,
3044 [
3045 [48, 95, -29] ,
3046 [97, 97, 217] ,
3047 [98, 122, 74]
3048 ] ,
3049 [
3050 [48, 101, -36] ,
3051 [102, 102, 218] ,
3052 [103, 122, 74]
3053 ] ,
3054 [
3055 [48, 113, -30] ,
3056 [114, 114, 219] ,
3057 [115, 122, 74]
3058 ] ,
3059 [
3060 [48, 122, -35]
3061 ] ,
3062 [
3063 [48, 104, -93] ,
3064 [105, 105, 220] ,
3065 [106, 122, 74]
3066 ] ,
3067 [
3068 [48, 113, -30] ,
3069 [114, 114, 221] ,
3070 [115, 122, 74]
3071 ] ,
3072 [
3073 [48, 122, -35]
3074 ] ,
3075 [
3076 [48, 122, -35]
3077 ] ,
3078 [
3079 [48, 122, -35]
3080 ] ,
3081 [
3082 [48, 100, -37] ,
3083 [101, 101, 222] ,
3084 [102, 122, 74]
3085 ] ,
3086 [
3087 [48, 100, -37] ,
3088 [101, 101, 223] ,
3089 [102, 122, 74]
3090 ] ,
3091 [
3092 [48, 122, -35]
3093 ] ,
3094 [
3095 [48, 95, -29] ,
3096 [97, 97, 224] ,
3097 [98, 122, 74]
3098 ] ,
3099 [
3100 [48, 122, -35]
3101 ] ,
3102 [
3103 [48, 95, -29] ,
3104 [97, 97, 225] ,
3105 [98, 122, 74]
3106 ] ,
3107 [
3108 [48, 115, -80] ,
3109 [116, 116, 226] ,
3110 [117, 122, 74]
3111 ] ,
3112 [
3113 [48, 122, -35]
3114 ] ,
3115 [
3116 [48, 122, -35]
3117 ] ,
3118 [
3119 [48, 109, -39] ,
3120 [110, 110, 227] ,
3121 [111, 122, 74]
3122 ] ,
3123 [
3124 [48, 109, -39] ,
3125 [110, 110, 228] ,
3126 [111, 122, 74]
3127 ] ,
3128 [
3129 [48, 122, -35]
3130 ] ,
3131 [
3132 [48, 115, -80] ,
3133 [116, 116, 229] ,
3134 [117, 122, 74]
3135 ] ,
3136 [
3137 [48, 101, -36] ,
3138 [102, 102, 230] ,
3139 [103, 109, 74] ,
3140 [110, 110, 231] ,
3141 [111, 122, 74]
3142 ] ,
3143 [
3144 [48, 99, -78] ,
3145 [100, 100, 232] ,
3146 [101, 122, 74]
3147 ] ,
3148 [
3149 [48, 122, -35]
3150 ] ,
3151 [
3152 [48, 97, -29] ,
3153 [98, 98, 233] ,
3154 [99, 122, 74]
3155 ] ,
3156 [
3157 [48, 95, -29] ,
3158 [97, 102, 74] ,
3159 [103, 103, 234] ,
3160 [104, 122, 74]
3161 ] ,
3162 [
3163 [48, 115, -80] ,
3164 [116, 116, 235] ,
3165 [117, 122, 74]
3166 ] ,
3167 [
3168 [48, 98, -99] ,
3169 [99, 99, 236] ,
3170 [100, 122, 74]
3171 ] ,
3172 [
3173 [48, 97, -29] ,
3174 [98, 98, 237] ,
3175 [99, 122, 74]
3176 ] ,
3177 [
3178 [48, 122, -35]
3179 ] ,
3180 [
3181 [48, 109, -39] ,
3182 [110, 110, 238] ,
3183 [111, 122, 74]
3184 ] ,
3185 [
3186 [48, 95, -29] ,
3187 [97, 97, 239] ,
3188 [98, 122, 74]
3189 ] ,
3190 [
3191 [48, 122, -35]
3192 ] ,
3193 [
3194 [48, 113, -30] ,
3195 [114, 114, 240] ,
3196 [115, 122, 74]
3197 ] ,
3198 [
3199 [48, 122, -35]
3200 ] ,
3201 [
3202 [48, 97, -29] ,
3203 [98, 98, 241] ,
3204 [99, 122, 74]
3205 ] ,
3206 [
3207 [48, 98, -99] ,
3208 [99, 99, 242] ,
3209 [100, 122, 74]
3210 ] ,
3211 [
3212 [48, 122, -35]
3213 ] ,
3214 [
3215 [48, 116, -108] ,
3216 [117, 117, 243] ,
3217 [118, 122, 74]
3218 ] ,
3219 [
3220 [48, 122, -35]
3221 ] ,
3222 [
3223 [48, 122, -35]
3224 ] ,
3225 [
3226 [48, 95, -29] ,
3227 [97, 97, 244] ,
3228 [98, 122, 74]
3229 ] ,
3230 [
3231 [48, 122, -35]
3232 ] ,
3233 [
3234 [48, 100, -37] ,
3235 [101, 101, 245] ,
3236 [102, 122, 74]
3237 ] ,
3238 [
3239 [48, 107, -31] ,
3240 [108, 108, 246] ,
3241 [109, 122, 74]
3242 ] ,
3243 [
3244 [48, 100, -37] ,
3245 [101, 101, 247] ,
3246 [102, 122, 74]
3247 ] ,
3248 [
3249 [48, 100, -37] ,
3250 [101, 101, 248] ,
3251 [102, 122, 74]
3252 ] ,
3253 [
3254 [48, 115, -80] ,
3255 [116, 116, 249] ,
3256 [117, 122, 74]
3257 ] ,
3258 [
3259 [48, 107, -31] ,
3260 [108, 108, 250] ,
3261 [109, 122, 74]
3262 ] ,
3263 [
3264 [48, 122, -35]
3265 ] ,
3266 [
3267 [48, 107, -31] ,
3268 [108, 108, 251] ,
3269 [109, 122, 74]
3270 ] ,
3271 [
3272 [48, 114, -79] ,
3273 [115, 115, 252] ,
3274 [116, 122, 74]
3275 ] ,
3276 [
3277 [48, 107, -31] ,
3278 [108, 108, 253] ,
3279 [109, 122, 74]
3280 ] ,
3281 [
3282 [48, 115, -80] ,
3283 [116, 116, 254] ,
3284 [117, 122, 74]
3285 ] ,
3286 [
3287 [48, 100, -37] ,
3288 [101, 101, 255] ,
3289 [102, 122, 74]
3290 ] ,
3291 [
3292 [48, 98, -99] ,
3293 [99, 99, 256] ,
3294 [100, 122, 74]
3295 ] ,
3296 [
3297 [48, 122, -35]
3298 ] ,
3299 [
3300 [48, 100, -37] ,
3301 [101, 101, 257] ,
3302 [102, 122, 74]
3303 ] ,
3304 [
3305 [48, 122, -35]
3306 ] ,
3307 [
3308 [48, 122, -35]
3309 ] ,
3310 [
3311 [48, 100, -37] ,
3312 [101, 101, 258] ,
3313 [102, 122, 74]
3314 ] ,
3315 [
3316 [48, 100, -37] ,
3317 [101, 101, 259] ,
3318 [102, 122, 74]
3319 ] ,
3320 [
3321 [48, 122, -35]
3322 ] ,
3323 [
3324 [48, 95, -29] ,
3325 [97, 97, 260] ,
3326 [98, 122, 74]
3327 ] ,
3328 [
3329 [48, 100, -37] ,
3330 [101, 101, 261] ,
3331 [102, 122, 74]
3332 ] ,
3333 [
3334 [48, 122, -35]
3335 ] ,
3336 [
3337 [48, 122, -35]
3338 ] ,
3339 [
3340 [48, 100, -37] ,
3341 [101, 101, 262] ,
3342 [102, 122, 74]
3343 ] ,
3344 [
3345 [48, 122, -35]
3346 ] ,
3347 [
3348 [48, 99, -78] ,
3349 [100, 100, 263] ,
3350 [101, 122, 74]
3351 ] ,
3352 [
3353 [48, 122, -35]
3354 ] ,
3355 [
3356 [48, 107, -31] ,
3357 [108, 108, 264] ,
3358 [109, 122, 74]
3359 ] ,
3360 [
3361 [48, 122, -35]
3362 ] ,
3363 [
3364 [48, 122, -35]
3365 ] ,
3366 [
3367 [48, 122, -35]
3368 ] ,
3369 [
3370 [48, 122, -35]
3371 ]
3372 ]
3373 ]
3374 end
3375
3376 private fun nil_array: Array[Array[Int]]
3377 do
3378 return once new Array[Array[Int]]
3379 end
3380
3381 var _accept_table: Array[Array[Int]]
3382 private fun build_accept_table do
3383 _accept_table = once [
3384 [
3385 -1 , 0 , 1 , 1 , 0 , -1 , -1 , -1 , 69 , -1 , 52 , 53 , 67 , 65 , 56 , 66 , 64 , 68 , 80 , 57 , 72 , 59 , 74 , 77 , 54 , 55 , -1 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , -1 , 1 , 71 , -1 , 83 , -1 , 84 , -1 , 2 , 2 , -1 , 82 , 60 , 61 , 63 , 81 , -1 , 58 , 73 , 70 , 75 , 77 , 77 , 77 , 77 , 79 , 78 , 78 , 78 , 78 , 78 , 78 , 48 , 78 , 78 , 78 , 78 , 17 , 78 , 78 , 78 , 78 , 78 , 78 , 26 , 78 , 31 , 16 , 78 , 78 , 78 , 78 , 78 , 33 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , -1 , 86 , -1 , 85 , -1 , 2 , 62 , 76 , 79 , 79 , 79 , 79 , 78 , 78 , 32 , 78 , 78 , 78 , 78 , 78 , 78 , 10 , 78 , 78 , 30 , 11 , 78 , 78 , 78 , 41 , 78 , 78 , 40 , 34 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 20 , 78 , 78 , 78 , -1 , 78 , 78 , 78 , 13 , 78 , 78 , 78 , 28 , 78 , 78 , 78 , 14 , 78 , 78 , 78 , 11 , 47 , 42 , 78 , 78 , 78 , 78 , 78 , 78 , 44 , 78 , 78 , 27 , 45 , 12 , 78 , 78 , 49 , 78 , 38 , 78 , 78 , 37 , 5 , 78 , 78 , 46 , 78 , 78 , 78 , 51 , 78 , 78 , 78 , 78 , 78 , 15 , 78 , 78 , 43 , 78 , 29 , 78 , 78 , 39 , 78 , 22 , 4 , 78 , 21 , 78 , 78 , 78 , 78 , 78 , 78 , 35 , 78 , 78 , 78 , 78 , 78 , 78 , 25 , 78 , 3 , 24 , 78 , 78 , 9 , 78 , 78 , 6 , 36 , 78 , 50 , 78 , 18 , 78 , 19 , 7 , 23 , 8
3386
3387 ]
3388 ]
3389 end
3390 end
3391