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