parser: remove useless methods from generated parser code
[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 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(loc: Location)
154 do
155 _text = once "fun"
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 TKwinit
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 "init"
182 _location = loc
183 end
184 end
185
186 redef class TKwredef
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 "redef"
195 _location = loc
196 end
197 end
198
199 redef class TKwis
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 "is"
208 _location = loc
209 end
210 end
211
212 redef class TKwdo
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 "do"
221 _location = loc
222 end
223 end
224
225 redef class TKwreadable
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 "readable"
234 _location = loc
235 end
236 end
237
238 redef class TKwwritable
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 "writable"
247 _location = loc
248 end
249 end
250
251 redef class TKwvar
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 "var"
260 _location = loc
261 end
262 end
263
264 redef class TKwintern
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 "intern"
273 _location = loc
274 end
275 end
276
277 redef class TKwextern
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 "extern"
286 _location = loc
287 end
288 end
289
290 redef class TKwprotected
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 "protected"
299 _location = loc
300 end
301 end
302
303 redef class TKwprivate
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 "private"
312 _location = loc
313 end
314 end
315
316 redef class TKwintrude
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 "intrude"
325 _location = loc
326 end
327 end
328
329 redef class TKwif
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 "if"
338 _location = loc
339 end
340 end
341
342 redef class TKwthen
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 "then"
351 _location = loc
352 end
353 end
354
355 redef class TKwelse
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 "else"
364 _location = loc
365 end
366 end
367
368 redef class TKwwhile
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 "while"
377 _location = loc
378 end
379 end
380
381 redef class TKwloop
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 "loop"
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 TKwnullable
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 "nullable"
650 _location = loc
651 end
652 end
653
654 redef class TKwisset
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 "isset"
663 _location = loc
664 end
665 end
666
667 redef class TKwlabel
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 "label"
676 _location = loc
677 end
678 end
679
680 redef class TOpar
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 "("
689 _location = loc
690 end
691 end
692
693 redef class TCpar
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 TObra
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 TCbra
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 TComma
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 TColumn
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 TQuad
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 TAssign
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 TPluseq
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 TMinuseq
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 TDotdotdot
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 TDotdot
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 TDot
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 TPlus
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 TMinus
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 TStar
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 TSlash
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 TPercent
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 TEq
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 TNe
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 TLt
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 TLe
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 TGt
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 TGe
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 TStarship
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 TBang
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 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 loop
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 loop
1289 var old_state = dfa_state
1290 if dfa_state < -1 then
1291 old_state = -2 - dfa_state
1292 end
1293
1294 dfa_state = -1
1295
1296 var tmp0 = goto_table[old_state]
1297 var low = 0
1298 var high = tmp0.length - 1
1299
1300 if high >= 0 then
1301 var tmp1 = tmp0.intern_items
1302 while low <= high do
1303 var middle = (low + high) / 2
1304 var tmp2 = tmp1[middle].intern_items
1305
1306 if c < tmp2[0] then
1307 high = middle - 1
1308 else if c > tmp2[1] then
1309 low = middle + 1
1310 else
1311 dfa_state = tmp2[2]
1312 break
1313 end
1314 end
1315 end
1316 if dfa_state > -2 then break
1317 end
1318
1319 _cr = cr
1320 _line = line
1321 _pos = pos
1322 else
1323 dfa_state = -1
1324 end
1325
1326 if dfa_state >= 0 then
1327 if accept[dfa_state] != -1 then
1328 accept_state = dfa_state
1329 accept_token = accept[dfa_state]
1330 accept_length = text.length
1331 accept_pos = _pos
1332 accept_line = _line
1333 end
1334 else
1335 if accept_state != -1 then
1336 if accept_token == 0 then
1337 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1338 push_back(accept_length)
1339 _pos = accept_pos
1340 _line = accept_line
1341 return null
1342 end
1343 if accept_token == 1 then
1344 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1345 var token_text = text.substring(0, accept_length)
1346 var token = new TEol.init_tk(token_text, location)
1347 push_back(accept_length)
1348 _pos = accept_pos
1349 _line = accept_line
1350 return token
1351 end
1352 if accept_token == 2 then
1353 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1354 var token_text = text.substring(0, accept_length)
1355 var token = new TComment.init_tk(token_text, location)
1356 push_back(accept_length)
1357 _pos = accept_pos
1358 _line = accept_line
1359 return token
1360 end
1361 if accept_token == 3 then
1362 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1363 var token = new TKwpackage.init_tk(location)
1364 push_back(accept_length)
1365 _pos = accept_pos
1366 _line = accept_line
1367 return token
1368 end
1369 if accept_token == 4 then
1370 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1371 var token = new TKwimport.init_tk(location)
1372 push_back(accept_length)
1373 _pos = accept_pos
1374 _line = accept_line
1375 return token
1376 end
1377 if accept_token == 5 then
1378 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1379 var token = new TKwclass.init_tk(location)
1380 push_back(accept_length)
1381 _pos = accept_pos
1382 _line = accept_line
1383 return token
1384 end
1385 if accept_token == 6 then
1386 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1387 var token = new TKwabstract.init_tk(location)
1388 push_back(accept_length)
1389 _pos = accept_pos
1390 _line = accept_line
1391 return token
1392 end
1393 if accept_token == 7 then
1394 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1395 var token = new TKwinterface.init_tk(location)
1396 push_back(accept_length)
1397 _pos = accept_pos
1398 _line = accept_line
1399 return token
1400 end
1401 if accept_token == 8 then
1402 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1403 var token = new TKwuniversal.init_tk(location)
1404 push_back(accept_length)
1405 _pos = accept_pos
1406 _line = accept_line
1407 return token
1408 end
1409 if accept_token == 9 then
1410 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1411 var token = new TKwspecial.init_tk(location)
1412 push_back(accept_length)
1413 _pos = accept_pos
1414 _line = accept_line
1415 return token
1416 end
1417 if accept_token == 10 then
1418 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1419 var token = new TKwend.init_tk(location)
1420 push_back(accept_length)
1421 _pos = accept_pos
1422 _line = accept_line
1423 return token
1424 end
1425 if accept_token == 11 then
1426 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1427 var token = new TKwmeth.init_tk(location)
1428 push_back(accept_length)
1429 _pos = accept_pos
1430 _line = accept_line
1431 return token
1432 end
1433 if accept_token == 12 then
1434 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1435 var token = new TKwtype.init_tk(location)
1436 push_back(accept_length)
1437 _pos = accept_pos
1438 _line = accept_line
1439 return token
1440 end
1441 if accept_token == 13 then
1442 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1443 var token = new TKwinit.init_tk(location)
1444 push_back(accept_length)
1445 _pos = accept_pos
1446 _line = accept_line
1447 return token
1448 end
1449 if accept_token == 14 then
1450 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1451 var token = new TKwredef.init_tk(location)
1452 push_back(accept_length)
1453 _pos = accept_pos
1454 _line = accept_line
1455 return token
1456 end
1457 if accept_token == 15 then
1458 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1459 var token = new TKwis.init_tk(location)
1460 push_back(accept_length)
1461 _pos = accept_pos
1462 _line = accept_line
1463 return token
1464 end
1465 if accept_token == 16 then
1466 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1467 var token = new TKwdo.init_tk(location)
1468 push_back(accept_length)
1469 _pos = accept_pos
1470 _line = accept_line
1471 return token
1472 end
1473 if accept_token == 17 then
1474 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1475 var token = new TKwreadable.init_tk(location)
1476 push_back(accept_length)
1477 _pos = accept_pos
1478 _line = accept_line
1479 return token
1480 end
1481 if accept_token == 18 then
1482 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1483 var token = new TKwwritable.init_tk(location)
1484 push_back(accept_length)
1485 _pos = accept_pos
1486 _line = accept_line
1487 return token
1488 end
1489 if accept_token == 19 then
1490 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1491 var token = new TKwvar.init_tk(location)
1492 push_back(accept_length)
1493 _pos = accept_pos
1494 _line = accept_line
1495 return token
1496 end
1497 if accept_token == 20 then
1498 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1499 var token = new TKwintern.init_tk(location)
1500 push_back(accept_length)
1501 _pos = accept_pos
1502 _line = accept_line
1503 return token
1504 end
1505 if accept_token == 21 then
1506 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1507 var token = new TKwextern.init_tk(location)
1508 push_back(accept_length)
1509 _pos = accept_pos
1510 _line = accept_line
1511 return token
1512 end
1513 if accept_token == 22 then
1514 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1515 var token = new TKwprotected.init_tk(location)
1516 push_back(accept_length)
1517 _pos = accept_pos
1518 _line = accept_line
1519 return token
1520 end
1521 if accept_token == 23 then
1522 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1523 var token = new TKwprivate.init_tk(location)
1524 push_back(accept_length)
1525 _pos = accept_pos
1526 _line = accept_line
1527 return token
1528 end
1529 if accept_token == 24 then
1530 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1531 var token = new TKwintrude.init_tk(location)
1532 push_back(accept_length)
1533 _pos = accept_pos
1534 _line = accept_line
1535 return token
1536 end
1537 if accept_token == 25 then
1538 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1539 var token = new TKwif.init_tk(location)
1540 push_back(accept_length)
1541 _pos = accept_pos
1542 _line = accept_line
1543 return token
1544 end
1545 if accept_token == 26 then
1546 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1547 var token = new TKwthen.init_tk(location)
1548 push_back(accept_length)
1549 _pos = accept_pos
1550 _line = accept_line
1551 return token
1552 end
1553 if accept_token == 27 then
1554 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1555 var token = new TKwelse.init_tk(location)
1556 push_back(accept_length)
1557 _pos = accept_pos
1558 _line = accept_line
1559 return token
1560 end
1561 if accept_token == 28 then
1562 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1563 var token = new TKwwhile.init_tk(location)
1564 push_back(accept_length)
1565 _pos = accept_pos
1566 _line = accept_line
1567 return token
1568 end
1569 if accept_token == 29 then
1570 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1571 var token = new TKwloop.init_tk(location)
1572 push_back(accept_length)
1573 _pos = accept_pos
1574 _line = accept_line
1575 return token
1576 end
1577 if accept_token == 30 then
1578 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1579 var token = new TKwfor.init_tk(location)
1580 push_back(accept_length)
1581 _pos = accept_pos
1582 _line = accept_line
1583 return token
1584 end
1585 if accept_token == 31 then
1586 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1587 var token = new TKwin.init_tk(location)
1588 push_back(accept_length)
1589 _pos = accept_pos
1590 _line = accept_line
1591 return token
1592 end
1593 if accept_token == 32 then
1594 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1595 var token = new TKwand.init_tk(location)
1596 push_back(accept_length)
1597 _pos = accept_pos
1598 _line = accept_line
1599 return token
1600 end
1601 if accept_token == 33 then
1602 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1603 var token = new TKwor.init_tk(location)
1604 push_back(accept_length)
1605 _pos = accept_pos
1606 _line = accept_line
1607 return token
1608 end
1609 if accept_token == 34 then
1610 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1611 var token = new TKwnot.init_tk(location)
1612 push_back(accept_length)
1613 _pos = accept_pos
1614 _line = accept_line
1615 return token
1616 end
1617 if accept_token == 35 then
1618 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1619 var token = new TKwreturn.init_tk(location)
1620 push_back(accept_length)
1621 _pos = accept_pos
1622 _line = accept_line
1623 return token
1624 end
1625 if accept_token == 36 then
1626 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1627 var token = new TKwcontinue.init_tk(location)
1628 push_back(accept_length)
1629 _pos = accept_pos
1630 _line = accept_line
1631 return token
1632 end
1633 if accept_token == 37 then
1634 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1635 var token = new TKwbreak.init_tk(location)
1636 push_back(accept_length)
1637 _pos = accept_pos
1638 _line = accept_line
1639 return token
1640 end
1641 if accept_token == 38 then
1642 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1643 var token = new TKwabort.init_tk(location)
1644 push_back(accept_length)
1645 _pos = accept_pos
1646 _line = accept_line
1647 return token
1648 end
1649 if accept_token == 39 then
1650 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1651 var token = new TKwassert.init_tk(location)
1652 push_back(accept_length)
1653 _pos = accept_pos
1654 _line = accept_line
1655 return token
1656 end
1657 if accept_token == 40 then
1658 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1659 var token = new TKwnew.init_tk(location)
1660 push_back(accept_length)
1661 _pos = accept_pos
1662 _line = accept_line
1663 return token
1664 end
1665 if accept_token == 41 then
1666 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1667 var token = new TKwisa.init_tk(location)
1668 push_back(accept_length)
1669 _pos = accept_pos
1670 _line = accept_line
1671 return token
1672 end
1673 if accept_token == 42 then
1674 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1675 var token = new TKwonce.init_tk(location)
1676 push_back(accept_length)
1677 _pos = accept_pos
1678 _line = accept_line
1679 return token
1680 end
1681 if accept_token == 43 then
1682 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1683 var token = new TKwsuper.init_tk(location)
1684 push_back(accept_length)
1685 _pos = accept_pos
1686 _line = accept_line
1687 return token
1688 end
1689 if accept_token == 44 then
1690 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1691 var token = new TKwself.init_tk(location)
1692 push_back(accept_length)
1693 _pos = accept_pos
1694 _line = accept_line
1695 return token
1696 end
1697 if accept_token == 45 then
1698 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1699 var token = new TKwtrue.init_tk(location)
1700 push_back(accept_length)
1701 _pos = accept_pos
1702 _line = accept_line
1703 return token
1704 end
1705 if accept_token == 46 then
1706 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1707 var token = new TKwfalse.init_tk(location)
1708 push_back(accept_length)
1709 _pos = accept_pos
1710 _line = accept_line
1711 return token
1712 end
1713 if accept_token == 47 then
1714 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1715 var token = new TKwnull.init_tk(location)
1716 push_back(accept_length)
1717 _pos = accept_pos
1718 _line = accept_line
1719 return token
1720 end
1721 if accept_token == 48 then
1722 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1723 var token = new TKwas.init_tk(location)
1724 push_back(accept_length)
1725 _pos = accept_pos
1726 _line = accept_line
1727 return token
1728 end
1729 if accept_token == 49 then
1730 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1731 var token = new TKwnullable.init_tk(location)
1732 push_back(accept_length)
1733 _pos = accept_pos
1734 _line = accept_line
1735 return token
1736 end
1737 if accept_token == 50 then
1738 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1739 var token = new TKwisset.init_tk(location)
1740 push_back(accept_length)
1741 _pos = accept_pos
1742 _line = accept_line
1743 return token
1744 end
1745 if accept_token == 51 then
1746 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1747 var token = new TKwlabel.init_tk(location)
1748 push_back(accept_length)
1749 _pos = accept_pos
1750 _line = accept_line
1751 return token
1752 end
1753 if accept_token == 52 then
1754 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1755 var token = new TOpar.init_tk(location)
1756 push_back(accept_length)
1757 _pos = accept_pos
1758 _line = accept_line
1759 return token
1760 end
1761 if accept_token == 53 then
1762 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1763 var token = new TCpar.init_tk(location)
1764 push_back(accept_length)
1765 _pos = accept_pos
1766 _line = accept_line
1767 return token
1768 end
1769 if accept_token == 54 then
1770 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1771 var token = new TObra.init_tk(location)
1772 push_back(accept_length)
1773 _pos = accept_pos
1774 _line = accept_line
1775 return token
1776 end
1777 if accept_token == 55 then
1778 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1779 var token = new TCbra.init_tk(location)
1780 push_back(accept_length)
1781 _pos = accept_pos
1782 _line = accept_line
1783 return token
1784 end
1785 if accept_token == 56 then
1786 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1787 var token = new TComma.init_tk(location)
1788 push_back(accept_length)
1789 _pos = accept_pos
1790 _line = accept_line
1791 return token
1792 end
1793 if accept_token == 57 then
1794 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1795 var token = new TColumn.init_tk(location)
1796 push_back(accept_length)
1797 _pos = accept_pos
1798 _line = accept_line
1799 return token
1800 end
1801 if accept_token == 58 then
1802 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1803 var token = new TQuad.init_tk(location)
1804 push_back(accept_length)
1805 _pos = accept_pos
1806 _line = accept_line
1807 return token
1808 end
1809 if accept_token == 59 then
1810 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1811 var token = new TAssign.init_tk(location)
1812 push_back(accept_length)
1813 _pos = accept_pos
1814 _line = accept_line
1815 return token
1816 end
1817 if accept_token == 60 then
1818 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1819 var token = new TPluseq.init_tk(location)
1820 push_back(accept_length)
1821 _pos = accept_pos
1822 _line = accept_line
1823 return token
1824 end
1825 if accept_token == 61 then
1826 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1827 var token = new TMinuseq.init_tk(location)
1828 push_back(accept_length)
1829 _pos = accept_pos
1830 _line = accept_line
1831 return token
1832 end
1833 if accept_token == 62 then
1834 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1835 var token = new TDotdotdot.init_tk(location)
1836 push_back(accept_length)
1837 _pos = accept_pos
1838 _line = accept_line
1839 return token
1840 end
1841 if accept_token == 63 then
1842 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1843 var token = new TDotdot.init_tk(location)
1844 push_back(accept_length)
1845 _pos = accept_pos
1846 _line = accept_line
1847 return token
1848 end
1849 if accept_token == 64 then
1850 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1851 var token = new TDot.init_tk(location)
1852 push_back(accept_length)
1853 _pos = accept_pos
1854 _line = accept_line
1855 return token
1856 end
1857 if accept_token == 65 then
1858 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1859 var token = new TPlus.init_tk(location)
1860 push_back(accept_length)
1861 _pos = accept_pos
1862 _line = accept_line
1863 return token
1864 end
1865 if accept_token == 66 then
1866 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1867 var token = new TMinus.init_tk(location)
1868 push_back(accept_length)
1869 _pos = accept_pos
1870 _line = accept_line
1871 return token
1872 end
1873 if accept_token == 67 then
1874 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1875 var token = new TStar.init_tk(location)
1876 push_back(accept_length)
1877 _pos = accept_pos
1878 _line = accept_line
1879 return token
1880 end
1881 if accept_token == 68 then
1882 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1883 var token = new TSlash.init_tk(location)
1884 push_back(accept_length)
1885 _pos = accept_pos
1886 _line = accept_line
1887 return token
1888 end
1889 if accept_token == 69 then
1890 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1891 var token = new TPercent.init_tk(location)
1892 push_back(accept_length)
1893 _pos = accept_pos
1894 _line = accept_line
1895 return token
1896 end
1897 if accept_token == 70 then
1898 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1899 var token = new TEq.init_tk(location)
1900 push_back(accept_length)
1901 _pos = accept_pos
1902 _line = accept_line
1903 return token
1904 end
1905 if accept_token == 71 then
1906 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1907 var token = new TNe.init_tk(location)
1908 push_back(accept_length)
1909 _pos = accept_pos
1910 _line = accept_line
1911 return token
1912 end
1913 if accept_token == 72 then
1914 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1915 var token = new TLt.init_tk(location)
1916 push_back(accept_length)
1917 _pos = accept_pos
1918 _line = accept_line
1919 return token
1920 end
1921 if accept_token == 73 then
1922 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1923 var token = new TLe.init_tk(location)
1924 push_back(accept_length)
1925 _pos = accept_pos
1926 _line = accept_line
1927 return token
1928 end
1929 if accept_token == 74 then
1930 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1931 var token = new TGt.init_tk(location)
1932 push_back(accept_length)
1933 _pos = accept_pos
1934 _line = accept_line
1935 return token
1936 end
1937 if accept_token == 75 then
1938 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1939 var token = new TGe.init_tk(location)
1940 push_back(accept_length)
1941 _pos = accept_pos
1942 _line = accept_line
1943 return token
1944 end
1945 if accept_token == 76 then
1946 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1947 var token = new TStarship.init_tk(location)
1948 push_back(accept_length)
1949 _pos = accept_pos
1950 _line = accept_line
1951 return token
1952 end
1953 if accept_token == 77 then
1954 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1955 var token = new TBang.init_tk(location)
1956 push_back(accept_length)
1957 _pos = accept_pos
1958 _line = accept_line
1959 return token
1960 end
1961 if accept_token == 78 then
1962 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1963 var token_text = text.substring(0, accept_length)
1964 var token = new TClassid.init_tk(token_text, location)
1965 push_back(accept_length)
1966 _pos = accept_pos
1967 _line = accept_line
1968 return token
1969 end
1970 if accept_token == 79 then
1971 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1972 var token_text = text.substring(0, accept_length)
1973 var token = new TId.init_tk(token_text, location)
1974 push_back(accept_length)
1975 _pos = accept_pos
1976 _line = accept_line
1977 return token
1978 end
1979 if accept_token == 80 then
1980 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1981 var token_text = text.substring(0, accept_length)
1982 var token = new TAttrid.init_tk(token_text, location)
1983 push_back(accept_length)
1984 _pos = accept_pos
1985 _line = accept_line
1986 return token
1987 end
1988 if accept_token == 81 then
1989 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1990 var token_text = text.substring(0, accept_length)
1991 var token = new TNumber.init_tk(token_text, location)
1992 push_back(accept_length)
1993 _pos = accept_pos
1994 _line = accept_line
1995 return token
1996 end
1997 if accept_token == 82 then
1998 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
1999 var token_text = text.substring(0, accept_length)
2000 var token = new TFloat.init_tk(token_text, location)
2001 push_back(accept_length)
2002 _pos = accept_pos
2003 _line = accept_line
2004 return token
2005 end
2006 if accept_token == 83 then
2007 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
2008 var token_text = text.substring(0, accept_length)
2009 var token = new TChar.init_tk(token_text, location)
2010 push_back(accept_length)
2011 _pos = accept_pos
2012 _line = accept_line
2013 return token
2014 end
2015 if accept_token == 84 then
2016 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
2017 var token_text = text.substring(0, accept_length)
2018 var token = new TString.init_tk(token_text, location)
2019 push_back(accept_length)
2020 _pos = accept_pos
2021 _line = accept_line
2022 return token
2023 end
2024 if accept_token == 85 then
2025 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
2026 var token_text = text.substring(0, accept_length)
2027 var token = new TStartString.init_tk(token_text, location)
2028 push_back(accept_length)
2029 _pos = accept_pos
2030 _line = accept_line
2031 return token
2032 end
2033 if accept_token == 86 then
2034 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
2035 var token_text = text.substring(0, accept_length)
2036 var token = new TMidString.init_tk(token_text, location)
2037 push_back(accept_length)
2038 _pos = accept_pos
2039 _line = accept_line
2040 return token
2041 end
2042 if accept_token == 87 then
2043 var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
2044 var token_text = text.substring(0, accept_length)
2045 var token = new TEndString.init_tk(token_text, location)
2046 push_back(accept_length)
2047 _pos = accept_pos
2048 _line = accept_line
2049 return token
2050 end
2051 else
2052 var location = new Location(_filename, start_line + 1, start_line + 1, start_pos + 1, start_pos + 1)
2053 if text.length > 0 then
2054 var token = new AError.init_error("Syntax error: unknown token {text}.", location)
2055 return token
2056 else
2057 var token = new EOF(location)
2058 return token
2059 end
2060 end
2061 end
2062 end
2063 return null
2064 end
2065
2066 # Read the next character.
2067 # The character is read from the stream of from the pushback buffer.
2068 private fun get_char: Int
2069 do
2070 if _eof then
2071 return -1
2072 end
2073
2074 var result: Int
2075
2076 var sp = _stream_pos
2077 if sp >= 0 then
2078 var res = _stream_buf[_stream_pos]
2079 _stream_pos = sp - 1
2080 result = res.ascii
2081 else
2082 result = _stream.read_char
2083 end
2084
2085 if result == -1 then
2086 _eof = true
2087 end
2088
2089 return result
2090 end
2091
2092 # Unread some characters.
2093 # Unread characters are stored in the pushback buffer.
2094 private fun push_back(accept_length: Int)
2095 do
2096 var length = _text.length
2097 var i = length - 1
2098 while i >= accept_length do
2099 _eof = false
2100 _stream_pos = _stream_pos + 1
2101 _stream_buf[_stream_pos] = _text[i]
2102 i = i - 1
2103 end
2104 end
2105
2106 var _goto_table: Array[Array[Array[Array[Int]]]]
2107 private fun build_goto_table
2108 do
2109 _goto_table = once [
2110 [
2111 [
2112 [9, 9, 1],
2113 [10, 10, 2],
2114 [13, 13, 3],
2115 [32, 32, 4],
2116 [33, 33, 5],
2117 [34, 34, 6],
2118 [35, 35, 7],
2119 [37, 37, 8],
2120 [39, 39, 9],
2121 [40, 40, 10],
2122 [41, 41, 11],
2123 [42, 42, 12],
2124 [43, 43, 13],
2125 [44, 44, 14],
2126 [45, 45, 15],
2127 [46, 46, 16],
2128 [47, 47, 17],
2129 [48, 57, 18],
2130 [58, 58, 19],
2131 [60, 60, 20],
2132 [61, 61, 21],
2133 [62, 62, 22],
2134 [65, 90, 23],
2135 [91, 91, 24],
2136 [93, 93, 25],
2137 [95, 95, 26],
2138 [97, 97, 27],
2139 [98, 98, 28],
2140 [99, 99, 29],
2141 [100, 100, 30],
2142 [101, 101, 31],
2143 [102, 102, 32],
2144 [103, 104, 33],
2145 [105, 105, 34],
2146 [106, 107, 33],
2147 [108, 108, 35],
2148 [109, 109, 33],
2149 [110, 110, 36],
2150 [111, 111, 37],
2151 [112, 112, 38],
2152 [113, 113, 33],
2153 [114, 114, 39],
2154 [115, 115, 40],
2155 [116, 116, 41],
2156 [117, 117, 42],
2157 [118, 118, 43],
2158 [119, 119, 44],
2159 [120, 122, 33],
2160 [125, 125, 45]
2161 ],
2162 [
2163 [9, 9, 1],
2164 [32, 32, 4]
2165 ],
2166 nil_array,
2167 [
2168 [10, 10, 46]
2169 ],
2170 [
2171 [9, 32, -3]
2172 ],
2173 [
2174 [61, 61, 47]
2175 ],
2176 [
2177 [0, 9, 48],
2178 [11, 12, 48],
2179 [14, 33, 48],
2180 [34, 34, 49],
2181 [35, 91, 48],
2182 [92, 92, 50],
2183 [93, 122, 48],
2184 [123, 123, 51],
2185 [124, 255, 48]
2186 ],
2187 [
2188 [0, 9, 52],
2189 [10, 10, 53],
2190 [11, 12, 52],
2191 [13, 13, 54],
2192 [14, 255, 52]
2193 ],
2194 nil_array,
2195 [
2196 [0, 9, 55],
2197 [11, 12, 55],
2198 [14, 38, 55],
2199 [39, 39, 56],
2200 [40, 255, 55]
2201 ],
2202 nil_array,
2203 nil_array,
2204 nil_array,
2205 [
2206 [61, 61, 57]
2207 ],
2208 nil_array,
2209 [
2210 [61, 61, 58]
2211 ],
2212 [
2213 [46, 46, 59],
2214 [48, 57, 60]
2215 ],
2216 nil_array,
2217 [
2218 [46, 46, 61],
2219 [48, 57, 18]
2220 ],
2221 [
2222 [58, 58, 62]
2223 ],
2224 [
2225 [61, 61, 63]
2226 ],
2227 [
2228 [61, 61, 64]
2229 ],
2230 [
2231 [61, 61, 65]
2232 ],
2233 [
2234 [48, 57, 66],
2235 [65, 90, 67],
2236 [95, 95, 68],
2237 [97, 122, 69]
2238 ],
2239 nil_array,
2240 nil_array,
2241 [
2242 [97, 122, 70]
2243 ],
2244 [
2245 [48, 57, 71],
2246 [65, 90, 72],
2247 [95, 95, 73],
2248 [97, 97, 74],
2249 [98, 98, 75],
2250 [99, 109, 74],
2251 [110, 110, 76],
2252 [111, 114, 74],
2253 [115, 115, 77],
2254 [116, 122, 74]
2255 ],
2256 [
2257 [48, 95, -29],
2258 [97, 113, 74],
2259 [114, 114, 78],
2260 [115, 122, 74]
2261 ],
2262 [
2263 [48, 95, -29],
2264 [97, 107, 74],
2265 [108, 108, 79],
2266 [109, 110, 74],
2267 [111, 111, 80],
2268 [112, 122, 74]
2269 ],
2270 [
2271 [48, 95, -29],
2272 [97, 110, 74],
2273 [111, 111, 81],
2274 [112, 122, 74]
2275 ],
2276 [
2277 [48, 107, -31],
2278 [108, 108, 82],
2279 [109, 109, 74],
2280 [110, 110, 83],
2281 [111, 119, 74],
2282 [120, 120, 84],
2283 [121, 122, 74]
2284 ],
2285 [
2286 [48, 95, -29],
2287 [97, 97, 85],
2288 [98, 110, 74],
2289 [111, 111, 86],
2290 [112, 116, 74],
2291 [117, 117, 87],
2292 [118, 122, 74]
2293 ],
2294 [
2295 [48, 95, -29],
2296 [97, 122, 74]
2297 ],
2298 [
2299 [48, 95, -29],
2300 [97, 101, 74],
2301 [102, 102, 88],
2302 [103, 108, 74],
2303 [109, 109, 89],
2304 [110, 110, 90],
2305 [111, 114, 74],
2306 [115, 115, 91],
2307 [116, 122, 74]
2308 ],
2309 [
2310 [48, 95, -29],
2311 [97, 97, 92],
2312 [98, 110, 74],
2313 [111, 111, 93],
2314 [112, 122, 74]
2315 ],
2316 [
2317 [48, 95, -29],
2318 [97, 100, 74],
2319 [101, 101, 94],
2320 [102, 110, 74],
2321 [111, 111, 95],
2322 [112, 116, 74],
2323 [117, 117, 96],
2324 [118, 122, 74]
2325 ],
2326 [
2327 [48, 95, -29],
2328 [97, 109, 74],
2329 [110, 110, 97],
2330 [111, 113, 74],
2331 [114, 114, 98],
2332 [115, 122, 74]
2333 ],
2334 [
2335 [48, 95, -29],
2336 [97, 97, 99],
2337 [98, 113, 74],
2338 [114, 114, 100],
2339 [115, 122, 74]
2340 ],
2341 [
2342 [48, 100, -38],
2343 [101, 101, 101],
2344 [102, 122, 74]
2345 ],
2346 [
2347 [48, 100, -38],
2348 [101, 101, 102],
2349 [102, 111, 74],
2350 [112, 112, 103],
2351 [113, 116, 74],
2352 [117, 117, 104],
2353 [118, 122, 74]
2354 ],
2355 [
2356 [48, 95, -29],
2357 [97, 103, 74],
2358 [104, 104, 105],
2359 [105, 113, 74],
2360 [114, 114, 106],
2361 [115, 120, 74],
2362 [121, 121, 107],
2363 [122, 122, 74]
2364 ],
2365 [
2366 [48, 109, -39],
2367 [110, 110, 108],
2368 [111, 122, 74]
2369 ],
2370 [
2371 [48, 95, -29],
2372 [97, 97, 109],
2373 [98, 122, 74]
2374 ],
2375 [
2376 [48, 103, -43],
2377 [104, 104, 110],
2378 [105, 113, 74],
2379 [114, 114, 111],
2380 [115, 122, 74]
2381 ],
2382 [
2383 [0, 9, 112],
2384 [11, 12, 112],
2385 [14, 33, 112],
2386 [34, 34, 113],
2387 [35, 91, 112],
2388 [92, 92, 114],
2389 [93, 122, 112],
2390 [123, 123, 115],
2391 [124, 255, 112]
2392 ],
2393 nil_array,
2394 nil_array,
2395 [
2396 [0, 255, -8]
2397 ],
2398 nil_array,
2399 [
2400 [0, 9, 116],
2401 [11, 12, 116],
2402 [14, 255, 116]
2403 ],
2404 nil_array,
2405 [
2406 [0, 255, -9]
2407 ],
2408 nil_array,
2409 [
2410 [10, 10, 117]
2411 ],
2412 [
2413 [0, 255, -11]
2414 ],
2415 nil_array,
2416 nil_array,
2417 nil_array,
2418 [
2419 [46, 46, 118]
2420 ],
2421 [
2422 [48, 57, 60]
2423 ],
2424 [
2425 [48, 57, 60]
2426 ],
2427 nil_array,
2428 [
2429 [62, 62, 119]
2430 ],
2431 nil_array,
2432 nil_array,
2433 [
2434 [48, 122, -25]
2435 ],
2436 [
2437 [48, 122, -25]
2438 ],
2439 [
2440 [48, 122, -25]
2441 ],
2442 [
2443 [48, 122, -25]
2444 ],
2445 [
2446 [48, 57, 120],
2447 [65, 90, 121],
2448 [95, 95, 122],
2449 [97, 122, 123]
2450 ],
2451 [
2452 [48, 122, -35]
2453 ],
2454 [
2455 [48, 122, -35]
2456 ],
2457 [
2458 [48, 122, -35]
2459 ],
2460 [
2461 [48, 122, -35]
2462 ],
2463 [
2464 [48, 110, -32],
2465 [111, 111, 124],
2466 [112, 114, 74],
2467 [115, 115, 125],
2468 [116, 122, 74]
2469 ],
2470 [
2471 [48, 95, -29],
2472 [97, 99, 74],
2473 [100, 100, 126],
2474 [101, 122, 74]
2475 ],
2476 [
2477 [48, 95, -29],
2478 [97, 114, 74],
2479 [115, 115, 127],
2480 [116, 122, 74]
2481 ],
2482 [
2483 [48, 100, -38],
2484 [101, 101, 128],
2485 [102, 122, 74]
2486 ],
2487 [
2488 [48, 95, -29],
2489 [97, 97, 129],
2490 [98, 122, 74]
2491 ],
2492 [
2493 [48, 109, -39],
2494 [110, 110, 130],
2495 [111, 122, 74]
2496 ],
2497 [
2498 [48, 122, -35]
2499 ],
2500 [
2501 [48, 114, -79],
2502 [115, 115, 131],
2503 [116, 122, 74]
2504 ],
2505 [
2506 [48, 99, -78],
2507 [100, 100, 132],
2508 [101, 122, 74]
2509 ],
2510 [
2511 [48, 95, -29],
2512 [97, 115, 74],
2513 [116, 116, 133],
2514 [117, 122, 74]
2515 ],
2516 [
2517 [48, 107, -31],
2518 [108, 108, 134],
2519 [109, 122, 74]
2520 ],
2521 [
2522 [48, 113, -30],
2523 [114, 114, 135],
2524 [115, 122, 74]
2525 ],
2526 [
2527 [48, 109, -39],
2528 [110, 110, 136],
2529 [111, 122, 74]
2530 ],
2531 [
2532 [48, 122, -35]
2533 ],
2534 [
2535 [48, 95, -29],
2536 [97, 111, 74],
2537 [112, 112, 137],
2538 [113, 122, 74]
2539 ],
2540 [
2541 [48, 95, -29],
2542 [97, 104, 74],
2543 [105, 105, 138],
2544 [106, 115, 74],
2545 [116, 116, 139],
2546 [117, 122, 74]
2547 ],
2548 [
2549 [48, 95, -29],
2550 [97, 97, 140],
2551 [98, 114, 74],
2552 [115, 115, 141],
2553 [116, 122, 74]
2554 ],
2555 [
2556 [48, 97, -29],
2557 [98, 98, 142],
2558 [99, 122, 74]
2559 ],
2560 [
2561 [48, 110, -32],
2562 [111, 111, 143],
2563 [112, 122, 74]
2564 ],
2565 [
2566 [48, 95, -29],
2567 [97, 118, 74],
2568 [119, 119, 144],
2569 [120, 122, 74]
2570 ],
2571 [
2572 [48, 115, -86],
2573 [116, 116, 145],
2574 [117, 122, 74]
2575 ],
2576 [
2577 [48, 107, -31],
2578 [108, 108, 146],
2579 [109, 122, 74]
2580 ],
2581 [
2582 [48, 95, -29],
2583 [97, 98, 74],
2584 [99, 99, 147],
2585 [100, 122, 74]
2586 ],
2587 [
2588 [48, 122, -35]
2589 ],
2590 [
2591 [48, 98, -99],
2592 [99, 99, 148],
2593 [100, 122, 74]
2594 ],
2595 [
2596 [48, 104, -92],
2597 [105, 105, 149],
2598 [106, 110, 74],
2599 [111, 111, 150],
2600 [112, 122, 74]
2601 ],
2602 [
2603 [48, 95, -29],
2604 [97, 97, 151],
2605 [98, 99, 74],
2606 [100, 100, 152],
2607 [101, 115, 74],
2608 [116, 116, 153],
2609 [117, 122, 74]
2610 ],
2611 [
2612 [48, 107, -31],
2613 [108, 108, 154],
2614 [109, 122, 74]
2615 ],
2616 [
2617 [48, 100, -38],
2618 [101, 101, 155],
2619 [102, 122, 74]
2620 ],
2621 [
2622 [48, 111, -91],
2623 [112, 112, 156],
2624 [113, 122, 74]
2625 ],
2626 [
2627 [48, 100, -38],
2628 [101, 101, 157],
2629 [102, 122, 74]
2630 ],
2631 [
2632 [48, 95, -29],
2633 [97, 116, 74],
2634 [117, 117, 158],
2635 [118, 122, 74]
2636 ],
2637 [
2638 [48, 111, -91],
2639 [112, 112, 159],
2640 [113, 122, 74]
2641 ],
2642 [
2643 [48, 104, -92],
2644 [105, 105, 160],
2645 [106, 122, 74]
2646 ],
2647 [
2648 [48, 113, -30],
2649 [114, 114, 161],
2650 [115, 122, 74]
2651 ],
2652 [
2653 [48, 104, -92],
2654 [105, 105, 162],
2655 [106, 122, 74]
2656 ],
2657 [
2658 [48, 104, -92],
2659 [105, 105, 163],
2660 [106, 122, 74]
2661 ],
2662 [
2663 [0, 255, -47]
2664 ],
2665 nil_array,
2666 [
2667 [0, 9, 164],
2668 [11, 12, 164],
2669 [14, 255, 164]
2670 ],
2671 nil_array,
2672 [
2673 [0, 255, -8]
2674 ],
2675 nil_array,
2676 nil_array,
2677 nil_array,
2678 [
2679 [48, 122, -72]
2680 ],
2681 [
2682 [48, 122, -72]
2683 ],
2684 [
2685 [48, 122, -72]
2686 ],
2687 [
2688 [48, 122, -72]
2689 ],
2690 [
2691 [48, 113, -30],
2692 [114, 114, 165],
2693 [115, 122, 74]
2694 ],
2695 [
2696 [48, 115, -86],
2697 [116, 116, 166],
2698 [117, 122, 74]
2699 ],
2700 [
2701 [48, 122, -35]
2702 ],
2703 [
2704 [48, 100, -38],
2705 [101, 101, 167],
2706 [102, 122, 74]
2707 ],
2708 [
2709 [48, 95, -29],
2710 [97, 97, 168],
2711 [98, 122, 74]
2712 ],
2713 [
2714 [48, 114, -79],
2715 [115, 115, 169],
2716 [116, 122, 74]
2717 ],
2718 [
2719 [48, 115, -86],
2720 [116, 116, 170],
2721 [117, 122, 74]
2722 ],
2723 [
2724 [48, 100, -38],
2725 [101, 101, 171],
2726 [102, 122, 74]
2727 ],
2728 [
2729 [48, 122, -35]
2730 ],
2731 [
2732 [48, 100, -38],
2733 [101, 101, 172],
2734 [102, 122, 74]
2735 ],
2736 [
2737 [48, 114, -79],
2738 [115, 115, 173],
2739 [116, 122, 74]
2740 ],
2741 [
2742 [48, 122, -35]
2743 ],
2744 [
2745 [48, 122, -35]
2746 ],
2747 [
2748 [48, 110, -32],
2749 [111, 111, 174],
2750 [112, 122, 74]
2751 ],
2752 [
2753 [48, 115, -86],
2754 [116, 116, 175],
2755 [117, 122, 74]
2756 ],
2757 [
2758 [48, 100, -38],
2759 [101, 101, 176],
2760 [102, 113, 74],
2761 [114, 114, 177],
2762 [115, 122, 74]
2763 ],
2764 [
2765 [48, 122, -35]
2766 ],
2767 [
2768 [48, 100, -38],
2769 [101, 101, 178],
2770 [102, 122, 74]
2771 ],
2772 [
2773 [48, 100, -38],
2774 [101, 101, 179],
2775 [102, 122, 74]
2776 ],
2777 [
2778 [48, 111, -91],
2779 [112, 112, 180],
2780 [113, 122, 74]
2781 ],
2782 [
2783 [48, 122, -35]
2784 ],
2785 [
2786 [48, 122, -35]
2787 ],
2788 [
2789 [48, 107, -31],
2790 [108, 108, 181],
2791 [109, 122, 74]
2792 ],
2793 [
2794 [48, 100, -38],
2795 [101, 101, 182],
2796 [102, 122, 74]
2797 ],
2798 [
2799 [48, 95, -29],
2800 [97, 106, 74],
2801 [107, 107, 183],
2802 [108, 122, 74]
2803 ],
2804 [
2805 [48, 95, -29],
2806 [97, 117, 74],
2807 [118, 118, 184],
2808 [119, 122, 74]
2809 ],
2810 [
2811 [48, 115, -86],
2812 [116, 116, 185],
2813 [117, 122, 74]
2814 ],
2815 [
2816 [48, 99, -78],
2817 [100, 100, 186],
2818 [101, 122, 74]
2819 ],
2820 [
2821 [48, 100, -38],
2822 [101, 101, 187],
2823 [102, 122, 74]
2824 ],
2825 [
2826 [48, 116, -108],
2827 [117, 117, 188],
2828 [118, 122, 74]
2829 ],
2830 [
2831 [48, 101, -36],
2832 [102, 102, 189],
2833 [103, 122, 74]
2834 ],
2835 [
2836 [48, 98, -99],
2837 [99, 99, 190],
2838 [100, 122, 74]
2839 ],
2840 [
2841 [48, 100, -38],
2842 [101, 101, 191],
2843 [102, 122, 74]
2844 ],
2845 [
2846 [48, 109, -39],
2847 [110, 110, 192],
2848 [111, 122, 74]
2849 ],
2850 [
2851 [48, 100, -38],
2852 [101, 101, 193],
2853 [102, 122, 74]
2854 ],
2855 [
2856 [48, 100, -38],
2857 [101, 101, 194],
2858 [102, 122, 74]
2859 ],
2860 [
2861 [48, 117, -151],
2862 [118, 118, 195],
2863 [119, 122, 74]
2864 ],
2865 [
2866 [48, 122, -35]
2867 ],
2868 [
2869 [48, 107, -31],
2870 [108, 108, 196],
2871 [109, 122, 74]
2872 ],
2873 [
2874 [48, 115, -86],
2875 [116, 116, 197],
2876 [117, 122, 74]
2877 ],
2878 [
2879 [0, 255, -47]
2880 ],
2881 [
2882 [48, 115, -86],
2883 [116, 116, 198],
2884 [117, 122, 74]
2885 ],
2886 [
2887 [48, 113, -30],
2888 [114, 114, 199],
2889 [115, 122, 74]
2890 ],
2891 [
2892 [48, 113, -30],
2893 [114, 114, 200],
2894 [115, 122, 74]
2895 ],
2896 [
2897 [48, 106, -150],
2898 [107, 107, 201],
2899 [108, 122, 74]
2900 ],
2901 [
2902 [48, 114, -79],
2903 [115, 115, 202],
2904 [116, 122, 74]
2905 ],
2906 [
2907 [48, 104, -92],
2908 [105, 105, 203],
2909 [106, 122, 74]
2910 ],
2911 [
2912 [48, 122, -35]
2913 ],
2914 [
2915 [48, 113, -30],
2916 [114, 114, 204],
2917 [115, 122, 74]
2918 ],
2919 [
2920 [48, 100, -38],
2921 [101, 101, 205],
2922 [102, 122, 74]
2923 ],
2924 [
2925 [48, 113, -30],
2926 [114, 114, 206],
2927 [115, 122, 74]
2928 ],
2929 [
2930 [48, 122, -35]
2931 ],
2932 [
2933 [48, 113, -30],
2934 [114, 114, 207],
2935 [115, 122, 74]
2936 ],
2937 [
2938 [48, 116, -108],
2939 [117, 117, 208],
2940 [118, 122, 74]
2941 ],
2942 [
2943 [48, 115, -86],
2944 [116, 116, 209],
2945 [117, 122, 74]
2946 ],
2947 [
2948 [48, 107, -31],
2949 [108, 108, 210],
2950 [109, 122, 74]
2951 ],
2952 [
2953 [48, 122, -35]
2954 ],
2955 [
2956 [48, 95, -29],
2957 [97, 97, 211],
2958 [98, 122, 74]
2959 ],
2960 [
2961 [48, 122, -35]
2962 ],
2963 [
2964 [48, 95, -29],
2965 [97, 97, 212],
2966 [98, 122, 74]
2967 ],
2968 [
2969 [48, 95, -29],
2970 [97, 97, 213],
2971 [98, 122, 74]
2972 ],
2973 [
2974 [48, 100, -38],
2975 [101, 101, 214],
2976 [102, 122, 74]
2977 ],
2978 [
2979 [48, 95, -29],
2980 [97, 97, 215],
2981 [98, 122, 74]
2982 ],
2983 [
2984 [48, 101, -36],
2985 [102, 102, 216],
2986 [103, 122, 74]
2987 ],
2988 [
2989 [48, 113, -30],
2990 [114, 114, 217],
2991 [115, 122, 74]
2992 ],
2993 [
2994 [48, 122, -35]
2995 ],
2996 [
2997 [48, 104, -92],
2998 [105, 105, 218],
2999 [106, 122, 74]
3000 ],
3001 [
3002 [48, 113, -30],
3003 [114, 114, 219],
3004 [115, 122, 74]
3005 ],
3006 [
3007 [48, 122, -35]
3008 ],
3009 [
3010 [48, 122, -35]
3011 ],
3012 [
3013 [48, 122, -35]
3014 ],
3015 [
3016 [48, 100, -38],
3017 [101, 101, 220],
3018 [102, 122, 74]
3019 ],
3020 [
3021 [48, 100, -38],
3022 [101, 101, 221],
3023 [102, 122, 74]
3024 ],
3025 [
3026 [48, 95, -29],
3027 [97, 97, 222],
3028 [98, 122, 74]
3029 ],
3030 [
3031 [48, 122, -35]
3032 ],
3033 [
3034 [48, 95, -29],
3035 [97, 97, 223],
3036 [98, 122, 74]
3037 ],
3038 [
3039 [48, 115, -86],
3040 [116, 116, 224],
3041 [117, 122, 74]
3042 ],
3043 [
3044 [48, 122, -35]
3045 ],
3046 [
3047 [48, 122, -35]
3048 ],
3049 [
3050 [48, 109, -39],
3051 [110, 110, 225],
3052 [111, 122, 74]
3053 ],
3054 [
3055 [48, 109, -39],
3056 [110, 110, 226],
3057 [111, 122, 74]
3058 ],
3059 [
3060 [48, 122, -35]
3061 ],
3062 [
3063 [48, 115, -86],
3064 [116, 116, 227],
3065 [117, 122, 74]
3066 ],
3067 [
3068 [48, 101, -36],
3069 [102, 102, 228],
3070 [103, 109, 74],
3071 [110, 110, 229],
3072 [111, 122, 74]
3073 ],
3074 [
3075 [48, 99, -78],
3076 [100, 100, 230],
3077 [101, 122, 74]
3078 ],
3079 [
3080 [48, 122, -35]
3081 ],
3082 [
3083 [48, 122, -35]
3084 ],
3085 [
3086 [48, 97, -29],
3087 [98, 98, 231],
3088 [99, 122, 74]
3089 ],
3090 [
3091 [48, 95, -29],
3092 [97, 102, 74],
3093 [103, 103, 232],
3094 [104, 122, 74]
3095 ],
3096 [
3097 [48, 115, -86],
3098 [116, 116, 233],
3099 [117, 122, 74]
3100 ],
3101 [
3102 [48, 98, -99],
3103 [99, 99, 234],
3104 [100, 122, 74]
3105 ],
3106 [
3107 [48, 97, -29],
3108 [98, 98, 235],
3109 [99, 122, 74]
3110 ],
3111 [
3112 [48, 122, -35]
3113 ],
3114 [
3115 [48, 109, -39],
3116 [110, 110, 236],
3117 [111, 122, 74]
3118 ],
3119 [
3120 [48, 95, -29],
3121 [97, 97, 237],
3122 [98, 122, 74]
3123 ],
3124 [
3125 [48, 122, -35]
3126 ],
3127 [
3128 [48, 113, -30],
3129 [114, 114, 238],
3130 [115, 122, 74]
3131 ],
3132 [
3133 [48, 122, -35]
3134 ],
3135 [
3136 [48, 97, -29],
3137 [98, 98, 239],
3138 [99, 122, 74]
3139 ],
3140 [
3141 [48, 98, -99],
3142 [99, 99, 240],
3143 [100, 122, 74]
3144 ],
3145 [
3146 [48, 122, -35]
3147 ],
3148 [
3149 [48, 116, -108],
3150 [117, 117, 241],
3151 [118, 122, 74]
3152 ],
3153 [
3154 [48, 122, -35]
3155 ],
3156 [
3157 [48, 122, -35]
3158 ],
3159 [
3160 [48, 95, -29],
3161 [97, 97, 242],
3162 [98, 122, 74]
3163 ],
3164 [
3165 [48, 122, -35]
3166 ],
3167 [
3168 [48, 100, -38],
3169 [101, 101, 243],
3170 [102, 122, 74]
3171 ],
3172 [
3173 [48, 107, -31],
3174 [108, 108, 244],
3175 [109, 122, 74]
3176 ],
3177 [
3178 [48, 100, -38],
3179 [101, 101, 245],
3180 [102, 122, 74]
3181 ],
3182 [
3183 [48, 100, -38],
3184 [101, 101, 246],
3185 [102, 122, 74]
3186 ],
3187 [
3188 [48, 115, -86],
3189 [116, 116, 247],
3190 [117, 122, 74]
3191 ],
3192 [
3193 [48, 107, -31],
3194 [108, 108, 248],
3195 [109, 122, 74]
3196 ],
3197 [
3198 [48, 122, -35]
3199 ],
3200 [
3201 [48, 107, -31],
3202 [108, 108, 249],
3203 [109, 122, 74]
3204 ],
3205 [
3206 [48, 114, -79],
3207 [115, 115, 250],
3208 [116, 122, 74]
3209 ],
3210 [
3211 [48, 107, -31],
3212 [108, 108, 251],
3213 [109, 122, 74]
3214 ],
3215 [
3216 [48, 115, -86],
3217 [116, 116, 252],
3218 [117, 122, 74]
3219 ],
3220 [
3221 [48, 100, -38],
3222 [101, 101, 253],
3223 [102, 122, 74]
3224 ],
3225 [
3226 [48, 98, -99],
3227 [99, 99, 254],
3228 [100, 122, 74]
3229 ],
3230 [
3231 [48, 122, -35]
3232 ],
3233 [
3234 [48, 100, -38],
3235 [101, 101, 255],
3236 [102, 122, 74]
3237 ],
3238 [
3239 [48, 122, -35]
3240 ],
3241 [
3242 [48, 122, -35]
3243 ],
3244 [
3245 [48, 100, -38],
3246 [101, 101, 256],
3247 [102, 122, 74]
3248 ],
3249 [
3250 [48, 100, -38],
3251 [101, 101, 257],
3252 [102, 122, 74]
3253 ],
3254 [
3255 [48, 122, -35]
3256 ],
3257 [
3258 [48, 95, -29],
3259 [97, 97, 258],
3260 [98, 122, 74]
3261 ],
3262 [
3263 [48, 100, -38],
3264 [101, 101, 259],
3265 [102, 122, 74]
3266 ],
3267 [
3268 [48, 122, -35]
3269 ],
3270 [
3271 [48, 122, -35]
3272 ],
3273 [
3274 [48, 100, -38],
3275 [101, 101, 260],
3276 [102, 122, 74]
3277 ],
3278 [
3279 [48, 122, -35]
3280 ],
3281 [
3282 [48, 99, -78],
3283 [100, 100, 261],
3284 [101, 122, 74]
3285 ],
3286 [
3287 [48, 122, -35]
3288 ],
3289 [
3290 [48, 107, -31],
3291 [108, 108, 262],
3292 [109, 122, 74]
3293 ],
3294 [
3295 [48, 122, -35]
3296 ],
3297 [
3298 [48, 122, -35]
3299 ],
3300 [
3301 [48, 122, -35]
3302 ],
3303 [
3304 [48, 122, -35]
3305 ]
3306 ]
3307 ]
3308 end
3309
3310 private fun nil_array: Array[Array[Int]]
3311 do
3312 return once new Array[Array[Int]]
3313 end
3314
3315 var _accept_table: Array[Array[Int]]
3316 private fun build_accept_table do
3317 _accept_table = once [
3318 [
3319 -1,0,1,1,0,77,-1,-1,69,-1,52,53,67,65,56,66,64,68,81,57,72,59,74,78,54,55,-1,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,-1,1,71,-1,84,-1,85,-1,2,2,-1,83,60,61,63,82,-1,58,73,70,75,78,78,78,78,80,79,79,79,79,79,79,48,79,79,79,16,79,79,79,79,79,79,25,79,31,15,79,79,79,79,79,79,33,79,79,79,79,79,79,79,79,79,79,79,79,79,-1,87,-1,86,-1,2,62,76,80,80,80,80,79,79,32,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,19,79,79,-1,79,79,79,79,79,79,27,79,79,79,13,79,79,79,79,29,47,42,79,79,79,79,79,79,44,79,79,26,45,12,79,79,79,38,79,79,37,5,79,79,46,79,79,79,50,51,79,79,79,79,79,14,79,79,43,79,28,79,79,39,79,21,4,79,20,79,79,79,79,79,79,35,79,79,79,79,79,79,24,79,3,23,79,79,9,79,79,6,36,79,49,79,17,79,18,7,22,8
3320
3321 ]
3322 ]
3323 end
3324 end
3325