-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscillaParser.js
8763 lines (7203 loc) · 236 KB
/
scillaParser.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// Generated from scilla.g4 by ANTLR 4.9
// jshint ignore: start
import antlr4 from 'antlr4';
import scillaListener from './scillaListener.js';
const serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786",
"\u5964\u0003@\u02e0\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004",
"\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007",
"\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f",
"\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010\t\u0010",
"\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013\u0004\u0014",
"\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017\t\u0017",
"\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a\u0004\u001b",
"\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e\t\u001e",
"\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004\"\t\"\u0004#\t#\u0004",
"$\t$\u0004%\t%\u0004&\t&\u0004\'\t\'\u0004(\t(\u0004)\t)\u0004*\t*\u0004",
"+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u00041\t1\u0004",
"2\t2\u00043\t3\u0003\u0002\u0005\u0002h\n\u0002\u0003\u0002\u0003\u0002",
"\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003",
"\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0005\u0003v\n\u0003",
"\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004",
"\u0003\u0004\u0003\u0004\u0003\u0004\u0005\u0004\u0081\n\u0004\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003",
"\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u008d\n\u0005",
"\u0003\u0006\u0003\u0006\u0006\u0006\u0091\n\u0006\r\u0006\u000e\u0006",
"\u0092\u0003\u0006\u0005\u0006\u0096\n\u0006\u0003\u0007\u0003\u0007",
"\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007",
"\u0003\u0007\u0003\u0007\u0007\u0007\u00a2\n\u0007\f\u0007\u000e\u0007",
"\u00a5\u000b\u0007\u0007\u0007\u00a7\n\u0007\f\u0007\u000e\u0007\u00aa",
"\u000b\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007",
"\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007",
"\u0003\u0007\u0005\u0007\u00b8\n\u0007\u0003\b\u0003\b\u0003\b\u0007",
"\b\u00bd\n\b\f\b\u000e\b\u00c0\u000b\b\u0003\b\u0003\b\u0003\b\u0003",
"\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003",
"\b\u0003\b\u0005\b\u00d0\n\b\u0003\b\u0003\b\u0003\b\u0007\b\u00d5\n",
"\b\f\b\u000e\b\u00d8\u000b\b\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t",
"\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0005\t\u00e5\n\t\u0003",
"\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\u000b\u0003\u000b\u0003\f\u0003",
"\f\u0003\f\u0003\f\u0005\f\u00f2\n\f\u0003\f\u0003\f\u0003\f\u0003\f",
"\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003",
"\f\u0003\f\u0003\f\u0003\f\u0006\f\u0104\n\f\r\f\u000e\f\u0105\u0003",
"\f\u0003\f\u0003\f\u0003\f\u0005\f\u010c\n\f\u0003\f\u0003\f\u0003\f",
"\u0003\f\u0003\f\u0003\f\u0007\f\u0114\n\f\f\f\u000e\f\u0117\u000b\f",
"\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0007\f\u011f\n\f\f",
"\f\u000e\f\u0122\u000b\f\u0003\f\u0003\f\u0003\f\u0003\f\u0005\f\u0128",
"\n\f\u0003\f\u0007\f\u012b\n\f\f\f\u000e\f\u012e\u000b\f\u0003\f\u0003",
"\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0006\f\u0137\n\f\r\f\u000e",
"\f\u0138\u0005\f\u013b\n\f\u0003\r\u0003\r\u0005\r\u013f\n\r\u0003\u000e",
"\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e",
"\u0003\u000e\u0003\u000e\u0005\u000e\u014a\n\u000e\u0003\u000f\u0003",
"\u000f\u0007\u000f\u014e\n\u000f\f\u000f\u000e\u000f\u0151\u000b\u000f",
"\u0003\u000f\u0003\u000f\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010",
"\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0007\u0011\u015d\n",
"\u0011\f\u0011\u000e\u0011\u0160\u000b\u0011\u0005\u0011\u0162\n\u0011",
"\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012",
"\u0003\u0012\u0005\u0012\u016b\n\u0012\u0003\u0013\u0003\u0013\u0003",
"\u0013\u0003\u0013\u0003\u0013\u0003\u0014\u0003\u0014\u0003\u0014\u0003",
"\u0014\u0003\u0014\u0003\u0014\u0003\u0014\u0003\u0014\u0005\u0014\u017a",
"\n\u0014\u0003\u0015\u0006\u0015\u017d\n\u0015\r\u0015\u000e\u0015\u017e",
"\u0003\u0015\u0003\u0015\u0005\u0015\u0183\n\u0015\u0003\u0016\u0003",
"\u0016\u0003\u0016\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0018\u0003",
"\u0018\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003",
"\u0019\u0005\u0019\u0193\n\u0019\u0003\u001a\u0003\u001a\u0003\u001a",
"\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0005\u001a",
"\u019d\n\u001a\u0003\u001b\u0003\u001b\u0005\u001b\u01a1\n\u001b\u0003",
"\u001c\u0003\u001c\u0003\u001c\u0003\u001d\u0003\u001d\u0003\u001d\u0003",
"\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003",
"\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003",
"\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003",
"\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0006\u001e\u01bf\n\u001e",
"\r\u001e\u000e\u001e\u01c0\u0003\u001e\u0003\u001e\u0003\u001e\u0003",
"\u001e\u0003\u001e\u0006\u001e\u01c8\n\u001e\r\u001e\u000e\u001e\u01c9",
"\u0003\u001e\u0003\u001e\u0006\u001e\u01ce\n\u001e\r\u001e\u000e\u001e",
"\u01cf\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003",
"\u001e\u0006\u001e\u01d8\n\u001e\r\u001e\u000e\u001e\u01d9\u0003\u001e",
"\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e",
"\u0005\u001e\u01e3\n\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003",
"\u001e\u0006\u001e\u01e9\n\u001e\r\u001e\u000e\u001e\u01ea\u0003\u001e",
"\u0003\u001e\u0003\u001e\u0003\u001e\u0007\u001e\u01f1\n\u001e\f\u001e",
"\u000e\u001e\u01f4\u000b\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003",
"\u001e\u0005\u001e\u01fa\n\u001e\u0003\u001f\u0003\u001f\u0003\u001f",
"\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f",
"\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f",
"\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f",
"\u0006\u001f\u0211\n\u001f\r\u001f\u000e\u001f\u0212\u0003\u001f\u0003",
"\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003",
"\u001f\u0006\u001f\u021d\n\u001f\r\u001f\u000e\u001f\u021e\u0003\u001f",
"\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f",
"\u0005\u001f\u0228\n\u001f\u0003 \u0003 \u0003 \u0003 \u0003 \u0003",
" \u0007 \u0230\n \f \u000e \u0233\u000b \u0007 \u0235\n \f \u000e \u0238",
"\u000b \u0003!\u0003!\u0003!\u0007!\u023d\n!\f!\u000e!\u0240\u000b!",
"\u0003\"\u0003\"\u0003\"\u0003#\u0003#\u0003$\u0003$\u0005$\u0249\n",
"$\u0003%\u0003%\u0003%\u0003%\u0003%\u0003&\u0003&\u0003&\u0003&\u0003",
"&\u0003\'\u0003\'\u0005\'\u0257\n\'\u0003(\u0003(\u0003(\u0003(\u0007",
"(\u025d\n(\f(\u000e(\u0260\u000b(\u0007(\u0262\n(\f(\u000e(\u0265\u000b",
"(\u0003(\u0003(\u0003)\u0005)\u026a\n)\u0003)\u0003)\u0003*\u0003*\u0003",
"*\u0003*\u0003*\u0003+\u0003+\u0003+\u0003+\u0003,\u0003,\u0003,\u0003",
",\u0003,\u0003,\u0007,\u027d\n,\f,\u000e,\u0280\u000b,\u0007,\u0282",
"\n,\f,\u000e,\u0285\u000b,\u0003,\u0003,\u0005,\u0289\n,\u0003,\u0007",
",\u028c\n,\f,\u000e,\u028f\u000b,\u0003,\u0007,\u0292\n,\f,\u000e,\u0295",
"\u000b,\u0003-\u0003-\u0003-\u0003-\u0003-\u0003-\u0006-\u029d\n-\r",
"-\u000e-\u029e\u0005-\u02a1\n-\u0003.\u0003.\u0003.\u0005.\u02a6\n.",
"\u0003.\u0003.\u0003.\u0003.\u0003.\u0003.\u0003.\u0003.\u0003.\u0006",
".\u02b1\n.\r.\u000e.\u02b2\u0005.\u02b5\n.\u0003/\u0003/\u0003/\u0007",
"/\u02ba\n/\f/\u000e/\u02bd\u000b/\u00030\u00030\u00030\u00050\u02c2",
"\n0\u00030\u00030\u00030\u00031\u00031\u00031\u00031\u00031\u00051\u02cc",
"\n1\u00032\u00032\u00072\u02d0\n2\f2\u000e2\u02d3\u000b2\u00033\u0003",
"3\u00033\u00053\u02d8\n3\u00033\u00053\u02db\n3\u00033\u00033\u0003",
"3\u00033\u0002\u0003\u000e4\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012",
"\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ",
"\\^`bd\u0002\u0002\u0002\u0321\u0002g\u0003\u0002\u0002\u0002\u0004",
"u\u0003\u0002\u0002\u0002\u0006\u0080\u0003\u0002\u0002\u0002\b\u008c",
"\u0003\u0002\u0002\u0002\n\u0095\u0003\u0002\u0002\u0002\f\u00b7\u0003",
"\u0002\u0002\u0002\u000e\u00cf\u0003\u0002\u0002\u0002\u0010\u00e4\u0003",
"\u0002\u0002\u0002\u0012\u00e6\u0003\u0002\u0002\u0002\u0014\u00eb\u0003",
"\u0002\u0002\u0002\u0016\u013a\u0003\u0002\u0002\u0002\u0018\u013e\u0003",
"\u0002\u0002\u0002\u001a\u0149\u0003\u0002\u0002\u0002\u001c\u014b\u0003",
"\u0002\u0002\u0002\u001e\u0154\u0003\u0002\u0002\u0002 \u0161\u0003",
"\u0002\u0002\u0002\"\u016a\u0003\u0002\u0002\u0002$\u016c\u0003\u0002",
"\u0002\u0002&\u0179\u0003\u0002\u0002\u0002(\u0182\u0003\u0002\u0002",
"\u0002*\u0184\u0003\u0002\u0002\u0002,\u0187\u0003\u0002\u0002\u0002",
".\u018a\u0003\u0002\u0002\u00020\u0192\u0003\u0002\u0002\u00022\u019c",
"\u0003\u0002\u0002\u00024\u01a0\u0003\u0002\u0002\u00026\u01a2\u0003",
"\u0002\u0002\u00028\u01a5\u0003\u0002\u0002\u0002:\u01f9\u0003\u0002",
"\u0002\u0002<\u0227\u0003\u0002\u0002\u0002>\u0229\u0003\u0002\u0002",
"\u0002@\u0239\u0003\u0002\u0002\u0002B\u0241\u0003\u0002\u0002\u0002",
"D\u0244\u0003\u0002\u0002\u0002F\u0248\u0003\u0002\u0002\u0002H\u024a",
"\u0003\u0002\u0002\u0002J\u024f\u0003\u0002\u0002\u0002L\u0256\u0003",
"\u0002\u0002\u0002N\u0258\u0003\u0002\u0002\u0002P\u0269\u0003\u0002",
"\u0002\u0002R\u026d\u0003\u0002\u0002\u0002T\u0272\u0003\u0002\u0002",
"\u0002V\u0276\u0003\u0002\u0002\u0002X\u02a0\u0003\u0002\u0002\u0002",
"Z\u02b4\u0003\u0002\u0002\u0002\\\u02b6\u0003\u0002\u0002\u0002^\u02be",
"\u0003\u0002\u0002\u0002`\u02cb\u0003\u0002\u0002\u0002b\u02cd\u0003",
"\u0002\u0002\u0002d\u02d4\u0003\u0002\u0002\u0002fh\u0007\u0003\u0002",
"\u0002gf\u0003\u0002\u0002\u0002gh\u0003\u0002\u0002\u0002hi\u0003\u0002",
"\u0002\u0002ij\u00075\u0002\u0002j\u0003\u0003\u0002\u0002\u0002kv\u0005",
"2\u001a\u0002lm\u0007\'\u0002\u0002mn\u00052\u001a\u0002no\u0007(\u0002",
"\u0002ov\u0003\u0002\u0002\u0002pq\u0007\'\u0002\u0002qr\u0005\f\u0007",
"\u0002rs\u0007(\u0002\u0002sv\u0003\u0002\u0002\u0002tv\u0005\f\u0007",
"\u0002uk\u0003\u0002\u0002\u0002ul\u0003\u0002\u0002\u0002up\u0003\u0002",
"\u0002\u0002ut\u0003\u0002\u0002\u0002v\u0005\u0003\u0002\u0002\u0002",
"wx\u0007\'\u0002\u0002xy\u0005\n\u0006\u0002yz\u0007(\u0002\u0002z\u0081",
"\u0003\u0002\u0002\u0002{\u0081\u00052\u001a\u0002|}\u0007\u0018\u0002",
"\u0002}~\u0005\u0004\u0003\u0002~\u007f\u0005\b\u0005\u0002\u007f\u0081",
"\u0003\u0002\u0002\u0002\u0080w\u0003\u0002\u0002\u0002\u0080{\u0003",
"\u0002\u0002\u0002\u0080|\u0003\u0002\u0002\u0002\u0081\u0007\u0003",
"\u0002\u0002\u0002\u0082\u008d\u00052\u001a\u0002\u0083\u0084\u0007",
"\u0018\u0002\u0002\u0084\u0085\u0005\u0004\u0003\u0002\u0085\u0086\u0005",
"\b\u0005\u0002\u0086\u008d\u0003\u0002\u0002\u0002\u0087\u0088\u0007",
"\'\u0002\u0002\u0088\u0089\u0005\n\u0006\u0002\u0089\u008a\u0007(\u0002",
"\u0002\u008a\u008d\u0003\u0002\u0002\u0002\u008b\u008d\u0005\f\u0007",
"\u0002\u008c\u0082\u0003\u0002\u0002\u0002\u008c\u0083\u0003\u0002\u0002",
"\u0002\u008c\u0087\u0003\u0002\u0002\u0002\u008c\u008b\u0003\u0002\u0002",
"\u0002\u008d\t\u0003\u0002\u0002\u0002\u008e\u0090\u00052\u001a\u0002",
"\u008f\u0091\u0005\u0006\u0004\u0002\u0090\u008f\u0003\u0002\u0002\u0002",
"\u0091\u0092\u0003\u0002\u0002\u0002\u0092\u0090\u0003\u0002\u0002\u0002",
"\u0092\u0093\u0003\u0002\u0002\u0002\u0093\u0096\u0003\u0002\u0002\u0002",
"\u0094\u0096\u0005\b\u0005\u0002\u0095\u008e\u0003\u0002\u0002\u0002",
"\u0095\u0094\u0003\u0002\u0002\u0002\u0096\u000b\u0003\u0002\u0002\u0002",
"\u0097\u0098\u00054\u001b\u0002\u0098\u0099\u0007\u000b\u0002\u0002",
"\u0099\u009a\u0007\f\u0002\u0002\u009a\u00b8\u0003\u0002\u0002\u0002",
"\u009b\u009c\u00054\u001b\u0002\u009c\u009d\u0007\u000b\u0002\u0002",
"\u009d\u00a8\u0007\u000f\u0002\u0002\u009e\u00a3\u0005\u0012\n\u0002",
"\u009f\u00a0\u0007+\u0002\u0002\u00a0\u00a2\u0005\u0012\n\u0002\u00a1",
"\u009f\u0003\u0002\u0002\u0002\u00a2\u00a5\u0003\u0002\u0002\u0002\u00a3",
"\u00a1\u0003\u0002\u0002\u0002\u00a3\u00a4\u0003\u0002\u0002\u0002\u00a4",
"\u00a7\u0003\u0002\u0002\u0002\u00a5\u00a3\u0003\u0002\u0002\u0002\u00a6",
"\u009e\u0003\u0002\u0002\u0002\u00a7\u00aa\u0003\u0002\u0002\u0002\u00a8",
"\u00a6\u0003\u0002\u0002\u0002\u00a8\u00a9\u0003\u0002\u0002\u0002\u00a9",
"\u00ab\u0003\u0002\u0002\u0002\u00aa\u00a8\u0003\u0002\u0002\u0002\u00ab",
"\u00ac\u0007\f\u0002\u0002\u00ac\u00b8\u0003\u0002\u0002\u0002\u00ad",
"\u00ae\u00054\u001b\u0002\u00ae\u00af\u0007\u000b\u0002\u0002\u00af",
"\u00b0\u0007\u0006\u0002\u0002\u00b0\u00b1\u0007\f\u0002\u0002\u00b1",
"\u00b8\u0003\u0002\u0002\u0002\u00b2\u00b3\u00054\u001b\u0002\u00b3",
"\u00b4\u0007\u000b\u0002\u0002\u00b4\u00b5\u0007>\u0002\u0002\u00b5",
"\u00b6\u0007\f\u0002\u0002\u00b6\u00b8\u0003\u0002\u0002\u0002\u00b7",
"\u0097\u0003\u0002\u0002\u0002\u00b7\u009b\u0003\u0002\u0002\u0002\u00b7",
"\u00ad\u0003\u0002\u0002\u0002\u00b7\u00b2\u0003\u0002\u0002\u0002\u00b8",
"\r\u0003\u0002\u0002\u0002\u00b9\u00ba\b\b\u0001\u0002\u00ba\u00be\u0005",
"2\u001a\u0002\u00bb\u00bd\u0005\u0010\t\u0002\u00bc\u00bb\u0003\u0002",
"\u0002\u0002\u00bd\u00c0\u0003\u0002\u0002\u0002\u00be\u00bc\u0003\u0002",
"\u0002\u0002\u00be\u00bf\u0003\u0002\u0002\u0002\u00bf\u00d0\u0003\u0002",
"\u0002\u0002\u00c0\u00be\u0003\u0002\u0002\u0002\u00c1\u00c2\u0007\u0018",
"\u0002\u0002\u00c2\u00c3\u0005\u0004\u0003\u0002\u00c3\u00c4\u0005\b",
"\u0005\u0002\u00c4\u00d0\u0003\u0002\u0002\u0002\u00c5\u00c6\u0007\'",
"\u0002\u0002\u00c6\u00c7\u0005\u000e\b\u0002\u00c7\u00c8\u0007(\u0002",
"\u0002\u00c8\u00d0\u0003\u0002\u0002\u0002\u00c9\u00d0\u0005\f\u0007",
"\u0002\u00ca\u00cb\u0007\u0004\u0002\u0002\u00cb\u00cc\u0007@\u0002",
"\u0002\u00cc\u00cd\u0007#\u0002\u0002\u00cd\u00d0\u0005\u000e\b\u0004",
"\u00ce\u00d0\u0007@\u0002\u0002\u00cf\u00b9\u0003\u0002\u0002\u0002",
"\u00cf\u00c1\u0003\u0002\u0002\u0002\u00cf\u00c5\u0003\u0002\u0002\u0002",
"\u00cf\u00c9\u0003\u0002\u0002\u0002\u00cf\u00ca\u0003\u0002\u0002\u0002",
"\u00cf\u00ce\u0003\u0002\u0002\u0002\u00d0\u00d6\u0003\u0002\u0002\u0002",
"\u00d1\u00d2\f\u0007\u0002\u0002\u00d2\u00d3\u0007-\u0002\u0002\u00d3",
"\u00d5\u0005\u000e\b\u0007\u00d4\u00d1\u0003\u0002\u0002\u0002\u00d5",
"\u00d8\u0003\u0002\u0002\u0002\u00d6\u00d4\u0003\u0002\u0002\u0002\u00d6",
"\u00d7\u0003\u0002\u0002\u0002\u00d7\u000f\u0003\u0002\u0002\u0002\u00d8",
"\u00d6\u0003\u0002\u0002\u0002\u00d9\u00da\u0007\'\u0002\u0002\u00da",
"\u00db\u0005\u000e\b\u0002\u00db\u00dc\u0007(\u0002\u0002\u00dc\u00e5",
"\u0003\u0002\u0002\u0002\u00dd\u00e5\u00052\u001a\u0002\u00de\u00e5",
"\u0007@\u0002\u0002\u00df\u00e5\u0005\f\u0007\u0002\u00e0\u00e1\u0007",
"\u0018\u0002\u0002\u00e1\u00e2\u0005\u0004\u0003\u0002\u00e2\u00e3\u0005",
"\b\u0005\u0002\u00e3\u00e5\u0003\u0002\u0002\u0002\u00e4\u00d9\u0003",
"\u0002\u0002\u0002\u00e4\u00dd\u0003\u0002\u0002\u0002\u00e4\u00de\u0003",
"\u0002\u0002\u0002\u00e4\u00df\u0003\u0002\u0002\u0002\u00e4\u00e0\u0003",
"\u0002\u0002\u0002\u00e5\u0011\u0003\u0002\u0002\u0002\u00e6\u00e7\u0007",
"\u0013\u0002\u0002\u00e7\u00e8\u0005.\u0018\u0002\u00e8\u00e9\u0007",
"\"\u0002\u0002\u00e9\u00ea\u0005\u000e\b\u0002\u00ea\u0013\u0003\u0002",
"\u0002\u0002\u00eb\u00ec\u0005\u0016\f\u0002\u00ec\u0015\u0003\u0002",
"\u0002\u0002\u00ed\u00ee\u0007\b\u0002\u0002\u00ee\u00f1\u0005.\u0018",
"\u0002\u00ef\u00f0\u0007\"\u0002\u0002\u00f0\u00f2\u0005\u000e\b\u0002",
"\u00f1\u00ef\u0003\u0002\u0002\u0002\u00f1\u00f2\u0003\u0002\u0002\u0002",
"\u00f2\u00f3\u0003\u0002\u0002\u0002\u00f3\u00f4\u0007.\u0002\u0002",
"\u00f4\u00f5\u0005\u0016\f\u0002\u00f5\u00f6\u0007\t\u0002\u0002\u00f6",
"\u00f7\u0005\u0014\u000b\u0002\u00f7\u013b\u0003\u0002\u0002\u0002\u00f8",
"\u00f9\u0007\r\u0002\u0002\u00f9\u00fa\u0007\'\u0002\u0002\u00fa\u00fb",
"\u0005.\u0018\u0002\u00fb\u00fc\u0007\"\u0002\u0002\u00fc\u00fd\u0005",
"\u000e\b\u0002\u00fd\u00fe\u0007(\u0002\u0002\u00fe\u00ff\u0007,\u0002",
"\u0002\u00ff\u0100\u0005\u0014\u000b\u0002\u0100\u013b\u0003\u0002\u0002",
"\u0002\u0101\u0103\u00050\u0019\u0002\u0102\u0104\u00050\u0019\u0002",
"\u0103\u0102\u0003\u0002\u0002\u0002\u0104\u0105\u0003\u0002\u0002\u0002",
"\u0105\u0103\u0003\u0002\u0002\u0002\u0105\u0106\u0003\u0002\u0002\u0002",
"\u0106\u013b\u0003\u0002\u0002\u0002\u0107\u013b\u0005\u0018\r\u0002",
"\u0108\u0109\u0007\u0005\u0002\u0002\u0109\u010b\u0005.\u0018\u0002",
"\u010a\u010c\u0005\u001c\u000f\u0002\u010b\u010a\u0003\u0002\u0002\u0002",
"\u010b\u010c\u0003\u0002\u0002\u0002\u010c\u010d\u0003\u0002\u0002\u0002",
"\u010d\u010e\u0005(\u0015\u0002\u010e\u013b\u0003\u0002\u0002\u0002",
"\u010f\u0110\u0007)\u0002\u0002\u0110\u0115\u0005&\u0014\u0002\u0111",
"\u0112\u0007!\u0002\u0002\u0112\u0114\u0005&\u0014\u0002\u0113\u0111",
"\u0003\u0002\u0002\u0002\u0114\u0117\u0003\u0002\u0002\u0002\u0115\u0113",
"\u0003\u0002\u0002\u0002\u0115\u0116\u0003\u0002\u0002\u0002\u0116\u0118",
"\u0003\u0002\u0002\u0002\u0117\u0115\u0003\u0002\u0002\u0002\u0118\u0119",
"\u0007*\u0002\u0002\u0119\u013b\u0003\u0002\u0002\u0002\u011a\u011b",
"\u0007\n\u0002\u0002\u011b\u011c\u00050\u0019\u0002\u011c\u0120\u0007",
"\u000b\u0002\u0002\u011d\u011f\u0005$\u0013\u0002\u011e\u011d\u0003",
"\u0002\u0002\u0002\u011f\u0122\u0003\u0002\u0002\u0002\u0120\u011e\u0003",
"\u0002\u0002\u0002\u0120\u0121\u0003\u0002\u0002\u0002\u0121\u0123\u0003",
"\u0002\u0002\u0002\u0122\u0120\u0003\u0002\u0002\u0002\u0123\u0124\u0007",
"\f\u0002\u0002\u0124\u013b\u0003\u0002\u0002\u0002\u0125\u0127\u0005",
"2\u001a\u0002\u0126\u0128\u0005\u001c\u000f\u0002\u0127\u0126\u0003",
"\u0002\u0002\u0002\u0127\u0128\u0003\u0002\u0002\u0002\u0128\u012c\u0003",
"\u0002\u0002\u0002\u0129\u012b\u00050\u0019\u0002\u012a\u0129\u0003",
"\u0002\u0002\u0002\u012b\u012e\u0003\u0002\u0002\u0002\u012c\u012a\u0003",
"\u0002\u0002\u0002\u012c\u012d\u0003\u0002\u0002\u0002\u012d\u013b\u0003",
"\u0002\u0002\u0002\u012e\u012c\u0003\u0002\u0002\u0002\u012f\u0130\u0007",
"\u000e\u0002\u0002\u0130\u0131\u0007@\u0002\u0002\u0131\u0132\u0007",
",\u0002\u0002\u0132\u013b\u0005\u0014\u000b\u0002\u0133\u0134\u0007",
"2\u0002\u0002\u0134\u0136\u00050\u0019\u0002\u0135\u0137\u0005\u0010",
"\t\u0002\u0136\u0135\u0003\u0002\u0002\u0002\u0137\u0138\u0003\u0002",
"\u0002\u0002\u0138\u0136\u0003\u0002\u0002\u0002\u0138\u0139\u0003\u0002",
"\u0002\u0002\u0139\u013b\u0003\u0002\u0002\u0002\u013a\u00ed\u0003\u0002",
"\u0002\u0002\u013a\u00f8\u0003\u0002\u0002\u0002\u013a\u0101\u0003\u0002",
"\u0002\u0002\u013a\u0107\u0003\u0002\u0002\u0002\u013a\u0108\u0003\u0002",
"\u0002\u0002\u013a\u010f\u0003\u0002\u0002\u0002\u013a\u011a\u0003\u0002",
"\u0002\u0002\u013a\u0125\u0003\u0002\u0002\u0002\u013a\u012f\u0003\u0002",
"\u0002\u0002\u013a\u0133\u0003\u0002\u0002\u0002\u013b\u0017\u0003\u0002",
"\u0002\u0002\u013c\u013f\u00050\u0019\u0002\u013d\u013f\u0005\u001a",
"\u000e\u0002\u013e\u013c\u0003\u0002\u0002\u0002\u013e\u013d\u0003\u0002",
"\u0002\u0002\u013f\u0019\u0003\u0002\u0002\u0002\u0140\u0141\u00054",
"\u001b\u0002\u0141\u0142\u0005\u0002\u0002\u0002\u0142\u014a\u0003\u0002",
"\u0002\u0002\u0143\u014a\u00078\u0002\u0002\u0144\u014a\u00076\u0002",
"\u0002\u0145\u0146\u0007\u0017\u0002\u0002\u0146\u0147\u0005\u0004\u0003",
"\u0002\u0147\u0148\u0005\b\u0005\u0002\u0148\u014a\u0003\u0002\u0002",
"\u0002\u0149\u0140\u0003\u0002\u0002\u0002\u0149\u0143\u0003\u0002\u0002",
"\u0002\u0149\u0144\u0003\u0002\u0002\u0002\u0149\u0145\u0003\u0002\u0002",
"\u0002\u014a\u001b\u0003\u0002\u0002\u0002\u014b\u014f\u0007)\u0002",
"\u0002\u014c\u014e\u0005\u0010\t\u0002\u014d\u014c\u0003\u0002\u0002",
"\u0002\u014e\u0151\u0003\u0002\u0002\u0002\u014f\u014d\u0003\u0002\u0002",
"\u0002\u014f\u0150\u0003\u0002\u0002\u0002\u0150\u0152\u0003\u0002\u0002",
"\u0002\u0151\u014f\u0003\u0002\u0002\u0002\u0152\u0153\u0007*\u0002",
"\u0002\u0153\u001d\u0003\u0002\u0002\u0002\u0154\u0155\u0007%\u0002",
"\u0002\u0155\u0156\u00050\u0019\u0002\u0156\u0157\u0007&\u0002\u0002",
"\u0157\u001f\u0003\u0002\u0002\u0002\u0158\u0162\u00073\u0002\u0002",
"\u0159\u0162\u0005.\u0018\u0002\u015a\u015e\u00052\u001a\u0002\u015b",
"\u015d\u0005\"\u0012\u0002\u015c\u015b\u0003\u0002\u0002\u0002\u015d",
"\u0160\u0003\u0002\u0002\u0002\u015e\u015c\u0003\u0002\u0002\u0002\u015e",
"\u015f\u0003\u0002\u0002\u0002\u015f\u0162\u0003\u0002\u0002\u0002\u0160",
"\u015e\u0003\u0002\u0002\u0002\u0161\u0158\u0003\u0002\u0002\u0002\u0161",
"\u0159\u0003\u0002\u0002\u0002\u0161\u015a\u0003\u0002\u0002\u0002\u0162",
"!\u0003\u0002\u0002\u0002\u0163\u016b\u00073\u0002\u0002\u0164\u016b",
"\u0005.\u0018\u0002\u0165\u016b\u00052\u001a\u0002\u0166\u0167\u0007",
"\'\u0002\u0002\u0167\u0168\u0005 \u0011\u0002\u0168\u0169\u0007(\u0002",
"\u0002\u0169\u016b\u0003\u0002\u0002\u0002\u016a\u0163\u0003\u0002\u0002",
"\u0002\u016a\u0164\u0003\u0002\u0002\u0002\u016a\u0165\u0003\u0002\u0002",
"\u0002\u016a\u0166\u0003\u0002\u0002\u0002\u016b#\u0003\u0002\u0002",
"\u0002\u016c\u016d\u0007$\u0002\u0002\u016d\u016e\u0005 \u0011\u0002",
"\u016e\u016f\u0007,\u0002\u0002\u016f\u0170\u0005\u0014\u000b\u0002",
"\u0170%\u0003\u0002\u0002\u0002\u0171\u0172\u00050\u0019\u0002\u0172",
"\u0173\u0007\"\u0002\u0002\u0173\u0174\u0005\u001a\u000e\u0002\u0174",
"\u017a\u0003\u0002\u0002\u0002\u0175\u0176\u00050\u0019\u0002\u0176",
"\u0177\u0007\"\u0002\u0002\u0177\u0178\u00050\u0019\u0002\u0178\u017a",
"\u0003\u0002\u0002\u0002\u0179\u0171\u0003\u0002\u0002\u0002\u0179\u0175",
"\u0003\u0002\u0002\u0002\u017a\'\u0003\u0002\u0002\u0002\u017b\u017d",
"\u00050\u0019\u0002\u017c\u017b\u0003\u0002\u0002\u0002\u017d\u017e",
"\u0003\u0002\u0002\u0002\u017e\u017c\u0003\u0002\u0002\u0002\u017e\u017f",
"\u0003\u0002\u0002\u0002\u017f\u0183\u0003\u0002\u0002\u0002\u0180\u0181",
"\u0007\'\u0002\u0002\u0181\u0183\u0007(\u0002\u0002\u0182\u017c\u0003",
"\u0002\u0002\u0002\u0182\u0180\u0003\u0002\u0002\u0002\u0183)\u0003",
"\u0002\u0002\u0002\u0184\u0185\u0005\u0014\u000b\u0002\u0185\u0186\u0007",
"\u0002\u0002\u0003\u0186+\u0003\u0002\u0002\u0002\u0187\u0188\u0005",
"\u000e\b\u0002\u0188\u0189\u0007\u0002\u0002\u0003\u0189-\u0003\u0002",
"\u0002\u0002\u018a\u018b\u0007=\u0002\u0002\u018b/\u0003\u0002\u0002",
"\u0002\u018c\u0193\u0005.\u0018\u0002\u018d\u0193\u0007>\u0002\u0002",
"\u018e\u018f\u00054\u001b\u0002\u018f\u0190\u0007#\u0002\u0002\u0190",
"\u0191\u0005.\u0018\u0002\u0191\u0193\u0003\u0002\u0002\u0002\u0192",
"\u018c\u0003\u0002\u0002\u0002\u0192\u018d\u0003\u0002\u0002\u0002\u0192",
"\u018e\u0003\u0002\u0002\u0002\u01931\u0003\u0002\u0002\u0002\u0194",
"\u019d\u00054\u001b\u0002\u0195\u0196\u00054\u001b\u0002\u0196\u0197",
"\u0007#\u0002\u0002\u0197\u0198\u00054\u001b\u0002\u0198\u019d\u0003",
"\u0002\u0002\u0002\u0199\u019a\u00078\u0002\u0002\u019a\u019b\u0007",
"#\u0002\u0002\u019b\u019d\u00054\u001b\u0002\u019c\u0194\u0003\u0002",
"\u0002\u0002\u019c\u0195\u0003\u0002\u0002\u0002\u019c\u0199\u0003\u0002",
"\u0002\u0002\u019d3\u0003\u0002\u0002\u0002\u019e\u01a1\u0007?\u0002",
"\u0002\u019f\u01a1\u00079\u0002\u0002\u01a0\u019e\u0003\u0002\u0002",
"\u0002\u01a0\u019f\u0003\u0002\u0002\u0002\u01a15\u0003\u0002\u0002",
"\u0002\u01a2\u01a3\u0007\"\u0002\u0002\u01a3\u01a4\u0005\u000e\b\u0002",
"\u01a47\u0003\u0002\u0002\u0002\u01a5\u01a6\u0005.\u0018\u0002\u01a6",
"\u01a7\u00056\u001c\u0002\u01a79\u0003\u0002\u0002\u0002\u01a8\u01a9",
"\u0005.\u0018\u0002\u01a9\u01aa\u00070\u0002\u0002\u01aa\u01ab\u0005",
"0\u0019\u0002\u01ab\u01fa\u0003\u0002\u0002\u0002\u01ac\u01fa\u0005",
"<\u001f\u0002\u01ad\u01ae\u0005.\u0018\u0002\u01ae\u01af\u00071\u0002",
"\u0002\u01af\u01b0\u00050\u0019\u0002\u01b0\u01fa\u0003\u0002\u0002",
"\u0002\u01b1\u01b2\u0005.\u0018\u0002\u01b2\u01b3\u0007.\u0002\u0002",
"\u01b3\u01b4\u0005\u0014\u000b\u0002\u01b4\u01fa\u0003\u0002\u0002\u0002",
"\u01b5\u01b6\u0005.\u0018\u0002\u01b6\u01b7\u00070\u0002\u0002\u01b7",
"\u01b8\u0007/\u0002\u0002\u01b8\u01b9\u00054\u001b\u0002\u01b9\u01fa",
"\u0003\u0002\u0002\u0002\u01ba\u01bb\u0005.\u0018\u0002\u01bb\u01bc",
"\u00070\u0002\u0002\u01bc\u01be\u0005.\u0018\u0002\u01bd\u01bf\u0005",
"\u001e\u0010\u0002\u01be\u01bd\u0003\u0002\u0002\u0002\u01bf\u01c0\u0003",
"\u0002\u0002\u0002\u01c0\u01be\u0003\u0002\u0002\u0002\u01c0\u01c1\u0003",
"\u0002\u0002\u0002\u01c1\u01fa\u0003\u0002\u0002\u0002\u01c2\u01c3\u0005",
".\u0018\u0002\u01c3\u01c4\u00070\u0002\u0002\u01c4\u01c5\u0007\u0015",
"\u0002\u0002\u01c5\u01c7\u0005.\u0018\u0002\u01c6\u01c8\u0005\u001e",
"\u0010\u0002\u01c7\u01c6\u0003\u0002\u0002\u0002\u01c8\u01c9\u0003\u0002",
"\u0002\u0002\u01c9\u01c7\u0003\u0002\u0002\u0002\u01c9\u01ca\u0003\u0002",
"\u0002\u0002\u01ca\u01fa\u0003\u0002\u0002\u0002\u01cb\u01cd\u0005.",
"\u0018\u0002\u01cc\u01ce\u0005\u001e\u0010\u0002\u01cd\u01cc\u0003\u0002",
"\u0002\u0002\u01ce\u01cf\u0003\u0002\u0002\u0002\u01cf\u01cd\u0003\u0002",
"\u0002\u0002\u01cf\u01d0\u0003\u0002\u0002\u0002\u01d0\u01d1\u0003\u0002",
"\u0002\u0002\u01d1\u01d2\u00071\u0002\u0002\u01d2\u01d3\u00050\u0019",
"\u0002\u01d3\u01fa\u0003\u0002\u0002\u0002\u01d4\u01d5\u0007\u0016\u0002",
"\u0002\u01d5\u01d7\u0005.\u0018\u0002\u01d6\u01d8\u0005\u001e\u0010",
"\u0002\u01d7\u01d6\u0003\u0002\u0002\u0002\u01d8\u01d9\u0003\u0002\u0002",
"\u0002\u01d9\u01d7\u0003\u0002\u0002\u0002\u01d9\u01da\u0003\u0002\u0002",
"\u0002\u01da\u01fa\u0003\u0002\u0002\u0002\u01db\u01fa\u0007\u0014\u0002",
"\u0002\u01dc\u01dd\u0007\u0011\u0002\u0002\u01dd\u01fa\u00050\u0019",
"\u0002\u01de\u01df\u0007\u0012\u0002\u0002\u01df\u01fa\u00050\u0019",
"\u0002\u01e0\u01e2\u0007 \u0002\u0002\u01e1\u01e3\u00050\u0019\u0002",
"\u01e2\u01e1\u0003\u0002\u0002\u0002\u01e2\u01e3\u0003\u0002\u0002\u0002",
"\u01e3\u01fa\u0003\u0002\u0002\u0002\u01e4\u01e5\u0007\n\u0002\u0002",
"\u01e5\u01e6\u00050\u0019\u0002\u01e6\u01e8\u0007\u000b\u0002\u0002",
"\u01e7\u01e9\u0005> \u0002\u01e8\u01e7\u0003\u0002\u0002\u0002\u01e9",
"\u01ea\u0003\u0002\u0002\u0002\u01ea\u01e8\u0003\u0002\u0002\u0002\u01ea",
"\u01eb\u0003\u0002\u0002\u0002\u01eb\u01ec\u0003\u0002\u0002\u0002\u01ec",
"\u01ed\u0007\f\u0002\u0002\u01ed\u01fa\u0003\u0002\u0002\u0002\u01ee",
"\u01f2\u0005L\'\u0002\u01ef\u01f1\u00050\u0019\u0002\u01f0\u01ef\u0003",
"\u0002\u0002\u0002\u01f1\u01f4\u0003\u0002\u0002\u0002\u01f2\u01f0\u0003",
"\u0002\u0002\u0002\u01f2\u01f3\u0003\u0002\u0002\u0002\u01f3\u01fa\u0003",
"\u0002\u0002\u0002\u01f4\u01f2\u0003\u0002\u0002\u0002\u01f5\u01f6\u0007",
"\u0004\u0002\u0002\u01f6\u01f7\u00050\u0019\u0002\u01f7\u01f8\u0005",
"L\'\u0002\u01f8\u01fa\u0003\u0002\u0002\u0002\u01f9\u01a8\u0003\u0002",
"\u0002\u0002\u01f9\u01ac\u0003\u0002\u0002\u0002\u01f9\u01ad\u0003\u0002",
"\u0002\u0002\u01f9\u01b1\u0003\u0002\u0002\u0002\u01f9\u01b5\u0003\u0002",
"\u0002\u0002\u01f9\u01ba\u0003\u0002\u0002\u0002\u01f9\u01c2\u0003\u0002",
"\u0002\u0002\u01f9\u01cb\u0003\u0002\u0002\u0002\u01f9\u01d4\u0003\u0002",
"\u0002\u0002\u01f9\u01db\u0003\u0002\u0002\u0002\u01f9\u01dc\u0003\u0002",
"\u0002\u0002\u01f9\u01de\u0003\u0002\u0002\u0002\u01f9\u01e0\u0003\u0002",
"\u0002\u0002\u01f9\u01e4\u0003\u0002\u0002\u0002\u01f9\u01ee\u0003\u0002",
"\u0002\u0002\u01f9\u01f5\u0003\u0002\u0002\u0002\u01fa;\u0003\u0002",
"\u0002\u0002\u01fb\u01fc\u0005.\u0018\u0002\u01fc\u01fd\u00070\u0002",
"\u0002\u01fd\u01fe\u0007/\u0002\u0002\u01fe\u01ff\u0005.\u0018\u0002",
"\u01ff\u0200\u0007#\u0002\u0002\u0200\u0201\u00050\u0019\u0002\u0201",
"\u0228\u0003\u0002\u0002\u0002\u0202\u0203\u0005.\u0018\u0002\u0203",
"\u0204\u00070\u0002\u0002\u0204\u0205\u0007/\u0002\u0002\u0205\u0206",
"\u0007>\u0002\u0002\u0206\u0207\u0007#\u0002\u0002\u0207\u0208\u0007",
">\u0002\u0002\u0208\u0228\u0003\u0002\u0002\u0002\u0209\u020a\u0005",
".\u0018\u0002\u020a\u020b\u00070\u0002\u0002\u020b\u020c\u0007/\u0002",
"\u0002\u020c\u020d\u0005.\u0018\u0002\u020d\u020e\u0007#\u0002\u0002",
"\u020e\u0210\u0005.\u0018\u0002\u020f\u0211\u0005\u001e\u0010\u0002",
"\u0210\u020f\u0003\u0002\u0002\u0002\u0211\u0212\u0003\u0002\u0002\u0002",
"\u0212\u0210\u0003\u0002\u0002\u0002\u0212\u0213\u0003\u0002\u0002\u0002",
"\u0213\u0228\u0003\u0002\u0002\u0002\u0214\u0215\u0005.\u0018\u0002",
"\u0215\u0216\u00070\u0002\u0002\u0216\u0217\u0007/\u0002\u0002\u0217",
"\u0218\u0007\u0015\u0002\u0002\u0218\u0219\u0005.\u0018\u0002\u0219",
"\u021a\u0007#\u0002\u0002\u021a\u021c\u0005.\u0018\u0002\u021b\u021d",
"\u0005\u001e\u0010\u0002\u021c\u021b\u0003\u0002\u0002\u0002\u021d\u021e",
"\u0003\u0002\u0002\u0002\u021e\u021c\u0003\u0002\u0002\u0002\u021e\u021f",
"\u0003\u0002\u0002\u0002\u021f\u0228\u0003\u0002\u0002\u0002\u0220\u0221",
"\u0005.\u0018\u0002\u0221\u0222\u00070\u0002\u0002\u0222\u0223\u0007",
"/\u0002\u0002\u0223\u0224\u00050\u0019\u0002\u0224\u0225\u0007\u001e",
"\u0002\u0002\u0225\u0226\u0005\f\u0007\u0002\u0226\u0228\u0003\u0002",
"\u0002\u0002\u0227\u01fb\u0003\u0002\u0002\u0002\u0227\u0202\u0003\u0002",
"\u0002\u0002\u0227\u0209\u0003\u0002\u0002\u0002\u0227\u0214\u0003\u0002",
"\u0002\u0002\u0227\u0220\u0003\u0002\u0002\u0002\u0228=\u0003\u0002",
"\u0002\u0002\u0229\u022a\u0007$\u0002\u0002\u022a\u022b\u0005 \u0011",
"\u0002\u022b\u0236\u0007,\u0002\u0002\u022c\u0231\u0005:\u001e\u0002",
"\u022d\u022e\u0007!\u0002\u0002\u022e\u0230\u0005:\u001e\u0002\u022f",
"\u022d\u0003\u0002\u0002\u0002\u0230\u0233\u0003\u0002\u0002\u0002\u0231",
"\u022f\u0003\u0002\u0002\u0002\u0231\u0232\u0003\u0002\u0002\u0002\u0232",
"\u0235\u0003\u0002\u0002\u0002\u0233\u0231\u0003\u0002\u0002\u0002\u0234",
"\u022c\u0003\u0002\u0002\u0002\u0235\u0238\u0003\u0002\u0002\u0002\u0236",
"\u0234\u0003\u0002\u0002\u0002\u0236\u0237\u0003\u0002\u0002\u0002\u0237",
"?\u0003\u0002\u0002\u0002\u0238\u0236\u0003\u0002\u0002\u0002\u0239",
"\u023e\u0005:\u001e\u0002\u023a\u023b\u0007!\u0002\u0002\u023b\u023d",
"\u0005:\u001e\u0002\u023c\u023a\u0003\u0002\u0002\u0002\u023d\u0240",
"\u0003\u0002\u0002\u0002\u023e\u023c\u0003\u0002\u0002\u0002\u023e\u023f",
"\u0003\u0002\u0002\u0002\u023fA\u0003\u0002\u0002\u0002\u0240\u023e",
"\u0003\u0002\u0002\u0002\u0241\u0242\u0005@!\u0002\u0242\u0243\u0007",
"\u0002\u0002\u0003\u0243C\u0003\u0002\u0002\u0002\u0244\u0245\u0005",
"8\u001d\u0002\u0245E\u0003\u0002\u0002\u0002\u0246\u0249\u0005J&\u0002",
"\u0247\u0249\u0005H%\u0002\u0248\u0246\u0003\u0002\u0002\u0002\u0248",
"\u0247\u0003\u0002\u0002\u0002\u0249G\u0003\u0002\u0002\u0002\u024a",
"\u024b\u0007\u001f\u0002\u0002\u024b\u024c\u0005L\'\u0002\u024c\u024d",
"\u0005N(\u0002\u024d\u024e\u0005P)\u0002\u024eI\u0003\u0002\u0002\u0002",
"\u024f\u0250\u0007\u0010\u0002\u0002\u0250\u0251\u0005L\'\u0002\u0251",
"\u0252\u0005N(\u0002\u0252\u0253\u0005P)\u0002\u0253K\u0003\u0002\u0002",
"\u0002\u0254\u0257\u00054\u001b\u0002\u0255\u0257\u0005.\u0018\u0002",
"\u0256\u0254\u0003\u0002\u0002\u0002\u0256\u0255\u0003\u0002\u0002\u0002",
"\u0257M\u0003\u0002\u0002\u0002\u0258\u0263\u0007\'\u0002\u0002\u0259",
"\u025e\u0005D#\u0002\u025a\u025b\u0007+\u0002\u0002\u025b\u025d\u0005",
"D#\u0002\u025c\u025a\u0003\u0002\u0002\u0002\u025d\u0260\u0003\u0002",
"\u0002\u0002\u025e\u025c\u0003\u0002\u0002\u0002\u025e\u025f\u0003\u0002",
"\u0002\u0002\u025f\u0262\u0003\u0002\u0002\u0002\u0260\u025e\u0003\u0002",
"\u0002\u0002\u0261\u0259\u0003\u0002\u0002\u0002\u0262\u0265\u0003\u0002",
"\u0002\u0002\u0263\u0261\u0003\u0002\u0002\u0002\u0263\u0264\u0003\u0002",
"\u0002\u0002\u0264\u0266\u0003\u0002\u0002\u0002\u0265\u0263\u0003\u0002",
"\u0002\u0002\u0266\u0267\u0007(\u0002\u0002\u0267O\u0003\u0002\u0002",
"\u0002\u0268\u026a\u0005@!\u0002\u0269\u0268\u0003\u0002\u0002\u0002",
"\u0269\u026a\u0003\u0002\u0002\u0002\u026a\u026b\u0003\u0002\u0002\u0002",
"\u026b\u026c\u0007\f\u0002\u0002\u026cQ\u0003\u0002\u0002\u0002\u026d",
"\u026e\u0007\u0013\u0002\u0002\u026e\u026f\u00058\u001d\u0002\u026f",
"\u0270\u0007.\u0002\u0002\u0270\u0271\u0005\u0014\u000b\u0002\u0271",
"S\u0003\u0002\u0002\u0002\u0272\u0273\u0007\u000b\u0002\u0002\u0273",
"\u0274\u0005\u0014\u000b\u0002\u0274\u0275\u0007,\u0002\u0002\u0275",
"U\u0003\u0002\u0002\u0002\u0276\u0277\u0007\u000f\u0002\u0002\u0277",
"\u0278\u00054\u001b\u0002\u0278\u0283\u0007\'\u0002\u0002\u0279\u027e",
"\u0005D#\u0002\u027a\u027b\u0007+\u0002\u0002\u027b\u027d\u0005D#\u0002",
"\u027c\u027a\u0003\u0002\u0002\u0002\u027d\u0280\u0003\u0002\u0002\u0002",
"\u027e\u027c\u0003\u0002\u0002\u0002\u027e\u027f\u0003\u0002\u0002\u0002",
"\u027f\u0282\u0003\u0002\u0002\u0002\u0280\u027e\u0003\u0002\u0002\u0002",
"\u0281\u0279\u0003\u0002\u0002\u0002\u0282\u0285\u0003\u0002\u0002\u0002",
"\u0283\u0281\u0003\u0002\u0002\u0002\u0283\u0284\u0003\u0002\u0002\u0002",
"\u0284\u0286\u0003\u0002\u0002\u0002\u0285\u0283\u0003\u0002\u0002\u0002",
"\u0286\u0288\u0007(\u0002\u0002\u0287\u0289\u0005T+\u0002\u0288\u0287",
"\u0003\u0002\u0002\u0002\u0288\u0289\u0003\u0002\u0002\u0002\u0289\u028d",
"\u0003\u0002\u0002\u0002\u028a\u028c\u0005R*\u0002\u028b\u028a\u0003",
"\u0002\u0002\u0002\u028c\u028f\u0003\u0002\u0002\u0002\u028d\u028b\u0003",
"\u0002\u0002\u0002\u028d\u028e\u0003\u0002\u0002\u0002\u028e\u0293\u0003",
"\u0002\u0002\u0002\u028f\u028d\u0003\u0002\u0002\u0002\u0290\u0292\u0005",
"F$\u0002\u0291\u0290\u0003\u0002\u0002\u0002\u0292\u0295\u0003\u0002",
"\u0002\u0002\u0293\u0291\u0003\u0002\u0002\u0002\u0293\u0294\u0003\u0002",
"\u0002\u0002\u0294W\u0003\u0002\u0002\u0002\u0295\u0293\u0003\u0002",
"\u0002\u0002\u0296\u0297\u0007$\u0002\u0002\u0297\u02a1\u00054\u001b",
"\u0002\u0298\u0299\u0007$\u0002\u0002\u0299\u029a\u00054\u001b\u0002",
"\u029a\u029c\u0007\u001b\u0002\u0002\u029b\u029d\u0005\u0010\t\u0002",
"\u029c\u029b\u0003\u0002\u0002\u0002\u029d\u029e\u0003\u0002\u0002\u0002",
"\u029e\u029c\u0003\u0002\u0002\u0002\u029e\u029f\u0003\u0002\u0002\u0002",
"\u029f\u02a1\u0003\u0002\u0002\u0002\u02a0\u0296\u0003\u0002\u0002\u0002",
"\u02a0\u0298\u0003\u0002\u0002\u0002\u02a1Y\u0003\u0002\u0002\u0002",
"\u02a2\u02a3\u0007\b\u0002\u0002\u02a3\u02a5\u0005.\u0018\u0002\u02a4",
"\u02a6\u00056\u001c\u0002\u02a5\u02a4\u0003\u0002\u0002\u0002\u02a5",
"\u02a6\u0003\u0002\u0002\u0002\u02a6\u02a7\u0003\u0002\u0002\u0002\u02a7",
"\u02a8\u0007.\u0002\u0002\u02a8\u02a9\u0005\u0014\u000b\u0002\u02a9",
"\u02b5\u0003\u0002\u0002\u0002\u02aa\u02ab\u0007\u001a\u0002\u0002\u02ab",
"\u02b5\u00054\u001b\u0002\u02ac\u02ad\u0007\u001a\u0002\u0002\u02ad",
"\u02ae\u00054\u001b\u0002\u02ae\u02b0\u0007.\u0002\u0002\u02af\u02b1",
"\u0005X-\u0002\u02b0\u02af\u0003\u0002\u0002\u0002\u02b1\u02b2\u0003",
"\u0002\u0002\u0002\u02b2\u02b0\u0003\u0002\u0002\u0002\u02b2\u02b3\u0003",
"\u0002\u0002\u0002\u02b3\u02b5\u0003\u0002\u0002\u0002\u02b4\u02a2\u0003",
"\u0002\u0002\u0002\u02b4\u02aa\u0003\u0002\u0002\u0002\u02b4\u02ac\u0003",
"\u0002\u0002\u0002\u02b5[\u0003\u0002\u0002\u0002\u02b6\u02b7\u0007",
"\u0006\u0002\u0002\u02b7\u02bb\u00054\u001b\u0002\u02b8\u02ba\u0005",
"Z.\u0002\u02b9\u02b8\u0003\u0002\u0002\u0002\u02ba\u02bd\u0003\u0002",
"\u0002\u0002\u02bb\u02b9\u0003\u0002\u0002\u0002\u02bb\u02bc\u0003\u0002",
"\u0002\u0002\u02bc]\u0003\u0002\u0002\u0002\u02bd\u02bb\u0003\u0002",
"\u0002\u0002\u02be\u02bf\u0007\u0019\u0002\u0002\u02bf\u02c1\u00075",
"\u0002\u0002\u02c0\u02c2\u0005b2\u0002\u02c1\u02c0\u0003\u0002\u0002",
"\u0002\u02c1\u02c2\u0003\u0002\u0002\u0002\u02c2\u02c3\u0003\u0002\u0002",
"\u0002\u02c3\u02c4\u0005\\/\u0002\u02c4\u02c5\u0007\u0002\u0002\u0003",
"\u02c5_\u0003\u0002\u0002\u0002\u02c6\u02cc\u00054\u001b\u0002\u02c7",
"\u02c8\u00054\u001b\u0002\u02c8\u02c9\u0007\u001e\u0002\u0002\u02c9",
"\u02ca\u00054\u001b\u0002\u02ca\u02cc\u0003\u0002\u0002\u0002\u02cb",
"\u02c6\u0003\u0002\u0002\u0002\u02cb\u02c7\u0003\u0002\u0002\u0002\u02cc",
"a\u0003\u0002\u0002\u0002\u02cd\u02d1\u0007\u0007\u0002\u0002\u02ce",
"\u02d0\u0005`1\u0002\u02cf\u02ce\u0003\u0002\u0002\u0002\u02d0\u02d3",
"\u0003\u0002\u0002\u0002\u02d1\u02cf\u0003\u0002\u0002\u0002\u02d1\u02d2",
"\u0003\u0002\u0002\u0002\u02d2c\u0003\u0002\u0002\u0002\u02d3\u02d1",
"\u0003\u0002\u0002\u0002\u02d4\u02d5\u0007\u0019\u0002\u0002\u02d5\u02d7",
"\u00075\u0002\u0002\u02d6\u02d8\u0005b2\u0002\u02d7\u02d6\u0003\u0002",
"\u0002\u0002\u02d7\u02d8\u0003\u0002\u0002\u0002\u02d8\u02da\u0003\u0002",
"\u0002\u0002\u02d9\u02db\u0005\\/\u0002\u02da\u02d9\u0003\u0002\u0002",
"\u0002\u02da\u02db\u0003\u0002\u0002\u0002\u02db\u02dc\u0003\u0002\u0002",
"\u0002\u02dc\u02dd\u0005V,\u0002\u02dd\u02de\u0007\u0002\u0002\u0003",
"\u02dee\u0003\u0002\u0002\u0002Ggu\u0080\u008c\u0092\u0095\u00a3\u00a8",
"\u00b7\u00be\u00cf\u00d6\u00e4\u00f1\u0105\u010b\u0115\u0120\u0127\u012c",
"\u0138\u013a\u013e\u0149\u014f\u015e\u0161\u016a\u0179\u017e\u0182\u0192",
"\u019c\u01a0\u01c0\u01c9\u01cf\u01d9\u01e2\u01ea\u01f2\u01f9\u0212\u021e",
"\u0227\u0231\u0236\u023e\u0248\u0256\u025e\u0263\u0269\u027e\u0283\u0288",
"\u028d\u0293\u029e\u02a0\u02a5\u02b2\u02b4\u02bb\u02c1\u02cb\u02d1\u02d7",
"\u02da"].join("");
const atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);
const decisionsToDFA = atn.decisionToState.map( (ds, index) => new antlr4.dfa.DFA(ds, index) );
const sharedContextCache = new antlr4.PredictionContextCache();
export default class scillaParser extends antlr4.Parser {
static grammarFileName = "scilla.g4";
static literalNames = [ null, "'-'", "'forall'", "'builtin'", "'library'",
"'import'", "'let'", "'in'", "'match'", "'with'",
"'end'", "'fun'", "'tfun'", "'contract'", "'transition'",
"'send'", "'event'", "'field'", "'accept'",
"'exists'", "'delete'", "'Emp'", "'Map'", "'scilla_version'",
"'type'", "'of'", "'try'", "'catch'", "'as'",
"'procedure'", "'throw'", "';'", "':'", "'.'",
"'|'", "'['", "']'", "'('", "')'", "'{'", "'}'",
"','", "'=>'", "'->'", "'='", "'&'", "'<-'",
"':='", "'@'", "'_'", null, null, null, null,
null, null, "'Event'" ];
static symbolicNames = [ null, null, "FORALL", "BUILTIN", "LIBRARY",
"IMPORT", "LET", "IN", "MATCH", "WITH", "END",
"FUN", "TFUN", "CONTRACT", "TRANSITION", "SEND",
"EVENT", "FIELD", "ACCEPT", "EXISTS", "DELETE",
"EMP", "MAP", "SCILLA_VERSION", "TYPE", "OF",
"TRY", "CATCH", "AS", "PROCEDURE", "THROW",
"SEMICOLON", "COLON", "PERIOD", "BAR", "LSQB",
"RSQB", "LPAREN", "RPAREN", "LBRACE", "RBRACE",
"COMMA", "ARROW", "TARROW", "EQ", "AND", "FETCH",
"ASSIGN", "AT", "UNDERSCORE", "BlockComment",
"NUMBER", "STRING", "FLOAT", "HEX", "BYSTR",
"EVENT_TY", "WS", "TOSKIP", "ID", "SPID", "CID",
"TID" ];
static ruleNames = [ "int_", "t_map_key", "t_map_value_args", "t_map_value",
"t_map_value_allow_targs", "address_typ", "typ",
"targ", "address_type_field", "exp", "simple_exp",
"atomic_exp", "lit", "ctargs", "map_access", "pattern",
"arg_pattern", "exp_pm_clause", "msg_entry", "builtin_args",
"exp_term", "type_term", "identifier", "sid", "scid",
"cid", "type_annot", "id_with_typ", "stmt", "remote_fetch_stmt",
"stmt_pm_clause", "stmts", "stmts_term", "param_pair",
"component", "procedure", "transition", "component_id",
"component_params", "component_body", "field",
"with_constraint", "contract", "tconstr", "libentry",
"library", "lmodule", "importname", "imports",
"cmodule" ];
constructor(input) {
super(input);
this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache);
this.ruleNames = scillaParser.ruleNames;
this.literalNames = scillaParser.literalNames;
this.symbolicNames = scillaParser.symbolicNames;
}
get atn() {
return atn;
}
sempred(localctx, ruleIndex, predIndex) {
switch(ruleIndex) {
case 6:
return this.typ_sempred(localctx, predIndex);
default:
throw "No predicate with index:" + ruleIndex;
}
}
typ_sempred(localctx, predIndex) {
switch(predIndex) {
case 0:
return this.precpred(this._ctx, 5);
default:
throw "No predicate with index:" + predIndex;
}
};
int_() {
let localctx = new Int_Context(this, this._ctx, this.state);
this.enterRule(localctx, 0, scillaParser.RULE_int_);
var _la = 0; // Token type
try {
this.enterOuterAlt(localctx, 1);
this.state = 101;
this._errHandler.sync(this);
_la = this._input.LA(1);
if(_la===scillaParser.T__0) {
this.state = 100;
this.match(scillaParser.T__0);
}
this.state = 103;
this.match(scillaParser.NUMBER);
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
}
t_map_key() {
let localctx = new T_map_keyContext(this, this._ctx, this.state);
this.enterRule(localctx, 2, scillaParser.RULE_t_map_key);
try {
this.state = 115;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,1,this._ctx);
switch(la_) {
case 1:
this.enterOuterAlt(localctx, 1);
this.state = 105;
localctx.kt_to_map = this.scid();
break;
case 2:
this.enterOuterAlt(localctx, 2);
this.state = 106;
this.match(scillaParser.LPAREN);
this.state = 107;
localctx.kt_to_map = this.scid();
this.state = 108;
this.match(scillaParser.RPAREN);
break;
case 3:
this.enterOuterAlt(localctx, 3);
this.state = 110;
this.match(scillaParser.LPAREN);
this.state = 111;
localctx.kt = this.address_typ();
this.state = 112;
this.match(scillaParser.RPAREN);
break;
case 4:
this.enterOuterAlt(localctx, 4);
this.state = 114;
localctx.kt = this.address_typ();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
}
t_map_value_args() {
let localctx = new T_map_value_argsContext(this, this._ctx, this.state);
this.enterRule(localctx, 4, scillaParser.RULE_t_map_value_args);
try {
this.state = 126;
this._errHandler.sync(this);
switch(this._input.LA(1)) {
case scillaParser.LPAREN:
localctx = new TMP3Context(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 117;
this.match(scillaParser.LPAREN);
this.state = 118;
localctx.t = this.t_map_value_allow_targs();
this.state = 119;
this.match(scillaParser.RPAREN);
break;
case scillaParser.HEX:
case scillaParser.BYSTR:
case scillaParser.CID:
localctx = new TMP4Context(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 121;
localctx.d = this.scid();
break;
case scillaParser.MAP:
localctx = new TMP5Context(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 122;
this.match(scillaParser.MAP);
this.state = 123;
localctx.k = this.t_map_key();
this.state = 124;
localctx.v = this.t_map_value();
break;
default:
throw new antlr4.error.NoViableAltException(this);
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
}
t_map_value() {
let localctx = new T_map_valueContext(this, this._ctx, this.state);
this.enterRule(localctx, 6, scillaParser.RULE_t_map_value);
try {
this.state = 138;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,3,this._ctx);
switch(la_) {
case 1:
localctx = new TMPScidContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 128;
localctx.d = this.scid();
break;
case 2:
localctx = new TMPMapContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 129;
this.match(scillaParser.MAP);
this.state = 130;
localctx.k = this.t_map_key();
this.state = 131;
localctx.v = this.t_map_value();
break;
case 3:
localctx = new TMPParenContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 133;
this.match(scillaParser.LPAREN);
this.state = 134;
localctx.t = this.t_map_value_allow_targs();
this.state = 135;
this.match(scillaParser.RPAREN);
break;
case 4:
localctx = new TMPAddrContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 137;
localctx.vt = this.address_typ();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
}
t_map_value_allow_targs() {
let localctx = new T_map_value_allow_targsContext(this, this._ctx, this.state);
this.enterRule(localctx, 8, scillaParser.RULE_t_map_value_allow_targs);
var _la = 0; // Token type
try {
this.state = 147;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,5,this._ctx);
switch(la_) {
case 1:
localctx = new TMP1Context(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 140;
localctx.d = this.scid();
this.state = 142;
this._errHandler.sync(this);
_la = this._input.LA(1);
do {
this.state = 141;
localctx._t_map_value_args = this.t_map_value_args();
localctx.t_args.push(localctx._t_map_value_args);
this.state = 144;
this._errHandler.sync(this);
_la = this._input.LA(1);
} while(_la===scillaParser.MAP || ((((_la - 37)) & ~0x1f) == 0 && ((1 << (_la - 37)) & ((1 << (scillaParser.LPAREN - 37)) | (1 << (scillaParser.HEX - 37)) | (1 << (scillaParser.BYSTR - 37)) | (1 << (scillaParser.CID - 37)))) !== 0));
break;
case 2:
localctx = new TMP2Context(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 146;
this.t_map_value();
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
}
address_typ() {
let localctx = new Address_typContext(this, this._ctx, this.state);
this.enterRule(localctx, 10, scillaParser.RULE_address_typ);
var _la = 0; // Token type
try {
this.state = 181;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,8,this._ctx);
switch(la_) {
case 1:
localctx = new AnyAdressContext(this, localctx);
this.enterOuterAlt(localctx, 1);
this.state = 149;
localctx.d = this.cid();
this.state = 150;
this.match(scillaParser.WITH);
this.state = 151;
this.match(scillaParser.END);
break;
case 2:
localctx = new ContrAddrContext(this, localctx);
this.enterOuterAlt(localctx, 2);
this.state = 153;
localctx.d = this.cid();
this.state = 154;
this.match(scillaParser.WITH);
this.state = 155;
this.match(scillaParser.CONTRACT);
this.state = 166;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===scillaParser.FIELD) {
this.state = 156;
localctx._address_type_field = this.address_type_field();
localctx.fs.push(localctx._address_type_field);
this.state = 161;
this._errHandler.sync(this);
_la = this._input.LA(1);
while(_la===scillaParser.COMMA) {
this.state = 157;
this.match(scillaParser.COMMA);
this.state = 158;
localctx._address_type_field = this.address_type_field();
localctx.fs.push(localctx._address_type_field);
this.state = 163;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 168;
this._errHandler.sync(this);
_la = this._input.LA(1);
}
this.state = 169;
this.match(scillaParser.END);
break;
case 3:
localctx = new LibAddrContext(this, localctx);
this.enterOuterAlt(localctx, 3);
this.state = 171;
localctx.d = this.cid();
this.state = 172;
this.match(scillaParser.WITH);
this.state = 173;
this.match(scillaParser.LIBRARY);
this.state = 174;
this.match(scillaParser.END);
break;
case 4:
localctx = new CodeAddrContext(this, localctx);
this.enterOuterAlt(localctx, 4);
this.state = 176;
localctx.d = this.cid();
this.state = 177;
this.match(scillaParser.WITH);
this.state = 178;
localctx.c = this.match(scillaParser.SPID);
this.state = 179;
this.match(scillaParser.END);
break;
}
} catch (re) {
if(re instanceof antlr4.error.RecognitionException) {
localctx.exception = re;
this._errHandler.reportError(this, re);
this._errHandler.recover(this, re);
} else {
throw re;
}
} finally {
this.exitRule();
}
return localctx;
}
typ(_p) {
if(_p===undefined) {
_p = 0;
}
const _parentctx = this._ctx;
const _parentState = this.state;
let localctx = new TypContext(this, this._ctx, _parentState);
let _prevctx = localctx;
const _startState = 12;
this.enterRecursionRule(localctx, 12, scillaParser.RULE_typ, _p);
try {
this.enterOuterAlt(localctx, 1);
this.state = 205;
this._errHandler.sync(this);
var la_ = this._interp.adaptivePredict(this._input,10,this._ctx);
switch(la_) {
case 1:
localctx = new PrimorADTTypeContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 184;
localctx.d = this.scid();
this.state = 188;
this._errHandler.sync(this);
var _alt = this._interp.adaptivePredict(this._input,9,this._ctx)
while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
if(_alt===1) {
this.state = 185;
localctx._targ = this.targ();
localctx.targs.push(localctx._targ);
}
this.state = 190;
this._errHandler.sync(this);
_alt = this._interp.adaptivePredict(this._input,9,this._ctx);
}
break;
case 2:
localctx = new MapTypeContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 191;
this.match(scillaParser.MAP);
this.state = 192;
localctx.k = this.t_map_key();
this.state = 193;
localctx.v = this.t_map_value();
break;
case 3:
localctx = new ParenTypeContext(this, localctx);
this._ctx = localctx;
_prevctx = localctx;
this.state = 195;
this.match(scillaParser.LPAREN);
this.state = 196;
localctx.t = this.typ(0);
this.state = 197;
this.match(scillaParser.RPAREN);
break;
case 4: