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