AReaL/evaluation/latex2sympy/gen/PSParser.py

16513 lines
326 KiB
Python

# Generated from PS.g4 by ANTLR 4.11.1
# encoding: utf-8
from __future__ import print_function
import sys
from io import StringIO
from antlr4 import *
def serializedATN():
return [
4,
1,
194,
1046,
2,
0,
7,
0,
2,
1,
7,
1,
2,
2,
7,
2,
2,
3,
7,
3,
2,
4,
7,
4,
2,
5,
7,
5,
2,
6,
7,
6,
2,
7,
7,
7,
2,
8,
7,
8,
2,
9,
7,
9,
2,
10,
7,
10,
2,
11,
7,
11,
2,
12,
7,
12,
2,
13,
7,
13,
2,
14,
7,
14,
2,
15,
7,
15,
2,
16,
7,
16,
2,
17,
7,
17,
2,
18,
7,
18,
2,
19,
7,
19,
2,
20,
7,
20,
2,
21,
7,
21,
2,
22,
7,
22,
2,
23,
7,
23,
2,
24,
7,
24,
2,
25,
7,
25,
2,
26,
7,
26,
2,
27,
7,
27,
2,
28,
7,
28,
2,
29,
7,
29,
2,
30,
7,
30,
2,
31,
7,
31,
2,
32,
7,
32,
2,
33,
7,
33,
2,
34,
7,
34,
2,
35,
7,
35,
2,
36,
7,
36,
2,
37,
7,
37,
2,
38,
7,
38,
2,
39,
7,
39,
2,
40,
7,
40,
2,
41,
7,
41,
2,
42,
7,
42,
2,
43,
7,
43,
2,
44,
7,
44,
2,
45,
7,
45,
2,
46,
7,
46,
2,
47,
7,
47,
2,
48,
7,
48,
2,
49,
7,
49,
2,
50,
7,
50,
2,
51,
7,
51,
2,
52,
7,
52,
2,
53,
7,
53,
2,
54,
7,
54,
2,
55,
7,
55,
2,
56,
7,
56,
2,
57,
7,
57,
2,
58,
7,
58,
2,
59,
7,
59,
2,
60,
7,
60,
2,
61,
7,
61,
2,
62,
7,
62,
1,
0,
1,
0,
1,
1,
1,
1,
3,
1,
131,
8,
1,
1,
2,
1,
2,
1,
3,
1,
3,
1,
3,
1,
3,
1,
3,
1,
3,
3,
3,
141,
8,
3,
1,
4,
1,
4,
1,
4,
1,
4,
3,
4,
147,
8,
4,
1,
4,
1,
4,
1,
5,
1,
5,
1,
5,
1,
5,
1,
6,
1,
6,
1,
6,
1,
7,
1,
7,
1,
7,
3,
7,
161,
8,
7,
1,
8,
1,
8,
1,
8,
5,
8,
166,
8,
8,
10,
8,
12,
8,
169,
9,
8,
1,
9,
1,
9,
1,
9,
1,
9,
5,
9,
175,
8,
9,
10,
9,
12,
9,
178,
9,
9,
1,
9,
3,
9,
181,
8,
9,
1,
9,
1,
9,
1,
9,
1,
9,
1,
9,
1,
9,
3,
9,
189,
8,
9,
1,
9,
1,
9,
1,
9,
1,
9,
3,
9,
195,
8,
9,
1,
10,
1,
10,
1,
10,
1,
10,
5,
10,
201,
8,
10,
10,
10,
12,
10,
204,
9,
10,
1,
10,
3,
10,
207,
8,
10,
1,
10,
1,
10,
1,
11,
1,
11,
1,
11,
5,
11,
214,
8,
11,
10,
11,
12,
11,
217,
9,
11,
1,
12,
1,
12,
1,
12,
1,
12,
1,
12,
1,
12,
5,
12,
225,
8,
12,
10,
12,
12,
12,
228,
9,
12,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
1,
13,
3,
13,
267,
8,
13,
1,
14,
1,
14,
1,
14,
1,
14,
1,
14,
5,
14,
274,
8,
14,
10,
14,
12,
14,
277,
9,
14,
1,
14,
1,
14,
1,
14,
1,
14,
1,
14,
5,
14,
284,
8,
14,
10,
14,
12,
14,
287,
9,
14,
3,
14,
289,
8,
14,
1,
15,
1,
15,
1,
15,
1,
15,
1,
16,
1,
16,
1,
17,
1,
17,
1,
17,
1,
17,
1,
17,
1,
17,
5,
17,
303,
8,
17,
10,
17,
12,
17,
306,
9,
17,
1,
18,
1,
18,
1,
18,
1,
18,
1,
18,
1,
18,
5,
18,
314,
8,
18,
10,
18,
12,
18,
317,
9,
18,
1,
19,
1,
19,
1,
19,
1,
19,
1,
19,
1,
19,
5,
19,
325,
8,
19,
10,
19,
12,
19,
328,
9,
19,
1,
20,
1,
20,
1,
20,
4,
20,
333,
8,
20,
11,
20,
12,
20,
334,
3,
20,
337,
8,
20,
1,
21,
1,
21,
1,
21,
1,
21,
5,
21,
343,
8,
21,
10,
21,
12,
21,
346,
9,
21,
3,
21,
348,
8,
21,
1,
22,
1,
22,
5,
22,
352,
8,
22,
10,
22,
12,
22,
355,
9,
22,
1,
23,
1,
23,
5,
23,
359,
8,
23,
10,
23,
12,
23,
362,
9,
23,
1,
24,
1,
24,
1,
24,
3,
24,
367,
8,
24,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
1,
25,
3,
25,
375,
8,
25,
1,
26,
1,
26,
1,
26,
1,
26,
3,
26,
381,
8,
26,
1,
26,
1,
26,
1,
27,
1,
27,
1,
27,
1,
27,
3,
27,
389,
8,
27,
1,
27,
1,
27,
1,
28,
1,
28,
1,
28,
1,
28,
1,
28,
1,
28,
1,
28,
1,
28,
1,
28,
1,
28,
3,
28,
403,
8,
28,
1,
28,
3,
28,
406,
8,
28,
5,
28,
408,
8,
28,
10,
28,
12,
28,
411,
9,
28,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
1,
29,
3,
29,
423,
8,
29,
1,
29,
3,
29,
426,
8,
29,
5,
29,
428,
8,
29,
10,
29,
12,
29,
431,
9,
29,
1,
30,
1,
30,
1,
30,
1,
30,
1,
30,
1,
30,
1,
30,
1,
30,
1,
30,
1,
30,
1,
30,
3,
30,
444,
8,
30,
1,
31,
1,
31,
1,
31,
1,
31,
1,
31,
1,
31,
1,
31,
1,
31,
1,
31,
1,
31,
3,
31,
456,
8,
31,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
1,
32,
3,
32,
570,
8,
32,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
1,
33,
3,
33,
588,
8,
33,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
1,
34,
3,
34,
638,
8,
34,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
1,
35,
3,
35,
672,
8,
35,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
1,
36,
3,
36,
706,
8,
36,
1,
37,
1,
37,
1,
37,
1,
37,
1,
37,
1,
38,
1,
38,
1,
38,
1,
38,
3,
38,
717,
8,
38,
1,
38,
3,
38,
720,
8,
38,
1,
39,
1,
39,
1,
39,
1,
39,
3,
39,
726,
8,
39,
1,
39,
1,
39,
1,
39,
1,
39,
1,
39,
1,
39,
1,
39,
1,
39,
3,
39,
736,
8,
39,
1,
40,
1,
40,
1,
40,
1,
40,
1,
40,
1,
40,
1,
40,
1,
40,
3,
40,
746,
8,
40,
1,
41,
1,
41,
1,
41,
1,
41,
1,
41,
1,
42,
4,
42,
754,
8,
42,
11,
42,
12,
42,
755,
1,
43,
1,
43,
1,
43,
1,
43,
1,
43,
1,
43,
1,
43,
1,
43,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
1,
44,
3,
44,
780,
8,
44,
1,
45,
1,
45,
1,
46,
1,
46,
1,
47,
1,
47,
1,
48,
1,
48,
1,
49,
1,
49,
1,
49,
1,
49,
1,
49,
1,
49,
3,
49,
796,
8,
49,
1,
50,
1,
50,
1,
50,
1,
50,
1,
50,
1,
50,
3,
50,
804,
8,
50,
1,
51,
1,
51,
3,
51,
808,
8,
51,
1,
51,
3,
51,
811,
8,
51,
1,
51,
3,
51,
814,
8,
51,
1,
51,
3,
51,
817,
8,
51,
3,
51,
819,
8,
51,
1,
51,
3,
51,
822,
8,
51,
1,
51,
1,
51,
1,
51,
3,
51,
827,
8,
51,
1,
51,
1,
51,
1,
51,
3,
51,
832,
8,
51,
1,
51,
1,
51,
1,
51,
3,
51,
837,
8,
51,
1,
51,
1,
51,
1,
51,
3,
51,
842,
8,
51,
1,
51,
1,
51,
3,
51,
846,
8,
51,
1,
51,
3,
51,
849,
8,
51,
1,
51,
3,
51,
852,
8,
51,
1,
51,
3,
51,
855,
8,
51,
3,
51,
857,
8,
51,
1,
51,
3,
51,
860,
8,
51,
1,
51,
1,
51,
1,
51,
3,
51,
865,
8,
51,
1,
51,
1,
51,
1,
51,
3,
51,
870,
8,
51,
1,
51,
1,
51,
1,
51,
3,
51,
875,
8,
51,
1,
51,
1,
51,
1,
51,
3,
51,
880,
8,
51,
1,
51,
1,
51,
3,
51,
884,
8,
51,
1,
51,
3,
51,
887,
8,
51,
1,
51,
1,
51,
1,
51,
1,
51,
3,
51,
893,
8,
51,
1,
51,
1,
51,
3,
51,
897,
8,
51,
1,
51,
1,
51,
3,
51,
901,
8,
51,
1,
51,
1,
51,
1,
51,
1,
51,
3,
51,
907,
8,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
3,
51,
932,
8,
51,
1,
51,
3,
51,
935,
8,
51,
1,
51,
1,
51,
1,
51,
3,
51,
940,
8,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
3,
51,
947,
8,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
3,
51,
960,
8,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
1,
51,
3,
51,
970,
8,
51,
3,
51,
972,
8,
51,
1,
52,
1,
52,
1,
52,
1,
52,
1,
52,
3,
52,
979,
8,
52,
1,
53,
1,
53,
1,
53,
1,
53,
1,
53,
1,
53,
1,
53,
1,
53,
3,
53,
989,
8,
53,
1,
54,
1,
54,
1,
54,
1,
54,
1,
54,
1,
54,
1,
54,
1,
54,
1,
54,
3,
54,
1000,
8,
54,
1,
54,
1,
54,
1,
55,
1,
55,
1,
56,
1,
56,
1,
57,
1,
57,
1,
57,
1,
57,
1,
57,
3,
57,
1013,
8,
57,
1,
58,
1,
58,
1,
59,
1,
59,
1,
59,
1,
59,
1,
59,
3,
59,
1022,
8,
59,
1,
59,
1,
59,
3,
59,
1026,
8,
59,
1,
60,
1,
60,
1,
60,
1,
60,
1,
60,
1,
60,
3,
60,
1034,
8,
60,
1,
61,
1,
61,
1,
61,
1,
61,
1,
61,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
1,
62,
0,
6,
24,
34,
36,
38,
56,
58,
63,
0,
2,
4,
6,
8,
10,
12,
14,
16,
18,
20,
22,
24,
26,
28,
30,
32,
34,
36,
38,
40,
42,
44,
46,
48,
50,
52,
54,
56,
58,
60,
62,
64,
66,
68,
70,
72,
74,
76,
78,
80,
82,
84,
86,
88,
90,
92,
94,
96,
98,
100,
102,
104,
106,
108,
110,
112,
114,
116,
118,
120,
122,
124,
0,
15,
2,
0,
1,
40,
154,
154,
1,
0,
41,
44,
1,
0,
181,
188,
1,
0,
182,
183,
1,
0,
47,
48,
4,
0,
49,
50,
147,
149,
153,
153,
169,
169,
1,
0,
174,
176,
3,
0,
87,
110,
124,
125,
128,
128,
2,
0,
122,
123,
126,
127,
6,
0,
111,
116,
119,
120,
129,
129,
132,
133,
135,
138,
142,
146,
4,
0,
117,
118,
130,
131,
134,
134,
139,
141,
2,
0,
51,
51,
61,
61,
2,
0,
52,
52,
62,
62,
1,
0,
85,
86,
2,
0,
176,
176,
191,
192,
1164,
0,
126,
1,
0,
0,
0,
2,
130,
1,
0,
0,
0,
4,
132,
1,
0,
0,
0,
6,
134,
1,
0,
0,
0,
8,
146,
1,
0,
0,
0,
10,
150,
1,
0,
0,
0,
12,
154,
1,
0,
0,
0,
14,
160,
1,
0,
0,
0,
16,
162,
1,
0,
0,
0,
18,
170,
1,
0,
0,
0,
20,
196,
1,
0,
0,
0,
22,
210,
1,
0,
0,
0,
24,
218,
1,
0,
0,
0,
26,
266,
1,
0,
0,
0,
28,
288,
1,
0,
0,
0,
30,
290,
1,
0,
0,
0,
32,
294,
1,
0,
0,
0,
34,
296,
1,
0,
0,
0,
36,
307,
1,
0,
0,
0,
38,
318,
1,
0,
0,
0,
40,
336,
1,
0,
0,
0,
42,
347,
1,
0,
0,
0,
44,
349,
1,
0,
0,
0,
46,
356,
1,
0,
0,
0,
48,
366,
1,
0,
0,
0,
50,
368,
1,
0,
0,
0,
52,
376,
1,
0,
0,
0,
54,
384,
1,
0,
0,
0,
56,
392,
1,
0,
0,
0,
58,
412,
1,
0,
0,
0,
60,
443,
1,
0,
0,
0,
62,
455,
1,
0,
0,
0,
64,
569,
1,
0,
0,
0,
66,
587,
1,
0,
0,
0,
68,
637,
1,
0,
0,
0,
70,
671,
1,
0,
0,
0,
72,
705,
1,
0,
0,
0,
74,
707,
1,
0,
0,
0,
76,
716,
1,
0,
0,
0,
78,
725,
1,
0,
0,
0,
80,
745,
1,
0,
0,
0,
82,
747,
1,
0,
0,
0,
84,
753,
1,
0,
0,
0,
86,
757,
1,
0,
0,
0,
88,
779,
1,
0,
0,
0,
90,
781,
1,
0,
0,
0,
92,
783,
1,
0,
0,
0,
94,
785,
1,
0,
0,
0,
96,
787,
1,
0,
0,
0,
98,
795,
1,
0,
0,
0,
100,
803,
1,
0,
0,
0,
102,
971,
1,
0,
0,
0,
104,
978,
1,
0,
0,
0,
106,
988,
1,
0,
0,
0,
108,
990,
1,
0,
0,
0,
110,
1003,
1,
0,
0,
0,
112,
1005,
1,
0,
0,
0,
114,
1012,
1,
0,
0,
0,
116,
1014,
1,
0,
0,
0,
118,
1016,
1,
0,
0,
0,
120,
1027,
1,
0,
0,
0,
122,
1035,
1,
0,
0,
0,
124,
1040,
1,
0,
0,
0,
126,
127,
7,
0,
0,
0,
127,
1,
1,
0,
0,
0,
128,
131,
3,
24,
12,
0,
129,
131,
3,
26,
13,
0,
130,
128,
1,
0,
0,
0,
130,
129,
1,
0,
0,
0,
131,
3,
1,
0,
0,
0,
132,
133,
7,
1,
0,
0,
133,
5,
1,
0,
0,
0,
134,
135,
5,
176,
0,
0,
135,
140,
5,
167,
0,
0,
136,
141,
5,
179,
0,
0,
137,
138,
5,
55,
0,
0,
138,
139,
5,
179,
0,
0,
139,
141,
5,
56,
0,
0,
140,
136,
1,
0,
0,
0,
140,
137,
1,
0,
0,
0,
141,
7,
1,
0,
0,
0,
142,
147,
3,
32,
16,
0,
143,
147,
3,
64,
32,
0,
144,
147,
5,
47,
0,
0,
145,
147,
5,
48,
0,
0,
146,
142,
1,
0,
0,
0,
146,
143,
1,
0,
0,
0,
146,
144,
1,
0,
0,
0,
146,
145,
1,
0,
0,
0,
147,
148,
1,
0,
0,
0,
148,
149,
3,
6,
3,
0,
149,
9,
1,
0,
0,
0,
150,
151,
3,
6,
3,
0,
151,
152,
5,
178,
0,
0,
152,
153,
3,
6,
3,
0,
153,
11,
1,
0,
0,
0,
154,
155,
3,
6,
3,
0,
155,
156,
3,
8,
4,
0,
156,
13,
1,
0,
0,
0,
157,
161,
3,
12,
6,
0,
158,
161,
3,
8,
4,
0,
159,
161,
3,
10,
5,
0,
160,
157,
1,
0,
0,
0,
160,
158,
1,
0,
0,
0,
160,
159,
1,
0,
0,
0,
161,
15,
1,
0,
0,
0,
162,
167,
3,
14,
7,
0,
163,
164,
5,
171,
0,
0,
164,
166,
3,
14,
7,
0,
165,
163,
1,
0,
0,
0,
166,
169,
1,
0,
0,
0,
167,
165,
1,
0,
0,
0,
167,
168,
1,
0,
0,
0,
168,
17,
1,
0,
0,
0,
169,
167,
1,
0,
0,
0,
170,
171,
5,
161,
0,
0,
171,
176,
3,
22,
11,
0,
172,
173,
5,
166,
0,
0,
173,
175,
3,
22,
11,
0,
174,
172,
1,
0,
0,
0,
175,
178,
1,
0,
0,
0,
176,
174,
1,
0,
0,
0,
176,
177,
1,
0,
0,
0,
177,
180,
1,
0,
0,
0,
178,
176,
1,
0,
0,
0,
179,
181,
5,
166,
0,
0,
180,
179,
1,
0,
0,
0,
180,
181,
1,
0,
0,
0,
181,
182,
1,
0,
0,
0,
182,
194,
5,
162,
0,
0,
183,
188,
5,
177,
0,
0,
184,
185,
5,
61,
0,
0,
185,
186,
3,
16,
8,
0,
186,
187,
5,
62,
0,
0,
187,
189,
1,
0,
0,
0,
188,
184,
1,
0,
0,
0,
188,
189,
1,
0,
0,
0,
189,
190,
1,
0,
0,
0,
190,
191,
5,
55,
0,
0,
191,
192,
3,
16,
8,
0,
192,
193,
5,
56,
0,
0,
193,
195,
1,
0,
0,
0,
194,
183,
1,
0,
0,
0,
194,
195,
1,
0,
0,
0,
195,
19,
1,
0,
0,
0,
196,
197,
5,
163,
0,
0,
197,
202,
3,
22,
11,
0,
198,
199,
5,
166,
0,
0,
199,
201,
3,
22,
11,
0,
200,
198,
1,
0,
0,
0,
201,
204,
1,
0,
0,
0,
202,
200,
1,
0,
0,
0,
202,
203,
1,
0,
0,
0,
203,
206,
1,
0,
0,
0,
204,
202,
1,
0,
0,
0,
205,
207,
5,
166,
0,
0,
206,
205,
1,
0,
0,
0,
206,
207,
1,
0,
0,
0,
207,
208,
1,
0,
0,
0,
208,
209,
5,
164,
0,
0,
209,
21,
1,
0,
0,
0,
210,
215,
3,
32,
16,
0,
211,
212,
5,
165,
0,
0,
212,
214,
3,
32,
16,
0,
213,
211,
1,
0,
0,
0,
214,
217,
1,
0,
0,
0,
215,
213,
1,
0,
0,
0,
215,
216,
1,
0,
0,
0,
216,
23,
1,
0,
0,
0,
217,
215,
1,
0,
0,
0,
218,
219,
6,
12,
-1,
0,
219,
220,
3,
32,
16,
0,
220,
226,
1,
0,
0,
0,
221,
222,
10,
2,
0,
0,
222,
223,
7,
2,
0,
0,
223,
225,
3,
24,
12,
3,
224,
221,
1,
0,
0,
0,
225,
228,
1,
0,
0,
0,
226,
224,
1,
0,
0,
0,
226,
227,
1,
0,
0,
0,
227,
25,
1,
0,
0,
0,
228,
226,
1,
0,
0,
0,
229,
267,
3,
28,
14,
0,
230,
231,
5,
61,
0,
0,
231,
232,
3,
28,
14,
0,
232,
233,
5,
62,
0,
0,
233,
267,
1,
0,
0,
0,
234,
235,
5,
55,
0,
0,
235,
236,
3,
28,
14,
0,
236,
237,
5,
56,
0,
0,
237,
267,
1,
0,
0,
0,
238,
239,
5,
57,
0,
0,
239,
240,
3,
28,
14,
0,
240,
241,
5,
58,
0,
0,
241,
267,
1,
0,
0,
0,
242,
243,
5,
78,
0,
0,
243,
244,
5,
61,
0,
0,
244,
245,
3,
28,
14,
0,
245,
246,
5,
79,
0,
0,
246,
247,
5,
62,
0,
0,
247,
267,
1,
0,
0,
0,
248,
249,
5,
78,
0,
0,
249,
250,
5,
57,
0,
0,
250,
251,
3,
28,
14,
0,
251,
252,
5,
79,
0,
0,
252,
253,
5,
58,
0,
0,
253,
267,
1,
0,
0,
0,
254,
255,
5,
80,
0,
0,
255,
256,
5,
61,
0,
0,
256,
257,
3,
28,
14,
0,
257,
258,
5,
81,
0,
0,
258,
259,
5,
62,
0,
0,
259,
267,
1,
0,
0,
0,
260,
261,
5,
80,
0,
0,
261,
262,
5,
57,
0,
0,
262,
263,
3,
28,
14,
0,
263,
264,
5,
81,
0,
0,
264,
265,
5,
58,
0,
0,
265,
267,
1,
0,
0,
0,
266,
229,
1,
0,
0,
0,
266,
230,
1,
0,
0,
0,
266,
234,
1,
0,
0,
0,
266,
238,
1,
0,
0,
0,
266,
242,
1,
0,
0,
0,
266,
248,
1,
0,
0,
0,
266,
254,
1,
0,
0,
0,
266,
260,
1,
0,
0,
0,
267,
27,
1,
0,
0,
0,
268,
269,
3,
24,
12,
0,
269,
270,
5,
171,
0,
0,
270,
275,
3,
24,
12,
0,
271,
272,
5,
171,
0,
0,
272,
274,
3,
24,
12,
0,
273,
271,
1,
0,
0,
0,
274,
277,
1,
0,
0,
0,
275,
273,
1,
0,
0,
0,
275,
276,
1,
0,
0,
0,
276,
289,
1,
0,
0,
0,
277,
275,
1,
0,
0,
0,
278,
279,
3,
24,
12,
0,
279,
280,
5,
170,
0,
0,
280,
285,
3,
24,
12,
0,
281,
282,
5,
170,
0,
0,
282,
284,
3,
24,
12,
0,
283,
281,
1,
0,
0,
0,
284,
287,
1,
0,
0,
0,
285,
283,
1,
0,
0,
0,
285,
286,
1,
0,
0,
0,
286,
289,
1,
0,
0,
0,
287,
285,
1,
0,
0,
0,
288,
268,
1,
0,
0,
0,
288,
278,
1,
0,
0,
0,
289,
29,
1,
0,
0,
0,
290,
291,
3,
32,
16,
0,
291,
292,
7,
3,
0,
0,
292,
293,
3,
32,
16,
0,
293,
31,
1,
0,
0,
0,
294,
295,
3,
34,
17,
0,
295,
33,
1,
0,
0,
0,
296,
297,
6,
17,
-1,
0,
297,
298,
3,
36,
18,
0,
298,
304,
1,
0,
0,
0,
299,
300,
10,
2,
0,
0,
300,
301,
7,
4,
0,
0,
301,
303,
3,
34,
17,
3,
302,
299,
1,
0,
0,
0,
303,
306,
1,
0,
0,
0,
304,
302,
1,
0,
0,
0,
304,
305,
1,
0,
0,
0,
305,
35,
1,
0,
0,
0,
306,
304,
1,
0,
0,
0,
307,
308,
6,
18,
-1,
0,
308,
309,
3,
40,
20,
0,
309,
315,
1,
0,
0,
0,
310,
311,
10,
2,
0,
0,
311,
312,
7,
5,
0,
0,
312,
314,
3,
36,
18,
3,
313,
310,
1,
0,
0,
0,
314,
317,
1,
0,
0,
0,
315,
313,
1,
0,
0,
0,
315,
316,
1,
0,
0,
0,
316,
37,
1,
0,
0,
0,
317,
315,
1,
0,
0,
0,
318,
319,
6,
19,
-1,
0,
319,
320,
3,
42,
21,
0,
320,
326,
1,
0,
0,
0,
321,
322,
10,
2,
0,
0,
322,
323,
7,
5,
0,
0,
323,
325,
3,
38,
19,
3,
324,
321,
1,
0,
0,
0,
325,
328,
1,
0,
0,
0,
326,
324,
1,
0,
0,
0,
326,
327,
1,
0,
0,
0,
327,
39,
1,
0,
0,
0,
328,
326,
1,
0,
0,
0,
329,
330,
7,
4,
0,
0,
330,
337,
3,
40,
20,
0,
331,
333,
3,
44,
22,
0,
332,
331,
1,
0,
0,
0,
333,
334,
1,
0,
0,
0,
334,
332,
1,
0,
0,
0,
334,
335,
1,
0,
0,
0,
335,
337,
1,
0,
0,
0,
336,
329,
1,
0,
0,
0,
336,
332,
1,
0,
0,
0,
337,
41,
1,
0,
0,
0,
338,
339,
7,
4,
0,
0,
339,
348,
3,
42,
21,
0,
340,
344,
3,
44,
22,
0,
341,
343,
3,
46,
23,
0,
342,
341,
1,
0,
0,
0,
343,
346,
1,
0,
0,
0,
344,
342,
1,
0,
0,
0,
344,
345,
1,
0,
0,
0,
345,
348,
1,
0,
0,
0,
346,
344,
1,
0,
0,
0,
347,
338,
1,
0,
0,
0,
347,
340,
1,
0,
0,
0,
348,
43,
1,
0,
0,
0,
349,
353,
3,
56,
28,
0,
350,
352,
3,
48,
24,
0,
351,
350,
1,
0,
0,
0,
352,
355,
1,
0,
0,
0,
353,
351,
1,
0,
0,
0,
353,
354,
1,
0,
0,
0,
354,
45,
1,
0,
0,
0,
355,
353,
1,
0,
0,
0,
356,
360,
3,
58,
29,
0,
357,
359,
3,
48,
24,
0,
358,
357,
1,
0,
0,
0,
359,
362,
1,
0,
0,
0,
360,
358,
1,
0,
0,
0,
360,
361,
1,
0,
0,
0,
361,
47,
1,
0,
0,
0,
362,
360,
1,
0,
0,
0,
363,
367,
5,
189,
0,
0,
364,
367,
3,
50,
25,
0,
365,
367,
3,
4,
2,
0,
366,
363,
1,
0,
0,
0,
366,
364,
1,
0,
0,
0,
366,
365,
1,
0,
0,
0,
367,
49,
1,
0,
0,
0,
368,
374,
5,
65,
0,
0,
369,
375,
3,
54,
27,
0,
370,
375,
3,
52,
26,
0,
371,
372,
3,
54,
27,
0,
372,
373,
3,
52,
26,
0,
373,
375,
1,
0,
0,
0,
374,
369,
1,
0,
0,
0,
374,
370,
1,
0,
0,
0,
374,
371,
1,
0,
0,
0,
375,
51,
1,
0,
0,
0,
376,
377,
5,
167,
0,
0,
377,
380,
5,
55,
0,
0,
378,
381,
3,
32,
16,
0,
379,
381,
3,
30,
15,
0,
380,
378,
1,
0,
0,
0,
380,
379,
1,
0,
0,
0,
381,
382,
1,
0,
0,
0,
382,
383,
5,
56,
0,
0,
383,
53,
1,
0,
0,
0,
384,
385,
5,
168,
0,
0,
385,
388,
5,
55,
0,
0,
386,
389,
3,
32,
16,
0,
387,
389,
3,
30,
15,
0,
388,
386,
1,
0,
0,
0,
388,
387,
1,
0,
0,
0,
389,
390,
1,
0,
0,
0,
390,
391,
5,
56,
0,
0,
391,
55,
1,
0,
0,
0,
392,
393,
6,
28,
-1,
0,
393,
394,
3,
60,
30,
0,
394,
409,
1,
0,
0,
0,
395,
396,
10,
2,
0,
0,
396,
402,
5,
168,
0,
0,
397,
403,
3,
80,
40,
0,
398,
399,
5,
55,
0,
0,
399,
400,
3,
32,
16,
0,
400,
401,
5,
56,
0,
0,
401,
403,
1,
0,
0,
0,
402,
397,
1,
0,
0,
0,
402,
398,
1,
0,
0,
0,
403,
405,
1,
0,
0,
0,
404,
406,
3,
118,
59,
0,
405,
404,
1,
0,
0,
0,
405,
406,
1,
0,
0,
0,
406,
408,
1,
0,
0,
0,
407,
395,
1,
0,
0,
0,
408,
411,
1,
0,
0,
0,
409,
407,
1,
0,
0,
0,
409,
410,
1,
0,
0,
0,
410,
57,
1,
0,
0,
0,
411,
409,
1,
0,
0,
0,
412,
413,
6,
29,
-1,
0,
413,
414,
3,
62,
31,
0,
414,
429,
1,
0,
0,
0,
415,
416,
10,
2,
0,
0,
416,
422,
5,
168,
0,
0,
417,
423,
3,
80,
40,
0,
418,
419,
5,
55,
0,
0,
419,
420,
3,
32,
16,
0,
420,
421,
5,
56,
0,
0,
421,
423,
1,
0,
0,
0,
422,
417,
1,
0,
0,
0,
422,
418,
1,
0,
0,
0,
423,
425,
1,
0,
0,
0,
424,
426,
3,
118,
59,
0,
425,
424,
1,
0,
0,
0,
425,
426,
1,
0,
0,
0,
426,
428,
1,
0,
0,
0,
427,
415,
1,
0,
0,
0,
428,
431,
1,
0,
0,
0,
429,
427,
1,
0,
0,
0,
429,
430,
1,
0,
0,
0,
430,
59,
1,
0,
0,
0,
431,
429,
1,
0,
0,
0,
432,
444,
3,
64,
32,
0,
433,
444,
3,
66,
33,
0,
434,
444,
3,
68,
34,
0,
435,
444,
3,
70,
35,
0,
436,
444,
3,
72,
36,
0,
437,
444,
3,
102,
51,
0,
438,
444,
3,
80,
40,
0,
439,
444,
3,
86,
43,
0,
440,
444,
3,
88,
44,
0,
441,
444,
3,
18,
9,
0,
442,
444,
3,
20,
10,
0,
443,
432,
1,
0,
0,
0,
443,
433,
1,
0,
0,
0,
443,
434,
1,
0,
0,
0,
443,
435,
1,
0,
0,
0,
443,
436,
1,
0,
0,
0,
443,
437,
1,
0,
0,
0,
443,
438,
1,
0,
0,
0,
443,
439,
1,
0,
0,
0,
443,
440,
1,
0,
0,
0,
443,
441,
1,
0,
0,
0,
443,
442,
1,
0,
0,
0,
444,
61,
1,
0,
0,
0,
445,
456,
3,
64,
32,
0,
446,
456,
3,
66,
33,
0,
447,
456,
3,
68,
34,
0,
448,
456,
3,
70,
35,
0,
449,
456,
3,
72,
36,
0,
450,
456,
3,
80,
40,
0,
451,
456,
3,
86,
43,
0,
452,
456,
3,
88,
44,
0,
453,
456,
3,
18,
9,
0,
454,
456,
3,
20,
10,
0,
455,
445,
1,
0,
0,
0,
455,
446,
1,
0,
0,
0,
455,
447,
1,
0,
0,
0,
455,
448,
1,
0,
0,
0,
455,
449,
1,
0,
0,
0,
455,
450,
1,
0,
0,
0,
455,
451,
1,
0,
0,
0,
455,
452,
1,
0,
0,
0,
455,
453,
1,
0,
0,
0,
455,
454,
1,
0,
0,
0,
456,
63,
1,
0,
0,
0,
457,
458,
5,
51,
0,
0,
458,
459,
3,
32,
16,
0,
459,
460,
5,
52,
0,
0,
460,
570,
1,
0,
0,
0,
461,
462,
5,
53,
0,
0,
462,
463,
3,
32,
16,
0,
463,
464,
5,
54,
0,
0,
464,
570,
1,
0,
0,
0,
465,
466,
5,
55,
0,
0,
466,
467,
3,
32,
16,
0,
467,
468,
5,
56,
0,
0,
468,
570,
1,
0,
0,
0,
469,
470,
5,
57,
0,
0,
470,
471,
3,
32,
16,
0,
471,
472,
5,
58,
0,
0,
472,
570,
1,
0,
0,
0,
473,
474,
5,
59,
0,
0,
474,
475,
3,
32,
16,
0,
475,
476,
5,
60,
0,
0,
476,
570,
1,
0,
0,
0,
477,
478,
5,
61,
0,
0,
478,
479,
3,
32,
16,
0,
479,
480,
5,
62,
0,
0,
480,
570,
1,
0,
0,
0,
481,
482,
5,
63,
0,
0,
482,
483,
3,
32,
16,
0,
483,
484,
5,
64,
0,
0,
484,
570,
1,
0,
0,
0,
485,
486,
5,
78,
0,
0,
486,
487,
5,
51,
0,
0,
487,
488,
3,
32,
16,
0,
488,
489,
5,
79,
0,
0,
489,
490,
5,
52,
0,
0,
490,
570,
1,
0,
0,
0,
491,
492,
5,
78,
0,
0,
492,
493,
5,
53,
0,
0,
493,
494,
3,
32,
16,
0,
494,
495,
5,
79,
0,
0,
495,
496,
5,
54,
0,
0,
496,
570,
1,
0,
0,
0,
497,
498,
5,
78,
0,
0,
498,
499,
5,
55,
0,
0,
499,
500,
3,
32,
16,
0,
500,
501,
5,
79,
0,
0,
501,
502,
5,
56,
0,
0,
502,
570,
1,
0,
0,
0,
503,
504,
5,
78,
0,
0,
504,
505,
5,
57,
0,
0,
505,
506,
3,
32,
16,
0,
506,
507,
5,
79,
0,
0,
507,
508,
5,
58,
0,
0,
508,
570,
1,
0,
0,
0,
509,
510,
5,
78,
0,
0,
510,
511,
5,
59,
0,
0,
511,
512,
3,
32,
16,
0,
512,
513,
5,
79,
0,
0,
513,
514,
5,
60,
0,
0,
514,
570,
1,
0,
0,
0,
515,
516,
5,
78,
0,
0,
516,
517,
5,
61,
0,
0,
517,
518,
3,
32,
16,
0,
518,
519,
5,
79,
0,
0,
519,
520,
5,
62,
0,
0,
520,
570,
1,
0,
0,
0,
521,
522,
5,
78,
0,
0,
522,
523,
5,
63,
0,
0,
523,
524,
3,
32,
16,
0,
524,
525,
5,
79,
0,
0,
525,
526,
5,
64,
0,
0,
526,
570,
1,
0,
0,
0,
527,
528,
5,
80,
0,
0,
528,
529,
5,
51,
0,
0,
529,
530,
3,
32,
16,
0,
530,
531,
5,
81,
0,
0,
531,
532,
5,
52,
0,
0,
532,
570,
1,
0,
0,
0,
533,
534,
5,
80,
0,
0,
534,
535,
5,
53,
0,
0,
535,
536,
3,
32,
16,
0,
536,
537,
5,
81,
0,
0,
537,
538,
5,
54,
0,
0,
538,
570,
1,
0,
0,
0,
539,
540,
5,
80,
0,
0,
540,
541,
5,
55,
0,
0,
541,
542,
3,
32,
16,
0,
542,
543,
5,
81,
0,
0,
543,
544,
5,
56,
0,
0,
544,
570,
1,
0,
0,
0,
545,
546,
5,
80,
0,
0,
546,
547,
5,
57,
0,
0,
547,
548,
3,
32,
16,
0,
548,
549,
5,
81,
0,
0,
549,
550,
5,
58,
0,
0,
550,
570,
1,
0,
0,
0,
551,
552,
5,
80,
0,
0,
552,
553,
5,
59,
0,
0,
553,
554,
3,
32,
16,
0,
554,
555,
5,
81,
0,
0,
555,
556,
5,
60,
0,
0,
556,
570,
1,
0,
0,
0,
557,
558,
5,
80,
0,
0,
558,
559,
5,
61,
0,
0,
559,
560,
3,
32,
16,
0,
560,
561,
5,
81,
0,
0,
561,
562,
5,
62,
0,
0,
562,
570,
1,
0,
0,
0,
563,
564,
5,
80,
0,
0,
564,
565,
5,
63,
0,
0,
565,
566,
3,
32,
16,
0,
566,
567,
5,
81,
0,
0,
567,
568,
5,
64,
0,
0,
568,
570,
1,
0,
0,
0,
569,
457,
1,
0,
0,
0,
569,
461,
1,
0,
0,
0,
569,
465,
1,
0,
0,
0,
569,
469,
1,
0,
0,
0,
569,
473,
1,
0,
0,
0,
569,
477,
1,
0,
0,
0,
569,
481,
1,
0,
0,
0,
569,
485,
1,
0,
0,
0,
569,
491,
1,
0,
0,
0,
569,
497,
1,
0,
0,
0,
569,
503,
1,
0,
0,
0,
569,
509,
1,
0,
0,
0,
569,
515,
1,
0,
0,
0,
569,
521,
1,
0,
0,
0,
569,
527,
1,
0,
0,
0,
569,
533,
1,
0,
0,
0,
569,
539,
1,
0,
0,
0,
569,
545,
1,
0,
0,
0,
569,
551,
1,
0,
0,
0,
569,
557,
1,
0,
0,
0,
569,
563,
1,
0,
0,
0,
570,
65,
1,
0,
0,
0,
571,
572,
5,
69,
0,
0,
572,
573,
3,
32,
16,
0,
573,
574,
5,
69,
0,
0,
574,
588,
1,
0,
0,
0,
575,
576,
5,
78,
0,
0,
576,
577,
5,
69,
0,
0,
577,
578,
3,
32,
16,
0,
578,
579,
5,
79,
0,
0,
579,
580,
5,
69,
0,
0,
580,
588,
1,
0,
0,
0,
581,
582,
5,
80,
0,
0,
582,
583,
5,
69,
0,
0,
583,
584,
3,
32,
16,
0,
584,
585,
5,
81,
0,
0,
585,
586,
5,
69,
0,
0,
586,
588,
1,
0,
0,
0,
587,
571,
1,
0,
0,
0,
587,
575,
1,
0,
0,
0,
587,
581,
1,
0,
0,
0,
588,
67,
1,
0,
0,
0,
589,
590,
5,
65,
0,
0,
590,
591,
3,
32,
16,
0,
591,
592,
5,
65,
0,
0,
592,
638,
1,
0,
0,
0,
593,
594,
5,
66,
0,
0,
594,
595,
3,
32,
16,
0,
595,
596,
5,
67,
0,
0,
596,
638,
1,
0,
0,
0,
597,
598,
5,
68,
0,
0,
598,
599,
3,
32,
16,
0,
599,
600,
5,
68,
0,
0,
600,
638,
1,
0,
0,
0,
601,
602,
5,
78,
0,
0,
602,
603,
5,
65,
0,
0,
603,
604,
3,
32,
16,
0,
604,
605,
5,
79,
0,
0,
605,
606,
5,
65,
0,
0,
606,
638,
1,
0,
0,
0,
607,
608,
5,
78,
0,
0,
608,
609,
5,
66,
0,
0,
609,
610,
3,
32,
16,
0,
610,
611,
5,
79,
0,
0,
611,
612,
5,
67,
0,
0,
612,
638,
1,
0,
0,
0,
613,
614,
5,
78,
0,
0,
614,
615,
5,
68,
0,
0,
615,
616,
3,
32,
16,
0,
616,
617,
5,
79,
0,
0,
617,
618,
5,
68,
0,
0,
618,
638,
1,
0,
0,
0,
619,
620,
5,
80,
0,
0,
620,
621,
5,
65,
0,
0,
621,
622,
3,
32,
16,
0,
622,
623,
5,
81,
0,
0,
623,
624,
5,
65,
0,
0,
624,
638,
1,
0,
0,
0,
625,
626,
5,
80,
0,
0,
626,
627,
5,
66,
0,
0,
627,
628,
3,
32,
16,
0,
628,
629,
5,
81,
0,
0,
629,
630,
5,
67,
0,
0,
630,
638,
1,
0,
0,
0,
631,
632,
5,
80,
0,
0,
632,
633,
5,
68,
0,
0,
633,
634,
3,
32,
16,
0,
634,
635,
5,
81,
0,
0,
635,
636,
5,
68,
0,
0,
636,
638,
1,
0,
0,
0,
637,
589,
1,
0,
0,
0,
637,
593,
1,
0,
0,
0,
637,
597,
1,
0,
0,
0,
637,
601,
1,
0,
0,
0,
637,
607,
1,
0,
0,
0,
637,
613,
1,
0,
0,
0,
637,
619,
1,
0,
0,
0,
637,
625,
1,
0,
0,
0,
637,
631,
1,
0,
0,
0,
638,
69,
1,
0,
0,
0,
639,
640,
5,
70,
0,
0,
640,
641,
3,
32,
16,
0,
641,
642,
5,
71,
0,
0,
642,
672,
1,
0,
0,
0,
643,
644,
5,
72,
0,
0,
644,
645,
3,
32,
16,
0,
645,
646,
5,
73,
0,
0,
646,
672,
1,
0,
0,
0,
647,
648,
5,
78,
0,
0,
648,
649,
5,
70,
0,
0,
649,
650,
3,
32,
16,
0,
650,
651,
5,
79,
0,
0,
651,
652,
5,
71,
0,
0,
652,
672,
1,
0,
0,
0,
653,
654,
5,
78,
0,
0,
654,
655,
5,
72,
0,
0,
655,
656,
3,
32,
16,
0,
656,
657,
5,
79,
0,
0,
657,
658,
5,
73,
0,
0,
658,
672,
1,
0,
0,
0,
659,
660,
5,
80,
0,
0,
660,
661,
5,
70,
0,
0,
661,
662,
3,
32,
16,
0,
662,
663,
5,
81,
0,
0,
663,
664,
5,
71,
0,
0,
664,
672,
1,
0,
0,
0,
665,
666,
5,
80,
0,
0,
666,
667,
5,
72,
0,
0,
667,
668,
3,
32,
16,
0,
668,
669,
5,
81,
0,
0,
669,
670,
5,
73,
0,
0,
670,
672,
1,
0,
0,
0,
671,
639,
1,
0,
0,
0,
671,
643,
1,
0,
0,
0,
671,
647,
1,
0,
0,
0,
671,
653,
1,
0,
0,
0,
671,
659,
1,
0,
0,
0,
671,
665,
1,
0,
0,
0,
672,
71,
1,
0,
0,
0,
673,
674,
5,
74,
0,
0,
674,
675,
3,
32,
16,
0,
675,
676,
5,
75,
0,
0,
676,
706,
1,
0,
0,
0,
677,
678,
5,
76,
0,
0,
678,
679,
3,
32,
16,
0,
679,
680,
5,
77,
0,
0,
680,
706,
1,
0,
0,
0,
681,
682,
5,
78,
0,
0,
682,
683,
5,
74,
0,
0,
683,
684,
3,
32,
16,
0,
684,
685,
5,
79,
0,
0,
685,
686,
5,
75,
0,
0,
686,
706,
1,
0,
0,
0,
687,
688,
5,
78,
0,
0,
688,
689,
5,
76,
0,
0,
689,
690,
3,
32,
16,
0,
690,
691,
5,
79,
0,
0,
691,
692,
5,
77,
0,
0,
692,
706,
1,
0,
0,
0,
693,
694,
5,
80,
0,
0,
694,
695,
5,
74,
0,
0,
695,
696,
3,
32,
16,
0,
696,
697,
5,
81,
0,
0,
697,
698,
5,
75,
0,
0,
698,
706,
1,
0,
0,
0,
699,
700,
5,
80,
0,
0,
700,
701,
5,
76,
0,
0,
701,
702,
3,
32,
16,
0,
702,
703,
5,
81,
0,
0,
703,
704,
5,
77,
0,
0,
704,
706,
1,
0,
0,
0,
705,
673,
1,
0,
0,
0,
705,
677,
1,
0,
0,
0,
705,
681,
1,
0,
0,
0,
705,
687,
1,
0,
0,
0,
705,
693,
1,
0,
0,
0,
705,
699,
1,
0,
0,
0,
706,
73,
1,
0,
0,
0,
707,
708,
3,
0,
0,
0,
708,
709,
5,
55,
0,
0,
709,
710,
3,
32,
16,
0,
710,
711,
5,
56,
0,
0,
711,
75,
1,
0,
0,
0,
712,
717,
5,
176,
0,
0,
713,
717,
5,
191,
0,
0,
714,
717,
5,
192,
0,
0,
715,
717,
3,
74,
37,
0,
716,
712,
1,
0,
0,
0,
716,
713,
1,
0,
0,
0,
716,
714,
1,
0,
0,
0,
716,
715,
1,
0,
0,
0,
717,
719,
1,
0,
0,
0,
718,
720,
3,
118,
59,
0,
719,
718,
1,
0,
0,
0,
719,
720,
1,
0,
0,
0,
720,
77,
1,
0,
0,
0,
721,
726,
5,
176,
0,
0,
722,
726,
5,
191,
0,
0,
723,
726,
5,
192,
0,
0,
724,
726,
3,
74,
37,
0,
725,
721,
1,
0,
0,
0,
725,
722,
1,
0,
0,
0,
725,
723,
1,
0,
0,
0,
725,
724,
1,
0,
0,
0,
726,
735,
1,
0,
0,
0,
727,
728,
3,
120,
60,
0,
728,
729,
3,
118,
59,
0,
729,
736,
1,
0,
0,
0,
730,
731,
3,
118,
59,
0,
731,
732,
3,
120,
60,
0,
732,
736,
1,
0,
0,
0,
733,
736,
3,
118,
59,
0,
734,
736,
3,
120,
60,
0,
735,
727,
1,
0,
0,
0,
735,
730,
1,
0,
0,
0,
735,
733,
1,
0,
0,
0,
735,
734,
1,
0,
0,
0,
735,
736,
1,
0,
0,
0,
736,
79,
1,
0,
0,
0,
737,
746,
3,
78,
39,
0,
738,
746,
5,
193,
0,
0,
739,
746,
5,
179,
0,
0,
740,
746,
5,
190,
0,
0,
741,
746,
5,
180,
0,
0,
742,
746,
5,
173,
0,
0,
743,
746,
3,
82,
41,
0,
744,
746,
5,
194,
0,
0,
745,
737,
1,
0,
0,
0,
745,
738,
1,
0,
0,
0,
745,
739,
1,
0,
0,
0,
745,
740,
1,
0,
0,
0,
745,
741,
1,
0,
0,
0,
745,
742,
1,
0,
0,
0,
745,
743,
1,
0,
0,
0,
745,
744,
1,
0,
0,
0,
746,
81,
1,
0,
0,
0,
747,
748,
5,
154,
0,
0,
748,
749,
5,
55,
0,
0,
749,
750,
3,
84,
42,
0,
750,
751,
5,
56,
0,
0,
751,
83,
1,
0,
0,
0,
752,
754,
7,
6,
0,
0,
753,
752,
1,
0,
0,
0,
754,
755,
1,
0,
0,
0,
755,
753,
1,
0,
0,
0,
755,
756,
1,
0,
0,
0,
756,
85,
1,
0,
0,
0,
757,
758,
5,
150,
0,
0,
758,
759,
5,
55,
0,
0,
759,
760,
3,
32,
16,
0,
760,
761,
5,
56,
0,
0,
761,
762,
5,
55,
0,
0,
762,
763,
3,
32,
16,
0,
763,
764,
5,
56,
0,
0,
764,
87,
1,
0,
0,
0,
765,
766,
5,
55,
0,
0,
766,
767,
3,
32,
16,
0,
767,
768,
5,
152,
0,
0,
768,
769,
3,
32,
16,
0,
769,
770,
5,
56,
0,
0,
770,
780,
1,
0,
0,
0,
771,
772,
5,
151,
0,
0,
772,
773,
5,
55,
0,
0,
773,
774,
3,
32,
16,
0,
774,
775,
5,
56,
0,
0,
775,
776,
5,
55,
0,
0,
776,
777,
3,
32,
16,
0,
777,
778,
5,
56,
0,
0,
778,
780,
1,
0,
0,
0,
779,
765,
1,
0,
0,
0,
779,
771,
1,
0,
0,
0,
780,
89,
1,
0,
0,
0,
781,
782,
7,
7,
0,
0,
782,
91,
1,
0,
0,
0,
783,
784,
7,
8,
0,
0,
784,
93,
1,
0,
0,
0,
785,
786,
7,
9,
0,
0,
786,
95,
1,
0,
0,
0,
787,
788,
7,
10,
0,
0,
788,
97,
1,
0,
0,
0,
789,
796,
3,
90,
45,
0,
790,
791,
5,
155,
0,
0,
791,
792,
5,
55,
0,
0,
792,
793,
3,
94,
47,
0,
793,
794,
5,
56,
0,
0,
794,
796,
1,
0,
0,
0,
795,
789,
1,
0,
0,
0,
795,
790,
1,
0,
0,
0,
796,
99,
1,
0,
0,
0,
797,
804,
3,
92,
46,
0,
798,
799,
5,
155,
0,
0,
799,
800,
5,
55,
0,
0,
800,
801,
3,
96,
48,
0,
801,
802,
5,
56,
0,
0,
802,
804,
1,
0,
0,
0,
803,
797,
1,
0,
0,
0,
803,
798,
1,
0,
0,
0,
804,
101,
1,
0,
0,
0,
805,
818,
3,
98,
49,
0,
806,
808,
3,
118,
59,
0,
807,
806,
1,
0,
0,
0,
807,
808,
1,
0,
0,
0,
808,
810,
1,
0,
0,
0,
809,
811,
3,
120,
60,
0,
810,
809,
1,
0,
0,
0,
810,
811,
1,
0,
0,
0,
811,
819,
1,
0,
0,
0,
812,
814,
3,
120,
60,
0,
813,
812,
1,
0,
0,
0,
813,
814,
1,
0,
0,
0,
814,
816,
1,
0,
0,
0,
815,
817,
3,
118,
59,
0,
816,
815,
1,
0,
0,
0,
816,
817,
1,
0,
0,
0,
817,
819,
1,
0,
0,
0,
818,
807,
1,
0,
0,
0,
818,
813,
1,
0,
0,
0,
819,
841,
1,
0,
0,
0,
820,
822,
5,
78,
0,
0,
821,
820,
1,
0,
0,
0,
821,
822,
1,
0,
0,
0,
822,
823,
1,
0,
0,
0,
823,
824,
5,
51,
0,
0,
824,
826,
3,
110,
55,
0,
825,
827,
5,
79,
0,
0,
826,
825,
1,
0,
0,
0,
826,
827,
1,
0,
0,
0,
827,
828,
1,
0,
0,
0,
828,
829,
5,
52,
0,
0,
829,
842,
1,
0,
0,
0,
830,
832,
5,
80,
0,
0,
831,
830,
1,
0,
0,
0,
831,
832,
1,
0,
0,
0,
832,
833,
1,
0,
0,
0,
833,
834,
5,
51,
0,
0,
834,
836,
3,
110,
55,
0,
835,
837,
5,
81,
0,
0,
836,
835,
1,
0,
0,
0,
836,
837,
1,
0,
0,
0,
837,
838,
1,
0,
0,
0,
838,
839,
5,
52,
0,
0,
839,
842,
1,
0,
0,
0,
840,
842,
3,
112,
56,
0,
841,
821,
1,
0,
0,
0,
841,
831,
1,
0,
0,
0,
841,
840,
1,
0,
0,
0,
842,
972,
1,
0,
0,
0,
843,
856,
3,
100,
50,
0,
844,
846,
3,
118,
59,
0,
845,
844,
1,
0,
0,
0,
845,
846,
1,
0,
0,
0,
846,
848,
1,
0,
0,
0,
847,
849,
3,
120,
60,
0,
848,
847,
1,
0,
0,
0,
848,
849,
1,
0,
0,
0,
849,
857,
1,
0,
0,
0,
850,
852,
3,
120,
60,
0,
851,
850,
1,
0,
0,
0,
851,
852,
1,
0,
0,
0,
852,
854,
1,
0,
0,
0,
853,
855,
3,
118,
59,
0,
854,
853,
1,
0,
0,
0,
854,
855,
1,
0,
0,
0,
855,
857,
1,
0,
0,
0,
856,
845,
1,
0,
0,
0,
856,
851,
1,
0,
0,
0,
857,
879,
1,
0,
0,
0,
858,
860,
5,
78,
0,
0,
859,
858,
1,
0,
0,
0,
859,
860,
1,
0,
0,
0,
860,
861,
1,
0,
0,
0,
861,
862,
5,
51,
0,
0,
862,
864,
3,
114,
57,
0,
863,
865,
5,
79,
0,
0,
864,
863,
1,
0,
0,
0,
864,
865,
1,
0,
0,
0,
865,
866,
1,
0,
0,
0,
866,
867,
5,
52,
0,
0,
867,
880,
1,
0,
0,
0,
868,
870,
5,
80,
0,
0,
869,
868,
1,
0,
0,
0,
869,
870,
1,
0,
0,
0,
870,
871,
1,
0,
0,
0,
871,
872,
5,
51,
0,
0,
872,
874,
3,
114,
57,
0,
873,
875,
5,
81,
0,
0,
874,
873,
1,
0,
0,
0,
874,
875,
1,
0,
0,
0,
875,
876,
1,
0,
0,
0,
876,
877,
5,
52,
0,
0,
877,
880,
1,
0,
0,
0,
878,
880,
3,
116,
58,
0,
879,
859,
1,
0,
0,
0,
879,
869,
1,
0,
0,
0,
879,
878,
1,
0,
0,
0,
880,
972,
1,
0,
0,
0,
881,
883,
3,
76,
38,
0,
882,
884,
3,
120,
60,
0,
883,
882,
1,
0,
0,
0,
883,
884,
1,
0,
0,
0,
884,
886,
1,
0,
0,
0,
885,
887,
5,
78,
0,
0,
886,
885,
1,
0,
0,
0,
886,
887,
1,
0,
0,
0,
887,
888,
1,
0,
0,
0,
888,
889,
7,
11,
0,
0,
889,
890,
3,
106,
53,
0,
890,
892,
7,
12,
0,
0,
891,
893,
5,
79,
0,
0,
892,
891,
1,
0,
0,
0,
892,
893,
1,
0,
0,
0,
893,
972,
1,
0,
0,
0,
894,
896,
3,
76,
38,
0,
895,
897,
3,
120,
60,
0,
896,
895,
1,
0,
0,
0,
896,
897,
1,
0,
0,
0,
897,
898,
1,
0,
0,
0,
898,
900,
5,
55,
0,
0,
899,
901,
5,
78,
0,
0,
900,
899,
1,
0,
0,
0,
900,
901,
1,
0,
0,
0,
901,
902,
1,
0,
0,
0,
902,
903,
7,
11,
0,
0,
903,
904,
3,
106,
53,
0,
904,
906,
7,
12,
0,
0,
905,
907,
5,
79,
0,
0,
906,
905,
1,
0,
0,
0,
906,
907,
1,
0,
0,
0,
907,
908,
1,
0,
0,
0,
908,
909,
5,
56,
0,
0,
909,
972,
1,
0,
0,
0,
910,
931,
5,
84,
0,
0,
911,
912,
3,
118,
59,
0,
912,
913,
3,
120,
60,
0,
913,
932,
1,
0,
0,
0,
914,
915,
3,
120,
60,
0,
915,
916,
3,
118,
59,
0,
916,
932,
1,
0,
0,
0,
917,
918,
5,
167,
0,
0,
918,
919,
5,
55,
0,
0,
919,
920,
5,
56,
0,
0,
920,
921,
1,
0,
0,
0,
921,
922,
5,
168,
0,
0,
922,
923,
5,
55,
0,
0,
923,
932,
5,
56,
0,
0,
924,
925,
5,
168,
0,
0,
925,
926,
5,
55,
0,
0,
926,
927,
5,
56,
0,
0,
927,
928,
1,
0,
0,
0,
928,
929,
5,
167,
0,
0,
929,
930,
5,
55,
0,
0,
930,
932,
5,
56,
0,
0,
931,
911,
1,
0,
0,
0,
931,
914,
1,
0,
0,
0,
931,
917,
1,
0,
0,
0,
931,
924,
1,
0,
0,
0,
931,
932,
1,
0,
0,
0,
932,
939,
1,
0,
0,
0,
933,
935,
3,
34,
17,
0,
934,
933,
1,
0,
0,
0,
934,
935,
1,
0,
0,
0,
935,
936,
1,
0,
0,
0,
936,
940,
5,
173,
0,
0,
937,
940,
3,
86,
43,
0,
938,
940,
3,
34,
17,
0,
939,
934,
1,
0,
0,
0,
939,
937,
1,
0,
0,
0,
939,
938,
1,
0,
0,
0,
940,
972,
1,
0,
0,
0,
941,
946,
5,
121,
0,
0,
942,
943,
5,
61,
0,
0,
943,
944,
3,
32,
16,
0,
944,
945,
5,
62,
0,
0,
945,
947,
1,
0,
0,
0,
946,
942,
1,
0,
0,
0,
946,
947,
1,
0,
0,
0,
947,
948,
1,
0,
0,
0,
948,
949,
5,
55,
0,
0,
949,
950,
3,
32,
16,
0,
950,
951,
5,
56,
0,
0,
951,
972,
1,
0,
0,
0,
952,
959,
7,
13,
0,
0,
953,
954,
3,
122,
61,
0,
954,
955,
3,
120,
60,
0,
955,
960,
1,
0,
0,
0,
956,
957,
3,
120,
60,
0,
957,
958,
3,
122,
61,
0,
958,
960,
1,
0,
0,
0,
959,
953,
1,
0,
0,
0,
959,
956,
1,
0,
0,
0,
960,
961,
1,
0,
0,
0,
961,
962,
3,
36,
18,
0,
962,
972,
1,
0,
0,
0,
963,
964,
5,
82,
0,
0,
964,
965,
3,
108,
54,
0,
965,
966,
3,
36,
18,
0,
966,
972,
1,
0,
0,
0,
967,
969,
5,
174,
0,
0,
968,
970,
3,
120,
60,
0,
969,
968,
1,
0,
0,
0,
969,
970,
1,
0,
0,
0,
970,
972,
1,
0,
0,
0,
971,
805,
1,
0,
0,
0,
971,
843,
1,
0,
0,
0,
971,
881,
1,
0,
0,
0,
971,
894,
1,
0,
0,
0,
971,
910,
1,
0,
0,
0,
971,
941,
1,
0,
0,
0,
971,
952,
1,
0,
0,
0,
971,
963,
1,
0,
0,
0,
971,
967,
1,
0,
0,
0,
972,
103,
1,
0,
0,
0,
973,
974,
3,
32,
16,
0,
974,
975,
5,
171,
0,
0,
975,
976,
3,
104,
52,
0,
976,
979,
1,
0,
0,
0,
977,
979,
3,
32,
16,
0,
978,
973,
1,
0,
0,
0,
978,
977,
1,
0,
0,
0,
979,
105,
1,
0,
0,
0,
980,
989,
3,
80,
40,
0,
981,
982,
3,
32,
16,
0,
982,
983,
5,
171,
0,
0,
983,
989,
1,
0,
0,
0,
984,
985,
3,
32,
16,
0,
985,
986,
5,
171,
0,
0,
986,
987,
3,
104,
52,
0,
987,
989,
1,
0,
0,
0,
988,
980,
1,
0,
0,
0,
988,
981,
1,
0,
0,
0,
988,
984,
1,
0,
0,
0,
989,
107,
1,
0,
0,
0,
990,
991,
5,
167,
0,
0,
991,
992,
5,
55,
0,
0,
992,
993,
7,
14,
0,
0,
993,
994,
5,
83,
0,
0,
994,
999,
3,
32,
16,
0,
995,
996,
5,
168,
0,
0,
996,
997,
5,
55,
0,
0,
997,
998,
7,
4,
0,
0,
998,
1000,
5,
56,
0,
0,
999,
995,
1,
0,
0,
0,
999,
1000,
1,
0,
0,
0,
1000,
1001,
1,
0,
0,
0,
1001,
1002,
5,
56,
0,
0,
1002,
109,
1,
0,
0,
0,
1003,
1004,
3,
32,
16,
0,
1004,
111,
1,
0,
0,
0,
1005,
1006,
3,
38,
19,
0,
1006,
113,
1,
0,
0,
0,
1007,
1013,
3,
32,
16,
0,
1008,
1009,
3,
32,
16,
0,
1009,
1010,
5,
171,
0,
0,
1010,
1011,
3,
114,
57,
0,
1011,
1013,
1,
0,
0,
0,
1012,
1007,
1,
0,
0,
0,
1012,
1008,
1,
0,
0,
0,
1013,
115,
1,
0,
0,
0,
1014,
1015,
3,
38,
19,
0,
1015,
117,
1,
0,
0,
0,
1016,
1025,
5,
167,
0,
0,
1017,
1026,
3,
80,
40,
0,
1018,
1021,
5,
55,
0,
0,
1019,
1022,
3,
32,
16,
0,
1020,
1022,
3,
104,
52,
0,
1021,
1019,
1,
0,
0,
0,
1021,
1020,
1,
0,
0,
0,
1022,
1023,
1,
0,
0,
0,
1023,
1024,
5,
56,
0,
0,
1024,
1026,
1,
0,
0,
0,
1025,
1017,
1,
0,
0,
0,
1025,
1018,
1,
0,
0,
0,
1026,
119,
1,
0,
0,
0,
1027,
1033,
5,
168,
0,
0,
1028,
1034,
3,
80,
40,
0,
1029,
1030,
5,
55,
0,
0,
1030,
1031,
3,
32,
16,
0,
1031,
1032,
5,
56,
0,
0,
1032,
1034,
1,
0,
0,
0,
1033,
1028,
1,
0,
0,
0,
1033,
1029,
1,
0,
0,
0,
1034,
121,
1,
0,
0,
0,
1035,
1036,
5,
167,
0,
0,
1036,
1037,
5,
55,
0,
0,
1037,
1038,
3,
30,
15,
0,
1038,
1039,
5,
56,
0,
0,
1039,
123,
1,
0,
0,
0,
1040,
1041,
5,
167,
0,
0,
1041,
1042,
5,
55,
0,
0,
1042,
1043,
3,
30,
15,
0,
1043,
1044,
5,
56,
0,
0,
1044,
125,
1,
0,
0,
0,
92,
130,
140,
146,
160,
167,
176,
180,
188,
194,
202,
206,
215,
226,
266,
275,
285,
288,
304,
315,
326,
334,
336,
344,
347,
353,
360,
366,
374,
380,
388,
402,
405,
409,
422,
425,
429,
443,
455,
569,
587,
637,
671,
705,
716,
719,
725,
735,
745,
755,
779,
795,
803,
807,
810,
813,
816,
818,
821,
826,
831,
836,
841,
845,
848,
851,
854,
856,
859,
864,
869,
874,
879,
883,
886,
892,
896,
900,
906,
931,
934,
939,
946,
959,
969,
971,
978,
988,
999,
1012,
1021,
1025,
1033,
]
class PSParser(Parser):
grammarFileName = "PS.g4"
atn = ATNDeserializer().deserialize(serializedATN())
decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
sharedContextCache = PredictionContextCache()
literalNames = [
"<INVALID>",
"'\\acute'",
"'\\bar'",
"'\\overline'",
"'\\breve'",
"'\\check'",
"'\\widecheck'",
"'\\dot'",
"'\\ddot'",
"'\\grave'",
"'\\hat'",
"'\\tilde'",
"'\\widetilde'",
"'\\vec'",
"'\\overrightarrow'",
"'\\bm'",
"'\\boldsymbol'",
"'\\text'",
"'\\textit'",
"'\\mathbb'",
"'\\mathbin'",
"'\\mathbf'",
"'\\mathcal'",
"'\\mathclap'",
"'\\mathclose'",
"'\\mathellipsis'",
"'\\mathfrak'",
"'\\mathinner'",
"'\\mathnormal'",
"'\\mathop'",
"'\\mathopen'",
"'\\mathord'",
"'\\mathpunct'",
"'\\mathrel'",
"'\\mathring'",
"'\\mathrlap'",
"'\\mathrm'",
"'\\mathscr'",
"'\\mathsf'",
"'\\mathsterling'",
"'\\mathtt'",
"'^T'",
"'^{T}'",
"'^{\\top}'",
"'''",
"<INVALID>",
"'\\$'",
"'+'",
"'-'",
"'*'",
"<INVALID>",
"'('",
"')'",
"'\\lgroup'",
"'\\rgroup'",
"'{'",
"'}'",
"'\\{'",
"'\\}'",
"'\\lbrace'",
"'\\rbrace'",
"'['",
"']'",
"'\\lbrack'",
"'\\rbrack'",
"'|'",
"'\\lvert'",
"'\\rvert'",
"'\\vert'",
"'\\|'",
"'\\lfloor'",
"'\\rfloor'",
"'\\llcorner'",
"'\\lrcorner'",
"'\\lceil'",
"'\\rceil'",
"'\\ulcorner'",
"'\\urcorner'",
"'\\left'",
"'\\right'",
"'\\mleft'",
"'\\mright'",
"'\\lim'",
"<INVALID>",
"'\\int'",
"'\\sum'",
"'\\prod'",
"'\\log'",
"'\\ln'",
"'\\exp'",
"'\\sin'",
"'\\cos'",
"'\\tan'",
"'\\csc'",
"'\\sec'",
"'\\cot'",
"'\\arcsin'",
"'\\arccos'",
"'\\arctan'",
"'\\arccsc'",
"'\\arcsec'",
"'\\arccot'",
"'\\sinh'",
"'\\cosh'",
"'\\tanh'",
"'\\arsinh'",
"'\\arcosh'",
"'\\artanh'",
"'\\arcsinh'",
"'\\arccosh'",
"'\\arctanh'",
"'arsinh'",
"'arcsinh'",
"'arcosh'",
"'arccosh'",
"'artanh'",
"'arctanh'",
"'gcd'",
"'lcm'",
"'floor'",
"'ceil'",
"'\\sqrt'",
"'\\gcd'",
"'\\lcm'",
"'\\floor'",
"'\\ceil'",
"'\\max'",
"'\\min'",
"'\\det'",
"'eye'",
"'zeros'",
"'ones'",
"'cols'",
"'rows'",
"'diag'",
"'norm'",
"'rank'",
"<INVALID>",
"'rref'",
"'hstack'",
"'vstack'",
"<INVALID>",
"'nullspace'",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"'\\times'",
"'\\cdot'",
"'\\div'",
"'\\frac'",
"<INVALID>",
"'\\choose'",
"'\\mod'",
"'\\mathit'",
"'\\operatorname'",
"'matrix'",
"'pmatrix'",
"'bmatrix'",
"'vmatrix'",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"'&'",
"'\\\\'",
"'_'",
"'^'",
"':'",
"';'",
"','",
"'.'",
"<INVALID>",
"<INVALID>",
"'E'",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"'\\in'",
"'='",
"<INVALID>",
"'<'",
"<INVALID>",
"'>'",
"<INVALID>",
"<INVALID>",
"'!'",
]
symbolicNames = [
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"<INVALID>",
"WS",
"DOLLAR_SIGN",
"ADD",
"SUB",
"MUL",
"DIV",
"L_PAREN",
"R_PAREN",
"L_GROUP",
"R_GROUP",
"L_BRACE",
"R_BRACE",
"L_BRACE_VISUAL",
"R_BRACE_VISUAL",
"L_BRACE_CMD",
"R_BRACE_CMD",
"L_BRACKET",
"R_BRACKET",
"L_BRACK",
"R_BRACK",
"BAR",
"L_VERT",
"R_VERT",
"VERT",
"NORM",
"L_FLOOR",
"R_FLOOR",
"LL_CORNER",
"LR_CORNER",
"L_CEIL",
"R_CEIL",
"UL_CORNER",
"UR_CORNER",
"L_LEFT",
"R_RIGHT",
"ML_LEFT",
"MR_RIGHT",
"FUNC_LIM",
"LIM_APPROACH_SYM",
"FUNC_INT",
"FUNC_SUM",
"FUNC_PROD",
"FUNC_LOG",
"FUNC_LN",
"FUNC_EXP",
"FUNC_SIN",
"FUNC_COS",
"FUNC_TAN",
"FUNC_CSC",
"FUNC_SEC",
"FUNC_COT",
"FUNC_ARCSIN",
"FUNC_ARCCOS",
"FUNC_ARCTAN",
"FUNC_ARCCSC",
"FUNC_ARCSEC",
"FUNC_ARCCOT",
"FUNC_SINH",
"FUNC_COSH",
"FUNC_TANH",
"FUNC_ARSINH",
"FUNC_ARCOSH",
"FUNC_ARTANH",
"FUNC_ARCSINH",
"FUNC_ARCCOSH",
"FUNC_ARCTANH",
"FUNC_ARSINH_NAME",
"FUNC_ARCSINH_NAME",
"FUNC_ARCOSH_NAME",
"FUNC_ARCCOSH_NAME",
"FUNC_ARTANH_NAME",
"FUNC_ARCTANH_NAME",
"FUNC_GCD_NAME",
"FUNC_LCM_NAME",
"FUNC_FLOOR_NAME",
"FUNC_CEIL_NAME",
"FUNC_SQRT",
"FUNC_GCD",
"FUNC_LCM",
"FUNC_FLOOR",
"FUNC_CEIL",
"FUNC_MAX",
"FUNC_MIN",
"FUNC_DET",
"FUNC_EYE_NAME",
"FUNC_ZEROS_NAME",
"FUNC_ONES_NAME",
"FUNC_COLS_NAME",
"FUNC_ROWS_NAME",
"FUNC_DIAG_NAME",
"FUNC_NORM_NAME",
"FUNC_RANK_NAME",
"FUNC_TRACE_NAME",
"FUNC_RREF_NAME",
"FUNC_HSTACK_NAME",
"FUNC_VSTACK_NAME",
"FUNC_ORTHOGONALIZE_NAME",
"FUNC_NULLSPACE_NAME",
"FUNC_DIAGONALIZE_NAME",
"FUNC_EIGENVALS_NAME",
"FUNC_EIGENVECTORS_NAME",
"FUNC_SVD_NAME",
"CMD_TIMES",
"CMD_CDOT",
"CMD_DIV",
"CMD_FRAC",
"CMD_BINOM",
"CMD_CHOOSE",
"CMD_MOD",
"CMD_MATHIT",
"CMD_OPERATORNAME",
"MATRIX_TYPE_MATRIX",
"MATRIX_TYPE_PMATRIX",
"MATRIX_TYPE_BMATRIX",
"MATRIX_TYPE_DET",
"MATRIX_TYPES",
"CMD_MATRIX_START",
"CMD_MATRIX_END",
"CMD_DET_START",
"CMD_DET_END",
"MATRIX_DEL_COL",
"MATRIX_DEL_ROW",
"UNDERSCORE",
"CARET",
"COLON",
"SEMICOLON",
"COMMA",
"PERIOD",
"DIFFERENTIAL",
"EXP_E",
"E_NOTATION_E",
"LETTER_NO_E",
"MATRIX_XRIGHTARROW",
"TRANSFORM_EXCHANGE",
"NUMBER",
"E_NOTATION",
"IN",
"ASSIGNMENT",
"EQUAL",
"LT",
"LTE",
"GT",
"GTE",
"UNEQUAL",
"BANG",
"PERCENT_NUMBER",
"GREEK_CMD",
"OTHER_SYMBOL_CMD",
"SYMBOL",
"VARIABLE",
]
RULE_accent_symbol = 0
RULE_math = 1
RULE_transpose = 2
RULE_transform_atom = 3
RULE_transform_scale = 4
RULE_transform_swap = 5
RULE_transform_assignment = 6
RULE_elementary_transform = 7
RULE_elementary_transforms = 8
RULE_matrix = 9
RULE_det = 10
RULE_matrix_row = 11
RULE_relation = 12
RULE_relation_list = 13
RULE_relation_list_content = 14
RULE_equality = 15
RULE_expr = 16
RULE_additive = 17
RULE_mp = 18
RULE_mp_nofunc = 19
RULE_unary = 20
RULE_unary_nofunc = 21
RULE_postfix = 22
RULE_postfix_nofunc = 23
RULE_postfix_op = 24
RULE_eval_at = 25
RULE_eval_at_sub = 26
RULE_eval_at_sup = 27
RULE_exp = 28
RULE_exp_nofunc = 29
RULE_comp = 30
RULE_comp_nofunc = 31
RULE_group = 32
RULE_norm_group = 33
RULE_abs_group = 34
RULE_floor_group = 35
RULE_ceil_group = 36
RULE_accent = 37
RULE_atom_expr_no_supexpr = 38
RULE_atom_expr = 39
RULE_atom = 40
RULE_mathit = 41
RULE_mathit_text = 42
RULE_frac = 43
RULE_binom = 44
RULE_func_normal_functions_single_arg = 45
RULE_func_normal_functions_multi_arg = 46
RULE_func_operator_names_single_arg = 47
RULE_func_operator_names_multi_arg = 48
RULE_func_normal_single_arg = 49
RULE_func_normal_multi_arg = 50
RULE_func = 51
RULE_args = 52
RULE_func_common_args = 53
RULE_limit_sub = 54
RULE_func_single_arg = 55
RULE_func_single_arg_noparens = 56
RULE_func_multi_arg = 57
RULE_func_multi_arg_noparens = 58
RULE_subexpr = 59
RULE_supexpr = 60
RULE_subeq = 61
RULE_supeq = 62
ruleNames = [
"accent_symbol",
"math",
"transpose",
"transform_atom",
"transform_scale",
"transform_swap",
"transform_assignment",
"elementary_transform",
"elementary_transforms",
"matrix",
"det",
"matrix_row",
"relation",
"relation_list",
"relation_list_content",
"equality",
"expr",
"additive",
"mp",
"mp_nofunc",
"unary",
"unary_nofunc",
"postfix",
"postfix_nofunc",
"postfix_op",
"eval_at",
"eval_at_sub",
"eval_at_sup",
"exp",
"exp_nofunc",
"comp",
"comp_nofunc",
"group",
"norm_group",
"abs_group",
"floor_group",
"ceil_group",
"accent",
"atom_expr_no_supexpr",
"atom_expr",
"atom",
"mathit",
"mathit_text",
"frac",
"binom",
"func_normal_functions_single_arg",
"func_normal_functions_multi_arg",
"func_operator_names_single_arg",
"func_operator_names_multi_arg",
"func_normal_single_arg",
"func_normal_multi_arg",
"func",
"args",
"func_common_args",
"limit_sub",
"func_single_arg",
"func_single_arg_noparens",
"func_multi_arg",
"func_multi_arg_noparens",
"subexpr",
"supexpr",
"subeq",
"supeq",
]
EOF = Token.EOF
T__0 = 1
T__1 = 2
T__2 = 3
T__3 = 4
T__4 = 5
T__5 = 6
T__6 = 7
T__7 = 8
T__8 = 9
T__9 = 10
T__10 = 11
T__11 = 12
T__12 = 13
T__13 = 14
T__14 = 15
T__15 = 16
T__16 = 17
T__17 = 18
T__18 = 19
T__19 = 20
T__20 = 21
T__21 = 22
T__22 = 23
T__23 = 24
T__24 = 25
T__25 = 26
T__26 = 27
T__27 = 28
T__28 = 29
T__29 = 30
T__30 = 31
T__31 = 32
T__32 = 33
T__33 = 34
T__34 = 35
T__35 = 36
T__36 = 37
T__37 = 38
T__38 = 39
T__39 = 40
T__40 = 41
T__41 = 42
T__42 = 43
T__43 = 44
WS = 45
DOLLAR_SIGN = 46
ADD = 47
SUB = 48
MUL = 49
DIV = 50
L_PAREN = 51
R_PAREN = 52
L_GROUP = 53
R_GROUP = 54
L_BRACE = 55
R_BRACE = 56
L_BRACE_VISUAL = 57
R_BRACE_VISUAL = 58
L_BRACE_CMD = 59
R_BRACE_CMD = 60
L_BRACKET = 61
R_BRACKET = 62
L_BRACK = 63
R_BRACK = 64
BAR = 65
L_VERT = 66
R_VERT = 67
VERT = 68
NORM = 69
L_FLOOR = 70
R_FLOOR = 71
LL_CORNER = 72
LR_CORNER = 73
L_CEIL = 74
R_CEIL = 75
UL_CORNER = 76
UR_CORNER = 77
L_LEFT = 78
R_RIGHT = 79
ML_LEFT = 80
MR_RIGHT = 81
FUNC_LIM = 82
LIM_APPROACH_SYM = 83
FUNC_INT = 84
FUNC_SUM = 85
FUNC_PROD = 86
FUNC_LOG = 87
FUNC_LN = 88
FUNC_EXP = 89
FUNC_SIN = 90
FUNC_COS = 91
FUNC_TAN = 92
FUNC_CSC = 93
FUNC_SEC = 94
FUNC_COT = 95
FUNC_ARCSIN = 96
FUNC_ARCCOS = 97
FUNC_ARCTAN = 98
FUNC_ARCCSC = 99
FUNC_ARCSEC = 100
FUNC_ARCCOT = 101
FUNC_SINH = 102
FUNC_COSH = 103
FUNC_TANH = 104
FUNC_ARSINH = 105
FUNC_ARCOSH = 106
FUNC_ARTANH = 107
FUNC_ARCSINH = 108
FUNC_ARCCOSH = 109
FUNC_ARCTANH = 110
FUNC_ARSINH_NAME = 111
FUNC_ARCSINH_NAME = 112
FUNC_ARCOSH_NAME = 113
FUNC_ARCCOSH_NAME = 114
FUNC_ARTANH_NAME = 115
FUNC_ARCTANH_NAME = 116
FUNC_GCD_NAME = 117
FUNC_LCM_NAME = 118
FUNC_FLOOR_NAME = 119
FUNC_CEIL_NAME = 120
FUNC_SQRT = 121
FUNC_GCD = 122
FUNC_LCM = 123
FUNC_FLOOR = 124
FUNC_CEIL = 125
FUNC_MAX = 126
FUNC_MIN = 127
FUNC_DET = 128
FUNC_EYE_NAME = 129
FUNC_ZEROS_NAME = 130
FUNC_ONES_NAME = 131
FUNC_COLS_NAME = 132
FUNC_ROWS_NAME = 133
FUNC_DIAG_NAME = 134
FUNC_NORM_NAME = 135
FUNC_RANK_NAME = 136
FUNC_TRACE_NAME = 137
FUNC_RREF_NAME = 138
FUNC_HSTACK_NAME = 139
FUNC_VSTACK_NAME = 140
FUNC_ORTHOGONALIZE_NAME = 141
FUNC_NULLSPACE_NAME = 142
FUNC_DIAGONALIZE_NAME = 143
FUNC_EIGENVALS_NAME = 144
FUNC_EIGENVECTORS_NAME = 145
FUNC_SVD_NAME = 146
CMD_TIMES = 147
CMD_CDOT = 148
CMD_DIV = 149
CMD_FRAC = 150
CMD_BINOM = 151
CMD_CHOOSE = 152
CMD_MOD = 153
CMD_MATHIT = 154
CMD_OPERATORNAME = 155
MATRIX_TYPE_MATRIX = 156
MATRIX_TYPE_PMATRIX = 157
MATRIX_TYPE_BMATRIX = 158
MATRIX_TYPE_DET = 159
MATRIX_TYPES = 160
CMD_MATRIX_START = 161
CMD_MATRIX_END = 162
CMD_DET_START = 163
CMD_DET_END = 164
MATRIX_DEL_COL = 165
MATRIX_DEL_ROW = 166
UNDERSCORE = 167
CARET = 168
COLON = 169
SEMICOLON = 170
COMMA = 171
PERIOD = 172
DIFFERENTIAL = 173
EXP_E = 174
E_NOTATION_E = 175
LETTER_NO_E = 176
MATRIX_XRIGHTARROW = 177
TRANSFORM_EXCHANGE = 178
NUMBER = 179
E_NOTATION = 180
IN = 181
ASSIGNMENT = 182
EQUAL = 183
LT = 184
LTE = 185
GT = 186
GTE = 187
UNEQUAL = 188
BANG = 189
PERCENT_NUMBER = 190
GREEK_CMD = 191
OTHER_SYMBOL_CMD = 192
SYMBOL = 193
VARIABLE = 194
def __init__(self, input, output=sys.stdout):
super(PSParser, self).__init__(input, output=output)
self.checkVersion("4.11.1")
self._interp = ParserATNSimulator(
self, self.atn, self.decisionsToDFA, self.sharedContextCache
)
self._predicates = None
class Accent_symbolContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Accent_symbolContext, self).__init__(parent, invokingState)
self.parser = parser
def CMD_MATHIT(self):
return self.getToken(PSParser.CMD_MATHIT, 0)
def getRuleIndex(self):
return PSParser.RULE_accent_symbol
def enterRule(self, listener):
if hasattr(listener, "enterAccent_symbol"):
listener.enterAccent_symbol(self)
def exitRule(self, listener):
if hasattr(listener, "exitAccent_symbol"):
listener.exitAccent_symbol(self)
def accent_symbol(self):
localctx = PSParser.Accent_symbolContext(self, self._ctx, self.state)
self.enterRule(localctx, 0, self.RULE_accent_symbol)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 126
_la = self._input.LA(1)
if not (
((_la) & ~0x3F) == 0 and ((1 << _la) & 2199023255550) != 0 or _la == 154
):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class MathContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.MathContext, self).__init__(parent, invokingState)
self.parser = parser
def relation(self):
return self.getTypedRuleContext(PSParser.RelationContext, 0)
def relation_list(self):
return self.getTypedRuleContext(PSParser.Relation_listContext, 0)
def getRuleIndex(self):
return PSParser.RULE_math
def enterRule(self, listener):
if hasattr(listener, "enterMath"):
listener.enterMath(self)
def exitRule(self, listener):
if hasattr(listener, "exitMath"):
listener.exitMath(self)
def math(self):
localctx = PSParser.MathContext(self, self._ctx, self.state)
self.enterRule(localctx, 2, self.RULE_math)
try:
self.state = 130
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 0, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 128
self.relation(0)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 129
self.relation_list()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class TransposeContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.TransposeContext, self).__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PSParser.RULE_transpose
def enterRule(self, listener):
if hasattr(listener, "enterTranspose"):
listener.enterTranspose(self)
def exitRule(self, listener):
if hasattr(listener, "exitTranspose"):
listener.exitTranspose(self)
def transpose(self):
localctx = PSParser.TransposeContext(self, self._ctx, self.state)
self.enterRule(localctx, 4, self.RULE_transpose)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 132
_la = self._input.LA(1)
if not (((_la) & ~0x3F) == 0 and ((1 << _la) & 32985348833280) != 0):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Transform_atomContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Transform_atomContext, self).__init__(parent, invokingState)
self.parser = parser
def LETTER_NO_E(self):
return self.getToken(PSParser.LETTER_NO_E, 0)
def UNDERSCORE(self):
return self.getToken(PSParser.UNDERSCORE, 0)
def NUMBER(self):
return self.getToken(PSParser.NUMBER, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def getRuleIndex(self):
return PSParser.RULE_transform_atom
def enterRule(self, listener):
if hasattr(listener, "enterTransform_atom"):
listener.enterTransform_atom(self)
def exitRule(self, listener):
if hasattr(listener, "exitTransform_atom"):
listener.exitTransform_atom(self)
def transform_atom(self):
localctx = PSParser.Transform_atomContext(self, self._ctx, self.state)
self.enterRule(localctx, 6, self.RULE_transform_atom)
try:
self.enterOuterAlt(localctx, 1)
self.state = 134
self.match(PSParser.LETTER_NO_E)
self.state = 135
self.match(PSParser.UNDERSCORE)
self.state = 140
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [179]:
self.state = 136
self.match(PSParser.NUMBER)
pass
elif token in [55]:
self.state = 137
self.match(PSParser.L_BRACE)
self.state = 138
self.match(PSParser.NUMBER)
self.state = 139
self.match(PSParser.R_BRACE)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Transform_scaleContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Transform_scaleContext, self).__init__(parent, invokingState)
self.parser = parser
def transform_atom(self):
return self.getTypedRuleContext(PSParser.Transform_atomContext, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def group(self):
return self.getTypedRuleContext(PSParser.GroupContext, 0)
def ADD(self):
return self.getToken(PSParser.ADD, 0)
def SUB(self):
return self.getToken(PSParser.SUB, 0)
def getRuleIndex(self):
return PSParser.RULE_transform_scale
def enterRule(self, listener):
if hasattr(listener, "enterTransform_scale"):
listener.enterTransform_scale(self)
def exitRule(self, listener):
if hasattr(listener, "exitTransform_scale"):
listener.exitTransform_scale(self)
def transform_scale(self):
localctx = PSParser.Transform_scaleContext(self, self._ctx, self.state)
self.enterRule(localctx, 8, self.RULE_transform_scale)
try:
self.enterOuterAlt(localctx, 1)
self.state = 146
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 2, self._ctx)
if la_ == 1:
self.state = 142
self.expr()
pass
elif la_ == 2:
self.state = 143
self.group()
pass
elif la_ == 3:
self.state = 144
self.match(PSParser.ADD)
pass
elif la_ == 4:
self.state = 145
self.match(PSParser.SUB)
pass
self.state = 148
self.transform_atom()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Transform_swapContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Transform_swapContext, self).__init__(parent, invokingState)
self.parser = parser
def transform_atom(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.Transform_atomContext)
else:
return self.getTypedRuleContext(PSParser.Transform_atomContext, i)
def TRANSFORM_EXCHANGE(self):
return self.getToken(PSParser.TRANSFORM_EXCHANGE, 0)
def getRuleIndex(self):
return PSParser.RULE_transform_swap
def enterRule(self, listener):
if hasattr(listener, "enterTransform_swap"):
listener.enterTransform_swap(self)
def exitRule(self, listener):
if hasattr(listener, "exitTransform_swap"):
listener.exitTransform_swap(self)
def transform_swap(self):
localctx = PSParser.Transform_swapContext(self, self._ctx, self.state)
self.enterRule(localctx, 10, self.RULE_transform_swap)
try:
self.enterOuterAlt(localctx, 1)
self.state = 150
self.transform_atom()
self.state = 151
self.match(PSParser.TRANSFORM_EXCHANGE)
self.state = 152
self.transform_atom()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Transform_assignmentContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Transform_assignmentContext, self).__init__(
parent, invokingState
)
self.parser = parser
def transform_atom(self):
return self.getTypedRuleContext(PSParser.Transform_atomContext, 0)
def transform_scale(self):
return self.getTypedRuleContext(PSParser.Transform_scaleContext, 0)
def getRuleIndex(self):
return PSParser.RULE_transform_assignment
def enterRule(self, listener):
if hasattr(listener, "enterTransform_assignment"):
listener.enterTransform_assignment(self)
def exitRule(self, listener):
if hasattr(listener, "exitTransform_assignment"):
listener.exitTransform_assignment(self)
def transform_assignment(self):
localctx = PSParser.Transform_assignmentContext(self, self._ctx, self.state)
self.enterRule(localctx, 12, self.RULE_transform_assignment)
try:
self.enterOuterAlt(localctx, 1)
self.state = 154
self.transform_atom()
self.state = 155
self.transform_scale()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Elementary_transformContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Elementary_transformContext, self).__init__(
parent, invokingState
)
self.parser = parser
def transform_assignment(self):
return self.getTypedRuleContext(PSParser.Transform_assignmentContext, 0)
def transform_scale(self):
return self.getTypedRuleContext(PSParser.Transform_scaleContext, 0)
def transform_swap(self):
return self.getTypedRuleContext(PSParser.Transform_swapContext, 0)
def getRuleIndex(self):
return PSParser.RULE_elementary_transform
def enterRule(self, listener):
if hasattr(listener, "enterElementary_transform"):
listener.enterElementary_transform(self)
def exitRule(self, listener):
if hasattr(listener, "exitElementary_transform"):
listener.exitElementary_transform(self)
def elementary_transform(self):
localctx = PSParser.Elementary_transformContext(self, self._ctx, self.state)
self.enterRule(localctx, 14, self.RULE_elementary_transform)
try:
self.state = 160
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 3, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 157
self.transform_assignment()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 158
self.transform_scale()
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 159
self.transform_swap()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Elementary_transformsContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Elementary_transformsContext, self).__init__(
parent, invokingState
)
self.parser = parser
def elementary_transform(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.Elementary_transformContext)
else:
return self.getTypedRuleContext(PSParser.Elementary_transformContext, i)
def COMMA(self, i=None):
if i is None:
return self.getTokens(PSParser.COMMA)
else:
return self.getToken(PSParser.COMMA, i)
def getRuleIndex(self):
return PSParser.RULE_elementary_transforms
def enterRule(self, listener):
if hasattr(listener, "enterElementary_transforms"):
listener.enterElementary_transforms(self)
def exitRule(self, listener):
if hasattr(listener, "exitElementary_transforms"):
listener.exitElementary_transforms(self)
def elementary_transforms(self):
localctx = PSParser.Elementary_transformsContext(self, self._ctx, self.state)
self.enterRule(localctx, 16, self.RULE_elementary_transforms)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 162
self.elementary_transform()
self.state = 167
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la == 171:
self.state = 163
self.match(PSParser.COMMA)
self.state = 164
self.elementary_transform()
self.state = 169
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class MatrixContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.MatrixContext, self).__init__(parent, invokingState)
self.parser = parser
def CMD_MATRIX_START(self):
return self.getToken(PSParser.CMD_MATRIX_START, 0)
def matrix_row(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.Matrix_rowContext)
else:
return self.getTypedRuleContext(PSParser.Matrix_rowContext, i)
def CMD_MATRIX_END(self):
return self.getToken(PSParser.CMD_MATRIX_END, 0)
def MATRIX_DEL_ROW(self, i=None):
if i is None:
return self.getTokens(PSParser.MATRIX_DEL_ROW)
else:
return self.getToken(PSParser.MATRIX_DEL_ROW, i)
def MATRIX_XRIGHTARROW(self):
return self.getToken(PSParser.MATRIX_XRIGHTARROW, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def elementary_transforms(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.Elementary_transformsContext)
else:
return self.getTypedRuleContext(
PSParser.Elementary_transformsContext, i
)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def L_BRACKET(self):
return self.getToken(PSParser.L_BRACKET, 0)
def R_BRACKET(self):
return self.getToken(PSParser.R_BRACKET, 0)
def getRuleIndex(self):
return PSParser.RULE_matrix
def enterRule(self, listener):
if hasattr(listener, "enterMatrix"):
listener.enterMatrix(self)
def exitRule(self, listener):
if hasattr(listener, "exitMatrix"):
listener.exitMatrix(self)
def matrix(self):
localctx = PSParser.MatrixContext(self, self._ctx, self.state)
self.enterRule(localctx, 18, self.RULE_matrix)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 170
self.match(PSParser.CMD_MATRIX_START)
self.state = 171
self.matrix_row()
self.state = 176
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 5, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 172
self.match(PSParser.MATRIX_DEL_ROW)
self.state = 173
self.matrix_row()
self.state = 178
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 5, self._ctx)
self.state = 180
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 166:
self.state = 179
self.match(PSParser.MATRIX_DEL_ROW)
self.state = 182
self.match(PSParser.CMD_MATRIX_END)
self.state = 194
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 8, self._ctx)
if la_ == 1:
self.state = 183
self.match(PSParser.MATRIX_XRIGHTARROW)
self.state = 188
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 61:
self.state = 184
self.match(PSParser.L_BRACKET)
self.state = 185
self.elementary_transforms()
self.state = 186
self.match(PSParser.R_BRACKET)
self.state = 190
self.match(PSParser.L_BRACE)
self.state = 191
self.elementary_transforms()
self.state = 192
self.match(PSParser.R_BRACE)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class DetContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.DetContext, self).__init__(parent, invokingState)
self.parser = parser
def CMD_DET_START(self):
return self.getToken(PSParser.CMD_DET_START, 0)
def matrix_row(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.Matrix_rowContext)
else:
return self.getTypedRuleContext(PSParser.Matrix_rowContext, i)
def CMD_DET_END(self):
return self.getToken(PSParser.CMD_DET_END, 0)
def MATRIX_DEL_ROW(self, i=None):
if i is None:
return self.getTokens(PSParser.MATRIX_DEL_ROW)
else:
return self.getToken(PSParser.MATRIX_DEL_ROW, i)
def getRuleIndex(self):
return PSParser.RULE_det
def enterRule(self, listener):
if hasattr(listener, "enterDet"):
listener.enterDet(self)
def exitRule(self, listener):
if hasattr(listener, "exitDet"):
listener.exitDet(self)
def det(self):
localctx = PSParser.DetContext(self, self._ctx, self.state)
self.enterRule(localctx, 20, self.RULE_det)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 196
self.match(PSParser.CMD_DET_START)
self.state = 197
self.matrix_row()
self.state = 202
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 9, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 198
self.match(PSParser.MATRIX_DEL_ROW)
self.state = 199
self.matrix_row()
self.state = 204
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 9, self._ctx)
self.state = 206
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 166:
self.state = 205
self.match(PSParser.MATRIX_DEL_ROW)
self.state = 208
self.match(PSParser.CMD_DET_END)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Matrix_rowContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Matrix_rowContext, self).__init__(parent, invokingState)
self.parser = parser
def expr(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.ExprContext)
else:
return self.getTypedRuleContext(PSParser.ExprContext, i)
def MATRIX_DEL_COL(self, i=None):
if i is None:
return self.getTokens(PSParser.MATRIX_DEL_COL)
else:
return self.getToken(PSParser.MATRIX_DEL_COL, i)
def getRuleIndex(self):
return PSParser.RULE_matrix_row
def enterRule(self, listener):
if hasattr(listener, "enterMatrix_row"):
listener.enterMatrix_row(self)
def exitRule(self, listener):
if hasattr(listener, "exitMatrix_row"):
listener.exitMatrix_row(self)
def matrix_row(self):
localctx = PSParser.Matrix_rowContext(self, self._ctx, self.state)
self.enterRule(localctx, 22, self.RULE_matrix_row)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 210
self.expr()
self.state = 215
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la == 165:
self.state = 211
self.match(PSParser.MATRIX_DEL_COL)
self.state = 212
self.expr()
self.state = 217
self._errHandler.sync(self)
_la = self._input.LA(1)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class RelationContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.RelationContext, self).__init__(parent, invokingState)
self.parser = parser
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def relation(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.RelationContext)
else:
return self.getTypedRuleContext(PSParser.RelationContext, i)
def IN(self):
return self.getToken(PSParser.IN, 0)
def ASSIGNMENT(self):
return self.getToken(PSParser.ASSIGNMENT, 0)
def EQUAL(self):
return self.getToken(PSParser.EQUAL, 0)
def LT(self):
return self.getToken(PSParser.LT, 0)
def LTE(self):
return self.getToken(PSParser.LTE, 0)
def GT(self):
return self.getToken(PSParser.GT, 0)
def GTE(self):
return self.getToken(PSParser.GTE, 0)
def UNEQUAL(self):
return self.getToken(PSParser.UNEQUAL, 0)
def getRuleIndex(self):
return PSParser.RULE_relation
def enterRule(self, listener):
if hasattr(listener, "enterRelation"):
listener.enterRelation(self)
def exitRule(self, listener):
if hasattr(listener, "exitRelation"):
listener.exitRelation(self)
def relation(self, _p=0):
_parentctx = self._ctx
_parentState = self.state
localctx = PSParser.RelationContext(self, self._ctx, _parentState)
_prevctx = localctx
_startState = 24
self.enterRecursionRule(localctx, 24, self.RULE_relation, _p)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 219
self.expr()
self._ctx.stop = self._input.LT(-1)
self.state = 226
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 12, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
if self._parseListeners is not None:
self.triggerExitRuleEvent()
_prevctx = localctx
localctx = PSParser.RelationContext(self, _parentctx, _parentState)
self.pushNewRecursionContext(
localctx, _startState, self.RULE_relation
)
self.state = 221
if not self.precpred(self._ctx, 2):
from antlr4.error.Errors import FailedPredicateException
raise FailedPredicateException(
self, "self.precpred(self._ctx, 2)"
)
self.state = 222
_la = self._input.LA(1)
if not (
(((_la - 181)) & ~0x3F) == 0 and ((1 << (_la - 181)) & 255) != 0
):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 223
self.relation(3)
self.state = 228
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 12, self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.unrollRecursionContexts(_parentctx)
return localctx
class Relation_listContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Relation_listContext, self).__init__(parent, invokingState)
self.parser = parser
def relation_list_content(self):
return self.getTypedRuleContext(PSParser.Relation_list_contentContext, 0)
def L_BRACKET(self):
return self.getToken(PSParser.L_BRACKET, 0)
def R_BRACKET(self):
return self.getToken(PSParser.R_BRACKET, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def L_BRACE_VISUAL(self):
return self.getToken(PSParser.L_BRACE_VISUAL, 0)
def R_BRACE_VISUAL(self):
return self.getToken(PSParser.R_BRACE_VISUAL, 0)
def L_LEFT(self):
return self.getToken(PSParser.L_LEFT, 0)
def R_RIGHT(self):
return self.getToken(PSParser.R_RIGHT, 0)
def ML_LEFT(self):
return self.getToken(PSParser.ML_LEFT, 0)
def MR_RIGHT(self):
return self.getToken(PSParser.MR_RIGHT, 0)
def getRuleIndex(self):
return PSParser.RULE_relation_list
def enterRule(self, listener):
if hasattr(listener, "enterRelation_list"):
listener.enterRelation_list(self)
def exitRule(self, listener):
if hasattr(listener, "exitRelation_list"):
listener.exitRelation_list(self)
def relation_list(self):
localctx = PSParser.Relation_listContext(self, self._ctx, self.state)
self.enterRule(localctx, 26, self.RULE_relation_list)
try:
self.state = 266
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 13, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 229
self.relation_list_content()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 230
self.match(PSParser.L_BRACKET)
self.state = 231
self.relation_list_content()
self.state = 232
self.match(PSParser.R_BRACKET)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 234
self.match(PSParser.L_BRACE)
self.state = 235
self.relation_list_content()
self.state = 236
self.match(PSParser.R_BRACE)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 238
self.match(PSParser.L_BRACE_VISUAL)
self.state = 239
self.relation_list_content()
self.state = 240
self.match(PSParser.R_BRACE_VISUAL)
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 242
self.match(PSParser.L_LEFT)
self.state = 243
self.match(PSParser.L_BRACKET)
self.state = 244
self.relation_list_content()
self.state = 245
self.match(PSParser.R_RIGHT)
self.state = 246
self.match(PSParser.R_BRACKET)
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 248
self.match(PSParser.L_LEFT)
self.state = 249
self.match(PSParser.L_BRACE_VISUAL)
self.state = 250
self.relation_list_content()
self.state = 251
self.match(PSParser.R_RIGHT)
self.state = 252
self.match(PSParser.R_BRACE_VISUAL)
pass
elif la_ == 7:
self.enterOuterAlt(localctx, 7)
self.state = 254
self.match(PSParser.ML_LEFT)
self.state = 255
self.match(PSParser.L_BRACKET)
self.state = 256
self.relation_list_content()
self.state = 257
self.match(PSParser.MR_RIGHT)
self.state = 258
self.match(PSParser.R_BRACKET)
pass
elif la_ == 8:
self.enterOuterAlt(localctx, 8)
self.state = 260
self.match(PSParser.ML_LEFT)
self.state = 261
self.match(PSParser.L_BRACE_VISUAL)
self.state = 262
self.relation_list_content()
self.state = 263
self.match(PSParser.MR_RIGHT)
self.state = 264
self.match(PSParser.R_BRACE_VISUAL)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Relation_list_contentContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Relation_list_contentContext, self).__init__(
parent, invokingState
)
self.parser = parser
def relation(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.RelationContext)
else:
return self.getTypedRuleContext(PSParser.RelationContext, i)
def COMMA(self, i=None):
if i is None:
return self.getTokens(PSParser.COMMA)
else:
return self.getToken(PSParser.COMMA, i)
def SEMICOLON(self, i=None):
if i is None:
return self.getTokens(PSParser.SEMICOLON)
else:
return self.getToken(PSParser.SEMICOLON, i)
def getRuleIndex(self):
return PSParser.RULE_relation_list_content
def enterRule(self, listener):
if hasattr(listener, "enterRelation_list_content"):
listener.enterRelation_list_content(self)
def exitRule(self, listener):
if hasattr(listener, "exitRelation_list_content"):
listener.exitRelation_list_content(self)
def relation_list_content(self):
localctx = PSParser.Relation_list_contentContext(self, self._ctx, self.state)
self.enterRule(localctx, 28, self.RULE_relation_list_content)
self._la = 0 # Token type
try:
self.state = 288
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 16, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 268
self.relation(0)
self.state = 269
self.match(PSParser.COMMA)
self.state = 270
self.relation(0)
self.state = 275
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la == 171:
self.state = 271
self.match(PSParser.COMMA)
self.state = 272
self.relation(0)
self.state = 277
self._errHandler.sync(self)
_la = self._input.LA(1)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 278
self.relation(0)
self.state = 279
self.match(PSParser.SEMICOLON)
self.state = 280
self.relation(0)
self.state = 285
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la == 170:
self.state = 281
self.match(PSParser.SEMICOLON)
self.state = 282
self.relation(0)
self.state = 287
self._errHandler.sync(self)
_la = self._input.LA(1)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class EqualityContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.EqualityContext, self).__init__(parent, invokingState)
self.parser = parser
def expr(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.ExprContext)
else:
return self.getTypedRuleContext(PSParser.ExprContext, i)
def EQUAL(self):
return self.getToken(PSParser.EQUAL, 0)
def ASSIGNMENT(self):
return self.getToken(PSParser.ASSIGNMENT, 0)
def getRuleIndex(self):
return PSParser.RULE_equality
def enterRule(self, listener):
if hasattr(listener, "enterEquality"):
listener.enterEquality(self)
def exitRule(self, listener):
if hasattr(listener, "exitEquality"):
listener.exitEquality(self)
def equality(self):
localctx = PSParser.EqualityContext(self, self._ctx, self.state)
self.enterRule(localctx, 30, self.RULE_equality)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 290
self.expr()
self.state = 291
_la = self._input.LA(1)
if not (_la == 182 or _la == 183):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 292
self.expr()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class ExprContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.ExprContext, self).__init__(parent, invokingState)
self.parser = parser
def additive(self):
return self.getTypedRuleContext(PSParser.AdditiveContext, 0)
def getRuleIndex(self):
return PSParser.RULE_expr
def enterRule(self, listener):
if hasattr(listener, "enterExpr"):
listener.enterExpr(self)
def exitRule(self, listener):
if hasattr(listener, "exitExpr"):
listener.exitExpr(self)
def expr(self):
localctx = PSParser.ExprContext(self, self._ctx, self.state)
self.enterRule(localctx, 32, self.RULE_expr)
try:
self.enterOuterAlt(localctx, 1)
self.state = 294
self.additive(0)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class AdditiveContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.AdditiveContext, self).__init__(parent, invokingState)
self.parser = parser
def mp(self):
return self.getTypedRuleContext(PSParser.MpContext, 0)
def additive(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.AdditiveContext)
else:
return self.getTypedRuleContext(PSParser.AdditiveContext, i)
def ADD(self):
return self.getToken(PSParser.ADD, 0)
def SUB(self):
return self.getToken(PSParser.SUB, 0)
def getRuleIndex(self):
return PSParser.RULE_additive
def enterRule(self, listener):
if hasattr(listener, "enterAdditive"):
listener.enterAdditive(self)
def exitRule(self, listener):
if hasattr(listener, "exitAdditive"):
listener.exitAdditive(self)
def additive(self, _p=0):
_parentctx = self._ctx
_parentState = self.state
localctx = PSParser.AdditiveContext(self, self._ctx, _parentState)
_prevctx = localctx
_startState = 34
self.enterRecursionRule(localctx, 34, self.RULE_additive, _p)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 297
self.mp(0)
self._ctx.stop = self._input.LT(-1)
self.state = 304
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 17, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
if self._parseListeners is not None:
self.triggerExitRuleEvent()
_prevctx = localctx
localctx = PSParser.AdditiveContext(self, _parentctx, _parentState)
self.pushNewRecursionContext(
localctx, _startState, self.RULE_additive
)
self.state = 299
if not self.precpred(self._ctx, 2):
from antlr4.error.Errors import FailedPredicateException
raise FailedPredicateException(
self, "self.precpred(self._ctx, 2)"
)
self.state = 300
_la = self._input.LA(1)
if not (_la == 47 or _la == 48):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 301
self.additive(3)
self.state = 306
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 17, self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.unrollRecursionContexts(_parentctx)
return localctx
class MpContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.MpContext, self).__init__(parent, invokingState)
self.parser = parser
def unary(self):
return self.getTypedRuleContext(PSParser.UnaryContext, 0)
def mp(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.MpContext)
else:
return self.getTypedRuleContext(PSParser.MpContext, i)
def MUL(self):
return self.getToken(PSParser.MUL, 0)
def CMD_TIMES(self):
return self.getToken(PSParser.CMD_TIMES, 0)
def CMD_CDOT(self):
return self.getToken(PSParser.CMD_CDOT, 0)
def DIV(self):
return self.getToken(PSParser.DIV, 0)
def CMD_DIV(self):
return self.getToken(PSParser.CMD_DIV, 0)
def COLON(self):
return self.getToken(PSParser.COLON, 0)
def CMD_MOD(self):
return self.getToken(PSParser.CMD_MOD, 0)
def getRuleIndex(self):
return PSParser.RULE_mp
def enterRule(self, listener):
if hasattr(listener, "enterMp"):
listener.enterMp(self)
def exitRule(self, listener):
if hasattr(listener, "exitMp"):
listener.exitMp(self)
def mp(self, _p=0):
_parentctx = self._ctx
_parentState = self.state
localctx = PSParser.MpContext(self, self._ctx, _parentState)
_prevctx = localctx
_startState = 36
self.enterRecursionRule(localctx, 36, self.RULE_mp, _p)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 308
self.unary()
self._ctx.stop = self._input.LT(-1)
self.state = 315
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 18, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
if self._parseListeners is not None:
self.triggerExitRuleEvent()
_prevctx = localctx
localctx = PSParser.MpContext(self, _parentctx, _parentState)
self.pushNewRecursionContext(localctx, _startState, self.RULE_mp)
self.state = 310
if not self.precpred(self._ctx, 2):
from antlr4.error.Errors import FailedPredicateException
raise FailedPredicateException(
self, "self.precpred(self._ctx, 2)"
)
self.state = 311
_la = self._input.LA(1)
if not (
_la == 49
or _la == 50
or (((_la - 147)) & ~0x3F) == 0
and ((1 << (_la - 147)) & 4194375) != 0
):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 312
self.mp(3)
self.state = 317
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 18, self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.unrollRecursionContexts(_parentctx)
return localctx
class Mp_nofuncContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Mp_nofuncContext, self).__init__(parent, invokingState)
self.parser = parser
def unary_nofunc(self):
return self.getTypedRuleContext(PSParser.Unary_nofuncContext, 0)
def mp_nofunc(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.Mp_nofuncContext)
else:
return self.getTypedRuleContext(PSParser.Mp_nofuncContext, i)
def MUL(self):
return self.getToken(PSParser.MUL, 0)
def CMD_TIMES(self):
return self.getToken(PSParser.CMD_TIMES, 0)
def CMD_CDOT(self):
return self.getToken(PSParser.CMD_CDOT, 0)
def DIV(self):
return self.getToken(PSParser.DIV, 0)
def CMD_DIV(self):
return self.getToken(PSParser.CMD_DIV, 0)
def COLON(self):
return self.getToken(PSParser.COLON, 0)
def CMD_MOD(self):
return self.getToken(PSParser.CMD_MOD, 0)
def getRuleIndex(self):
return PSParser.RULE_mp_nofunc
def enterRule(self, listener):
if hasattr(listener, "enterMp_nofunc"):
listener.enterMp_nofunc(self)
def exitRule(self, listener):
if hasattr(listener, "exitMp_nofunc"):
listener.exitMp_nofunc(self)
def mp_nofunc(self, _p=0):
_parentctx = self._ctx
_parentState = self.state
localctx = PSParser.Mp_nofuncContext(self, self._ctx, _parentState)
_prevctx = localctx
_startState = 38
self.enterRecursionRule(localctx, 38, self.RULE_mp_nofunc, _p)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 319
self.unary_nofunc()
self._ctx.stop = self._input.LT(-1)
self.state = 326
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 19, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
if self._parseListeners is not None:
self.triggerExitRuleEvent()
_prevctx = localctx
localctx = PSParser.Mp_nofuncContext(self, _parentctx, _parentState)
self.pushNewRecursionContext(
localctx, _startState, self.RULE_mp_nofunc
)
self.state = 321
if not self.precpred(self._ctx, 2):
from antlr4.error.Errors import FailedPredicateException
raise FailedPredicateException(
self, "self.precpred(self._ctx, 2)"
)
self.state = 322
_la = self._input.LA(1)
if not (
_la == 49
or _la == 50
or (((_la - 147)) & ~0x3F) == 0
and ((1 << (_la - 147)) & 4194375) != 0
):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 323
self.mp_nofunc(3)
self.state = 328
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 19, self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.unrollRecursionContexts(_parentctx)
return localctx
class UnaryContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.UnaryContext, self).__init__(parent, invokingState)
self.parser = parser
def unary(self):
return self.getTypedRuleContext(PSParser.UnaryContext, 0)
def ADD(self):
return self.getToken(PSParser.ADD, 0)
def SUB(self):
return self.getToken(PSParser.SUB, 0)
def postfix(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.PostfixContext)
else:
return self.getTypedRuleContext(PSParser.PostfixContext, i)
def getRuleIndex(self):
return PSParser.RULE_unary
def enterRule(self, listener):
if hasattr(listener, "enterUnary"):
listener.enterUnary(self)
def exitRule(self, listener):
if hasattr(listener, "exitUnary"):
listener.exitUnary(self)
def unary(self):
localctx = PSParser.UnaryContext(self, self._ctx, self.state)
self.enterRule(localctx, 40, self.RULE_unary)
self._la = 0 # Token type
try:
self.state = 336
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [47, 48]:
self.enterOuterAlt(localctx, 1)
self.state = 329
_la = self._input.LA(1)
if not (_la == 47 or _la == 48):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 330
self.unary()
pass
elif token in [
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,
51,
53,
55,
57,
59,
61,
63,
65,
66,
68,
69,
70,
72,
74,
76,
78,
80,
82,
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,
121,
122,
123,
124,
125,
126,
127,
128,
150,
151,
154,
155,
161,
163,
173,
174,
176,
179,
180,
190,
191,
192,
193,
194,
]:
self.enterOuterAlt(localctx, 2)
self.state = 332
self._errHandler.sync(self)
_alt = 1
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 331
self.postfix()
else:
raise NoViableAltException(self)
self.state = 334
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 20, self._ctx)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Unary_nofuncContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Unary_nofuncContext, self).__init__(parent, invokingState)
self.parser = parser
def unary_nofunc(self):
return self.getTypedRuleContext(PSParser.Unary_nofuncContext, 0)
def ADD(self):
return self.getToken(PSParser.ADD, 0)
def SUB(self):
return self.getToken(PSParser.SUB, 0)
def postfix(self):
return self.getTypedRuleContext(PSParser.PostfixContext, 0)
def postfix_nofunc(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.Postfix_nofuncContext)
else:
return self.getTypedRuleContext(PSParser.Postfix_nofuncContext, i)
def getRuleIndex(self):
return PSParser.RULE_unary_nofunc
def enterRule(self, listener):
if hasattr(listener, "enterUnary_nofunc"):
listener.enterUnary_nofunc(self)
def exitRule(self, listener):
if hasattr(listener, "exitUnary_nofunc"):
listener.exitUnary_nofunc(self)
def unary_nofunc(self):
localctx = PSParser.Unary_nofuncContext(self, self._ctx, self.state)
self.enterRule(localctx, 42, self.RULE_unary_nofunc)
self._la = 0 # Token type
try:
self.state = 347
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [47, 48]:
self.enterOuterAlt(localctx, 1)
self.state = 338
_la = self._input.LA(1)
if not (_la == 47 or _la == 48):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 339
self.unary_nofunc()
pass
elif token in [
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,
51,
53,
55,
57,
59,
61,
63,
65,
66,
68,
69,
70,
72,
74,
76,
78,
80,
82,
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,
121,
122,
123,
124,
125,
126,
127,
128,
150,
151,
154,
155,
161,
163,
173,
174,
176,
179,
180,
190,
191,
192,
193,
194,
]:
self.enterOuterAlt(localctx, 2)
self.state = 340
self.postfix()
self.state = 344
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 22, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 341
self.postfix_nofunc()
self.state = 346
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 22, self._ctx)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class PostfixContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.PostfixContext, self).__init__(parent, invokingState)
self.parser = parser
def exp(self):
return self.getTypedRuleContext(PSParser.ExpContext, 0)
def postfix_op(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.Postfix_opContext)
else:
return self.getTypedRuleContext(PSParser.Postfix_opContext, i)
def getRuleIndex(self):
return PSParser.RULE_postfix
def enterRule(self, listener):
if hasattr(listener, "enterPostfix"):
listener.enterPostfix(self)
def exitRule(self, listener):
if hasattr(listener, "exitPostfix"):
listener.exitPostfix(self)
def postfix(self):
localctx = PSParser.PostfixContext(self, self._ctx, self.state)
self.enterRule(localctx, 44, self.RULE_postfix)
try:
self.enterOuterAlt(localctx, 1)
self.state = 349
self.exp(0)
self.state = 353
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 24, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 350
self.postfix_op()
self.state = 355
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 24, self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Postfix_nofuncContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Postfix_nofuncContext, self).__init__(parent, invokingState)
self.parser = parser
def exp_nofunc(self):
return self.getTypedRuleContext(PSParser.Exp_nofuncContext, 0)
def postfix_op(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.Postfix_opContext)
else:
return self.getTypedRuleContext(PSParser.Postfix_opContext, i)
def getRuleIndex(self):
return PSParser.RULE_postfix_nofunc
def enterRule(self, listener):
if hasattr(listener, "enterPostfix_nofunc"):
listener.enterPostfix_nofunc(self)
def exitRule(self, listener):
if hasattr(listener, "exitPostfix_nofunc"):
listener.exitPostfix_nofunc(self)
def postfix_nofunc(self):
localctx = PSParser.Postfix_nofuncContext(self, self._ctx, self.state)
self.enterRule(localctx, 46, self.RULE_postfix_nofunc)
try:
self.enterOuterAlt(localctx, 1)
self.state = 356
self.exp_nofunc(0)
self.state = 360
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 25, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 357
self.postfix_op()
self.state = 362
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 25, self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Postfix_opContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Postfix_opContext, self).__init__(parent, invokingState)
self.parser = parser
def BANG(self):
return self.getToken(PSParser.BANG, 0)
def eval_at(self):
return self.getTypedRuleContext(PSParser.Eval_atContext, 0)
def transpose(self):
return self.getTypedRuleContext(PSParser.TransposeContext, 0)
def getRuleIndex(self):
return PSParser.RULE_postfix_op
def enterRule(self, listener):
if hasattr(listener, "enterPostfix_op"):
listener.enterPostfix_op(self)
def exitRule(self, listener):
if hasattr(listener, "exitPostfix_op"):
listener.exitPostfix_op(self)
def postfix_op(self):
localctx = PSParser.Postfix_opContext(self, self._ctx, self.state)
self.enterRule(localctx, 48, self.RULE_postfix_op)
try:
self.state = 366
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [189]:
self.enterOuterAlt(localctx, 1)
self.state = 363
self.match(PSParser.BANG)
pass
elif token in [65]:
self.enterOuterAlt(localctx, 2)
self.state = 364
self.eval_at()
pass
elif token in [41, 42, 43, 44]:
self.enterOuterAlt(localctx, 3)
self.state = 365
self.transpose()
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Eval_atContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Eval_atContext, self).__init__(parent, invokingState)
self.parser = parser
def BAR(self):
return self.getToken(PSParser.BAR, 0)
def eval_at_sup(self):
return self.getTypedRuleContext(PSParser.Eval_at_supContext, 0)
def eval_at_sub(self):
return self.getTypedRuleContext(PSParser.Eval_at_subContext, 0)
def getRuleIndex(self):
return PSParser.RULE_eval_at
def enterRule(self, listener):
if hasattr(listener, "enterEval_at"):
listener.enterEval_at(self)
def exitRule(self, listener):
if hasattr(listener, "exitEval_at"):
listener.exitEval_at(self)
def eval_at(self):
localctx = PSParser.Eval_atContext(self, self._ctx, self.state)
self.enterRule(localctx, 50, self.RULE_eval_at)
try:
self.enterOuterAlt(localctx, 1)
self.state = 368
self.match(PSParser.BAR)
self.state = 374
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 27, self._ctx)
if la_ == 1:
self.state = 369
self.eval_at_sup()
pass
elif la_ == 2:
self.state = 370
self.eval_at_sub()
pass
elif la_ == 3:
self.state = 371
self.eval_at_sup()
self.state = 372
self.eval_at_sub()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Eval_at_subContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Eval_at_subContext, self).__init__(parent, invokingState)
self.parser = parser
def UNDERSCORE(self):
return self.getToken(PSParser.UNDERSCORE, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def equality(self):
return self.getTypedRuleContext(PSParser.EqualityContext, 0)
def getRuleIndex(self):
return PSParser.RULE_eval_at_sub
def enterRule(self, listener):
if hasattr(listener, "enterEval_at_sub"):
listener.enterEval_at_sub(self)
def exitRule(self, listener):
if hasattr(listener, "exitEval_at_sub"):
listener.exitEval_at_sub(self)
def eval_at_sub(self):
localctx = PSParser.Eval_at_subContext(self, self._ctx, self.state)
self.enterRule(localctx, 52, self.RULE_eval_at_sub)
try:
self.enterOuterAlt(localctx, 1)
self.state = 376
self.match(PSParser.UNDERSCORE)
self.state = 377
self.match(PSParser.L_BRACE)
self.state = 380
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 28, self._ctx)
if la_ == 1:
self.state = 378
self.expr()
pass
elif la_ == 2:
self.state = 379
self.equality()
pass
self.state = 382
self.match(PSParser.R_BRACE)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Eval_at_supContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Eval_at_supContext, self).__init__(parent, invokingState)
self.parser = parser
def CARET(self):
return self.getToken(PSParser.CARET, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def equality(self):
return self.getTypedRuleContext(PSParser.EqualityContext, 0)
def getRuleIndex(self):
return PSParser.RULE_eval_at_sup
def enterRule(self, listener):
if hasattr(listener, "enterEval_at_sup"):
listener.enterEval_at_sup(self)
def exitRule(self, listener):
if hasattr(listener, "exitEval_at_sup"):
listener.exitEval_at_sup(self)
def eval_at_sup(self):
localctx = PSParser.Eval_at_supContext(self, self._ctx, self.state)
self.enterRule(localctx, 54, self.RULE_eval_at_sup)
try:
self.enterOuterAlt(localctx, 1)
self.state = 384
self.match(PSParser.CARET)
self.state = 385
self.match(PSParser.L_BRACE)
self.state = 388
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 29, self._ctx)
if la_ == 1:
self.state = 386
self.expr()
pass
elif la_ == 2:
self.state = 387
self.equality()
pass
self.state = 390
self.match(PSParser.R_BRACE)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class ExpContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.ExpContext, self).__init__(parent, invokingState)
self.parser = parser
def comp(self):
return self.getTypedRuleContext(PSParser.CompContext, 0)
def exp(self):
return self.getTypedRuleContext(PSParser.ExpContext, 0)
def CARET(self):
return self.getToken(PSParser.CARET, 0)
def atom(self):
return self.getTypedRuleContext(PSParser.AtomContext, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def subexpr(self):
return self.getTypedRuleContext(PSParser.SubexprContext, 0)
def getRuleIndex(self):
return PSParser.RULE_exp
def enterRule(self, listener):
if hasattr(listener, "enterExp"):
listener.enterExp(self)
def exitRule(self, listener):
if hasattr(listener, "exitExp"):
listener.exitExp(self)
def exp(self, _p=0):
_parentctx = self._ctx
_parentState = self.state
localctx = PSParser.ExpContext(self, self._ctx, _parentState)
_prevctx = localctx
_startState = 56
self.enterRecursionRule(localctx, 56, self.RULE_exp, _p)
try:
self.enterOuterAlt(localctx, 1)
self.state = 393
self.comp()
self._ctx.stop = self._input.LT(-1)
self.state = 409
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 32, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
if self._parseListeners is not None:
self.triggerExitRuleEvent()
_prevctx = localctx
localctx = PSParser.ExpContext(self, _parentctx, _parentState)
self.pushNewRecursionContext(localctx, _startState, self.RULE_exp)
self.state = 395
if not self.precpred(self._ctx, 2):
from antlr4.error.Errors import FailedPredicateException
raise FailedPredicateException(
self, "self.precpred(self._ctx, 2)"
)
self.state = 396
self.match(PSParser.CARET)
self.state = 402
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [
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,
154,
173,
176,
179,
180,
190,
191,
192,
193,
194,
]:
self.state = 397
self.atom()
pass
elif token in [55]:
self.state = 398
self.match(PSParser.L_BRACE)
self.state = 399
self.expr()
self.state = 400
self.match(PSParser.R_BRACE)
pass
else:
raise NoViableAltException(self)
self.state = 405
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 31, self._ctx)
if la_ == 1:
self.state = 404
self.subexpr()
self.state = 411
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 32, self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.unrollRecursionContexts(_parentctx)
return localctx
class Exp_nofuncContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Exp_nofuncContext, self).__init__(parent, invokingState)
self.parser = parser
def comp_nofunc(self):
return self.getTypedRuleContext(PSParser.Comp_nofuncContext, 0)
def exp_nofunc(self):
return self.getTypedRuleContext(PSParser.Exp_nofuncContext, 0)
def CARET(self):
return self.getToken(PSParser.CARET, 0)
def atom(self):
return self.getTypedRuleContext(PSParser.AtomContext, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def subexpr(self):
return self.getTypedRuleContext(PSParser.SubexprContext, 0)
def getRuleIndex(self):
return PSParser.RULE_exp_nofunc
def enterRule(self, listener):
if hasattr(listener, "enterExp_nofunc"):
listener.enterExp_nofunc(self)
def exitRule(self, listener):
if hasattr(listener, "exitExp_nofunc"):
listener.exitExp_nofunc(self)
def exp_nofunc(self, _p=0):
_parentctx = self._ctx
_parentState = self.state
localctx = PSParser.Exp_nofuncContext(self, self._ctx, _parentState)
_prevctx = localctx
_startState = 58
self.enterRecursionRule(localctx, 58, self.RULE_exp_nofunc, _p)
try:
self.enterOuterAlt(localctx, 1)
self.state = 413
self.comp_nofunc()
self._ctx.stop = self._input.LT(-1)
self.state = 429
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 35, self._ctx)
while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
if _alt == 1:
if self._parseListeners is not None:
self.triggerExitRuleEvent()
_prevctx = localctx
localctx = PSParser.Exp_nofuncContext(
self, _parentctx, _parentState
)
self.pushNewRecursionContext(
localctx, _startState, self.RULE_exp_nofunc
)
self.state = 415
if not self.precpred(self._ctx, 2):
from antlr4.error.Errors import FailedPredicateException
raise FailedPredicateException(
self, "self.precpred(self._ctx, 2)"
)
self.state = 416
self.match(PSParser.CARET)
self.state = 422
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [
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,
154,
173,
176,
179,
180,
190,
191,
192,
193,
194,
]:
self.state = 417
self.atom()
pass
elif token in [55]:
self.state = 418
self.match(PSParser.L_BRACE)
self.state = 419
self.expr()
self.state = 420
self.match(PSParser.R_BRACE)
pass
else:
raise NoViableAltException(self)
self.state = 425
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 34, self._ctx)
if la_ == 1:
self.state = 424
self.subexpr()
self.state = 431
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input, 35, self._ctx)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.unrollRecursionContexts(_parentctx)
return localctx
class CompContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.CompContext, self).__init__(parent, invokingState)
self.parser = parser
def group(self):
return self.getTypedRuleContext(PSParser.GroupContext, 0)
def norm_group(self):
return self.getTypedRuleContext(PSParser.Norm_groupContext, 0)
def abs_group(self):
return self.getTypedRuleContext(PSParser.Abs_groupContext, 0)
def floor_group(self):
return self.getTypedRuleContext(PSParser.Floor_groupContext, 0)
def ceil_group(self):
return self.getTypedRuleContext(PSParser.Ceil_groupContext, 0)
def func(self):
return self.getTypedRuleContext(PSParser.FuncContext, 0)
def atom(self):
return self.getTypedRuleContext(PSParser.AtomContext, 0)
def frac(self):
return self.getTypedRuleContext(PSParser.FracContext, 0)
def binom(self):
return self.getTypedRuleContext(PSParser.BinomContext, 0)
def matrix(self):
return self.getTypedRuleContext(PSParser.MatrixContext, 0)
def det(self):
return self.getTypedRuleContext(PSParser.DetContext, 0)
def getRuleIndex(self):
return PSParser.RULE_comp
def enterRule(self, listener):
if hasattr(listener, "enterComp"):
listener.enterComp(self)
def exitRule(self, listener):
if hasattr(listener, "exitComp"):
listener.exitComp(self)
def comp(self):
localctx = PSParser.CompContext(self, self._ctx, self.state)
self.enterRule(localctx, 60, self.RULE_comp)
try:
self.state = 443
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 36, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 432
self.group()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 433
self.norm_group()
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 434
self.abs_group()
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 435
self.floor_group()
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 436
self.ceil_group()
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 437
self.func()
pass
elif la_ == 7:
self.enterOuterAlt(localctx, 7)
self.state = 438
self.atom()
pass
elif la_ == 8:
self.enterOuterAlt(localctx, 8)
self.state = 439
self.frac()
pass
elif la_ == 9:
self.enterOuterAlt(localctx, 9)
self.state = 440
self.binom()
pass
elif la_ == 10:
self.enterOuterAlt(localctx, 10)
self.state = 441
self.matrix()
pass
elif la_ == 11:
self.enterOuterAlt(localctx, 11)
self.state = 442
self.det()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Comp_nofuncContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Comp_nofuncContext, self).__init__(parent, invokingState)
self.parser = parser
def group(self):
return self.getTypedRuleContext(PSParser.GroupContext, 0)
def norm_group(self):
return self.getTypedRuleContext(PSParser.Norm_groupContext, 0)
def abs_group(self):
return self.getTypedRuleContext(PSParser.Abs_groupContext, 0)
def floor_group(self):
return self.getTypedRuleContext(PSParser.Floor_groupContext, 0)
def ceil_group(self):
return self.getTypedRuleContext(PSParser.Ceil_groupContext, 0)
def atom(self):
return self.getTypedRuleContext(PSParser.AtomContext, 0)
def frac(self):
return self.getTypedRuleContext(PSParser.FracContext, 0)
def binom(self):
return self.getTypedRuleContext(PSParser.BinomContext, 0)
def matrix(self):
return self.getTypedRuleContext(PSParser.MatrixContext, 0)
def det(self):
return self.getTypedRuleContext(PSParser.DetContext, 0)
def getRuleIndex(self):
return PSParser.RULE_comp_nofunc
def enterRule(self, listener):
if hasattr(listener, "enterComp_nofunc"):
listener.enterComp_nofunc(self)
def exitRule(self, listener):
if hasattr(listener, "exitComp_nofunc"):
listener.exitComp_nofunc(self)
def comp_nofunc(self):
localctx = PSParser.Comp_nofuncContext(self, self._ctx, self.state)
self.enterRule(localctx, 62, self.RULE_comp_nofunc)
try:
self.state = 455
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 37, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 445
self.group()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 446
self.norm_group()
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 447
self.abs_group()
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 448
self.floor_group()
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 449
self.ceil_group()
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 450
self.atom()
pass
elif la_ == 7:
self.enterOuterAlt(localctx, 7)
self.state = 451
self.frac()
pass
elif la_ == 8:
self.enterOuterAlt(localctx, 8)
self.state = 452
self.binom()
pass
elif la_ == 9:
self.enterOuterAlt(localctx, 9)
self.state = 453
self.matrix()
pass
elif la_ == 10:
self.enterOuterAlt(localctx, 10)
self.state = 454
self.det()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class GroupContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.GroupContext, self).__init__(parent, invokingState)
self.parser = parser
def L_PAREN(self):
return self.getToken(PSParser.L_PAREN, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def R_PAREN(self):
return self.getToken(PSParser.R_PAREN, 0)
def L_GROUP(self):
return self.getToken(PSParser.L_GROUP, 0)
def R_GROUP(self):
return self.getToken(PSParser.R_GROUP, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def L_BRACE_VISUAL(self):
return self.getToken(PSParser.L_BRACE_VISUAL, 0)
def R_BRACE_VISUAL(self):
return self.getToken(PSParser.R_BRACE_VISUAL, 0)
def L_BRACE_CMD(self):
return self.getToken(PSParser.L_BRACE_CMD, 0)
def R_BRACE_CMD(self):
return self.getToken(PSParser.R_BRACE_CMD, 0)
def L_BRACKET(self):
return self.getToken(PSParser.L_BRACKET, 0)
def R_BRACKET(self):
return self.getToken(PSParser.R_BRACKET, 0)
def L_BRACK(self):
return self.getToken(PSParser.L_BRACK, 0)
def R_BRACK(self):
return self.getToken(PSParser.R_BRACK, 0)
def L_LEFT(self):
return self.getToken(PSParser.L_LEFT, 0)
def R_RIGHT(self):
return self.getToken(PSParser.R_RIGHT, 0)
def ML_LEFT(self):
return self.getToken(PSParser.ML_LEFT, 0)
def MR_RIGHT(self):
return self.getToken(PSParser.MR_RIGHT, 0)
def getRuleIndex(self):
return PSParser.RULE_group
def enterRule(self, listener):
if hasattr(listener, "enterGroup"):
listener.enterGroup(self)
def exitRule(self, listener):
if hasattr(listener, "exitGroup"):
listener.exitGroup(self)
def group(self):
localctx = PSParser.GroupContext(self, self._ctx, self.state)
self.enterRule(localctx, 64, self.RULE_group)
try:
self.state = 569
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 38, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 457
self.match(PSParser.L_PAREN)
self.state = 458
self.expr()
self.state = 459
self.match(PSParser.R_PAREN)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 461
self.match(PSParser.L_GROUP)
self.state = 462
self.expr()
self.state = 463
self.match(PSParser.R_GROUP)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 465
self.match(PSParser.L_BRACE)
self.state = 466
self.expr()
self.state = 467
self.match(PSParser.R_BRACE)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 469
self.match(PSParser.L_BRACE_VISUAL)
self.state = 470
self.expr()
self.state = 471
self.match(PSParser.R_BRACE_VISUAL)
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 473
self.match(PSParser.L_BRACE_CMD)
self.state = 474
self.expr()
self.state = 475
self.match(PSParser.R_BRACE_CMD)
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 477
self.match(PSParser.L_BRACKET)
self.state = 478
self.expr()
self.state = 479
self.match(PSParser.R_BRACKET)
pass
elif la_ == 7:
self.enterOuterAlt(localctx, 7)
self.state = 481
self.match(PSParser.L_BRACK)
self.state = 482
self.expr()
self.state = 483
self.match(PSParser.R_BRACK)
pass
elif la_ == 8:
self.enterOuterAlt(localctx, 8)
self.state = 485
self.match(PSParser.L_LEFT)
self.state = 486
self.match(PSParser.L_PAREN)
self.state = 487
self.expr()
self.state = 488
self.match(PSParser.R_RIGHT)
self.state = 489
self.match(PSParser.R_PAREN)
pass
elif la_ == 9:
self.enterOuterAlt(localctx, 9)
self.state = 491
self.match(PSParser.L_LEFT)
self.state = 492
self.match(PSParser.L_GROUP)
self.state = 493
self.expr()
self.state = 494
self.match(PSParser.R_RIGHT)
self.state = 495
self.match(PSParser.R_GROUP)
pass
elif la_ == 10:
self.enterOuterAlt(localctx, 10)
self.state = 497
self.match(PSParser.L_LEFT)
self.state = 498
self.match(PSParser.L_BRACE)
self.state = 499
self.expr()
self.state = 500
self.match(PSParser.R_RIGHT)
self.state = 501
self.match(PSParser.R_BRACE)
pass
elif la_ == 11:
self.enterOuterAlt(localctx, 11)
self.state = 503
self.match(PSParser.L_LEFT)
self.state = 504
self.match(PSParser.L_BRACE_VISUAL)
self.state = 505
self.expr()
self.state = 506
self.match(PSParser.R_RIGHT)
self.state = 507
self.match(PSParser.R_BRACE_VISUAL)
pass
elif la_ == 12:
self.enterOuterAlt(localctx, 12)
self.state = 509
self.match(PSParser.L_LEFT)
self.state = 510
self.match(PSParser.L_BRACE_CMD)
self.state = 511
self.expr()
self.state = 512
self.match(PSParser.R_RIGHT)
self.state = 513
self.match(PSParser.R_BRACE_CMD)
pass
elif la_ == 13:
self.enterOuterAlt(localctx, 13)
self.state = 515
self.match(PSParser.L_LEFT)
self.state = 516
self.match(PSParser.L_BRACKET)
self.state = 517
self.expr()
self.state = 518
self.match(PSParser.R_RIGHT)
self.state = 519
self.match(PSParser.R_BRACKET)
pass
elif la_ == 14:
self.enterOuterAlt(localctx, 14)
self.state = 521
self.match(PSParser.L_LEFT)
self.state = 522
self.match(PSParser.L_BRACK)
self.state = 523
self.expr()
self.state = 524
self.match(PSParser.R_RIGHT)
self.state = 525
self.match(PSParser.R_BRACK)
pass
elif la_ == 15:
self.enterOuterAlt(localctx, 15)
self.state = 527
self.match(PSParser.ML_LEFT)
self.state = 528
self.match(PSParser.L_PAREN)
self.state = 529
self.expr()
self.state = 530
self.match(PSParser.MR_RIGHT)
self.state = 531
self.match(PSParser.R_PAREN)
pass
elif la_ == 16:
self.enterOuterAlt(localctx, 16)
self.state = 533
self.match(PSParser.ML_LEFT)
self.state = 534
self.match(PSParser.L_GROUP)
self.state = 535
self.expr()
self.state = 536
self.match(PSParser.MR_RIGHT)
self.state = 537
self.match(PSParser.R_GROUP)
pass
elif la_ == 17:
self.enterOuterAlt(localctx, 17)
self.state = 539
self.match(PSParser.ML_LEFT)
self.state = 540
self.match(PSParser.L_BRACE)
self.state = 541
self.expr()
self.state = 542
self.match(PSParser.MR_RIGHT)
self.state = 543
self.match(PSParser.R_BRACE)
pass
elif la_ == 18:
self.enterOuterAlt(localctx, 18)
self.state = 545
self.match(PSParser.ML_LEFT)
self.state = 546
self.match(PSParser.L_BRACE_VISUAL)
self.state = 547
self.expr()
self.state = 548
self.match(PSParser.MR_RIGHT)
self.state = 549
self.match(PSParser.R_BRACE_VISUAL)
pass
elif la_ == 19:
self.enterOuterAlt(localctx, 19)
self.state = 551
self.match(PSParser.ML_LEFT)
self.state = 552
self.match(PSParser.L_BRACE_CMD)
self.state = 553
self.expr()
self.state = 554
self.match(PSParser.MR_RIGHT)
self.state = 555
self.match(PSParser.R_BRACE_CMD)
pass
elif la_ == 20:
self.enterOuterAlt(localctx, 20)
self.state = 557
self.match(PSParser.ML_LEFT)
self.state = 558
self.match(PSParser.L_BRACKET)
self.state = 559
self.expr()
self.state = 560
self.match(PSParser.MR_RIGHT)
self.state = 561
self.match(PSParser.R_BRACKET)
pass
elif la_ == 21:
self.enterOuterAlt(localctx, 21)
self.state = 563
self.match(PSParser.ML_LEFT)
self.state = 564
self.match(PSParser.L_BRACK)
self.state = 565
self.expr()
self.state = 566
self.match(PSParser.MR_RIGHT)
self.state = 567
self.match(PSParser.R_BRACK)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Norm_groupContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Norm_groupContext, self).__init__(parent, invokingState)
self.parser = parser
def NORM(self, i=None):
if i is None:
return self.getTokens(PSParser.NORM)
else:
return self.getToken(PSParser.NORM, i)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def L_LEFT(self):
return self.getToken(PSParser.L_LEFT, 0)
def R_RIGHT(self):
return self.getToken(PSParser.R_RIGHT, 0)
def ML_LEFT(self):
return self.getToken(PSParser.ML_LEFT, 0)
def MR_RIGHT(self):
return self.getToken(PSParser.MR_RIGHT, 0)
def getRuleIndex(self):
return PSParser.RULE_norm_group
def enterRule(self, listener):
if hasattr(listener, "enterNorm_group"):
listener.enterNorm_group(self)
def exitRule(self, listener):
if hasattr(listener, "exitNorm_group"):
listener.exitNorm_group(self)
def norm_group(self):
localctx = PSParser.Norm_groupContext(self, self._ctx, self.state)
self.enterRule(localctx, 66, self.RULE_norm_group)
try:
self.state = 587
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [69]:
self.enterOuterAlt(localctx, 1)
self.state = 571
self.match(PSParser.NORM)
self.state = 572
self.expr()
self.state = 573
self.match(PSParser.NORM)
pass
elif token in [78]:
self.enterOuterAlt(localctx, 2)
self.state = 575
self.match(PSParser.L_LEFT)
self.state = 576
self.match(PSParser.NORM)
self.state = 577
self.expr()
self.state = 578
self.match(PSParser.R_RIGHT)
self.state = 579
self.match(PSParser.NORM)
pass
elif token in [80]:
self.enterOuterAlt(localctx, 3)
self.state = 581
self.match(PSParser.ML_LEFT)
self.state = 582
self.match(PSParser.NORM)
self.state = 583
self.expr()
self.state = 584
self.match(PSParser.MR_RIGHT)
self.state = 585
self.match(PSParser.NORM)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Abs_groupContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Abs_groupContext, self).__init__(parent, invokingState)
self.parser = parser
def BAR(self, i=None):
if i is None:
return self.getTokens(PSParser.BAR)
else:
return self.getToken(PSParser.BAR, i)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def L_VERT(self):
return self.getToken(PSParser.L_VERT, 0)
def R_VERT(self):
return self.getToken(PSParser.R_VERT, 0)
def VERT(self, i=None):
if i is None:
return self.getTokens(PSParser.VERT)
else:
return self.getToken(PSParser.VERT, i)
def L_LEFT(self):
return self.getToken(PSParser.L_LEFT, 0)
def R_RIGHT(self):
return self.getToken(PSParser.R_RIGHT, 0)
def ML_LEFT(self):
return self.getToken(PSParser.ML_LEFT, 0)
def MR_RIGHT(self):
return self.getToken(PSParser.MR_RIGHT, 0)
def getRuleIndex(self):
return PSParser.RULE_abs_group
def enterRule(self, listener):
if hasattr(listener, "enterAbs_group"):
listener.enterAbs_group(self)
def exitRule(self, listener):
if hasattr(listener, "exitAbs_group"):
listener.exitAbs_group(self)
def abs_group(self):
localctx = PSParser.Abs_groupContext(self, self._ctx, self.state)
self.enterRule(localctx, 68, self.RULE_abs_group)
try:
self.state = 637
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 40, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 589
self.match(PSParser.BAR)
self.state = 590
self.expr()
self.state = 591
self.match(PSParser.BAR)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 593
self.match(PSParser.L_VERT)
self.state = 594
self.expr()
self.state = 595
self.match(PSParser.R_VERT)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 597
self.match(PSParser.VERT)
self.state = 598
self.expr()
self.state = 599
self.match(PSParser.VERT)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 601
self.match(PSParser.L_LEFT)
self.state = 602
self.match(PSParser.BAR)
self.state = 603
self.expr()
self.state = 604
self.match(PSParser.R_RIGHT)
self.state = 605
self.match(PSParser.BAR)
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 607
self.match(PSParser.L_LEFT)
self.state = 608
self.match(PSParser.L_VERT)
self.state = 609
self.expr()
self.state = 610
self.match(PSParser.R_RIGHT)
self.state = 611
self.match(PSParser.R_VERT)
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 613
self.match(PSParser.L_LEFT)
self.state = 614
self.match(PSParser.VERT)
self.state = 615
self.expr()
self.state = 616
self.match(PSParser.R_RIGHT)
self.state = 617
self.match(PSParser.VERT)
pass
elif la_ == 7:
self.enterOuterAlt(localctx, 7)
self.state = 619
self.match(PSParser.ML_LEFT)
self.state = 620
self.match(PSParser.BAR)
self.state = 621
self.expr()
self.state = 622
self.match(PSParser.MR_RIGHT)
self.state = 623
self.match(PSParser.BAR)
pass
elif la_ == 8:
self.enterOuterAlt(localctx, 8)
self.state = 625
self.match(PSParser.ML_LEFT)
self.state = 626
self.match(PSParser.L_VERT)
self.state = 627
self.expr()
self.state = 628
self.match(PSParser.MR_RIGHT)
self.state = 629
self.match(PSParser.R_VERT)
pass
elif la_ == 9:
self.enterOuterAlt(localctx, 9)
self.state = 631
self.match(PSParser.ML_LEFT)
self.state = 632
self.match(PSParser.VERT)
self.state = 633
self.expr()
self.state = 634
self.match(PSParser.MR_RIGHT)
self.state = 635
self.match(PSParser.VERT)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Floor_groupContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Floor_groupContext, self).__init__(parent, invokingState)
self.parser = parser
def L_FLOOR(self):
return self.getToken(PSParser.L_FLOOR, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def R_FLOOR(self):
return self.getToken(PSParser.R_FLOOR, 0)
def LL_CORNER(self):
return self.getToken(PSParser.LL_CORNER, 0)
def LR_CORNER(self):
return self.getToken(PSParser.LR_CORNER, 0)
def L_LEFT(self):
return self.getToken(PSParser.L_LEFT, 0)
def R_RIGHT(self):
return self.getToken(PSParser.R_RIGHT, 0)
def ML_LEFT(self):
return self.getToken(PSParser.ML_LEFT, 0)
def MR_RIGHT(self):
return self.getToken(PSParser.MR_RIGHT, 0)
def getRuleIndex(self):
return PSParser.RULE_floor_group
def enterRule(self, listener):
if hasattr(listener, "enterFloor_group"):
listener.enterFloor_group(self)
def exitRule(self, listener):
if hasattr(listener, "exitFloor_group"):
listener.exitFloor_group(self)
def floor_group(self):
localctx = PSParser.Floor_groupContext(self, self._ctx, self.state)
self.enterRule(localctx, 70, self.RULE_floor_group)
try:
self.state = 671
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 41, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 639
self.match(PSParser.L_FLOOR)
self.state = 640
self.expr()
self.state = 641
self.match(PSParser.R_FLOOR)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 643
self.match(PSParser.LL_CORNER)
self.state = 644
self.expr()
self.state = 645
self.match(PSParser.LR_CORNER)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 647
self.match(PSParser.L_LEFT)
self.state = 648
self.match(PSParser.L_FLOOR)
self.state = 649
self.expr()
self.state = 650
self.match(PSParser.R_RIGHT)
self.state = 651
self.match(PSParser.R_FLOOR)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 653
self.match(PSParser.L_LEFT)
self.state = 654
self.match(PSParser.LL_CORNER)
self.state = 655
self.expr()
self.state = 656
self.match(PSParser.R_RIGHT)
self.state = 657
self.match(PSParser.LR_CORNER)
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 659
self.match(PSParser.ML_LEFT)
self.state = 660
self.match(PSParser.L_FLOOR)
self.state = 661
self.expr()
self.state = 662
self.match(PSParser.MR_RIGHT)
self.state = 663
self.match(PSParser.R_FLOOR)
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 665
self.match(PSParser.ML_LEFT)
self.state = 666
self.match(PSParser.LL_CORNER)
self.state = 667
self.expr()
self.state = 668
self.match(PSParser.MR_RIGHT)
self.state = 669
self.match(PSParser.LR_CORNER)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Ceil_groupContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Ceil_groupContext, self).__init__(parent, invokingState)
self.parser = parser
def L_CEIL(self):
return self.getToken(PSParser.L_CEIL, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def R_CEIL(self):
return self.getToken(PSParser.R_CEIL, 0)
def UL_CORNER(self):
return self.getToken(PSParser.UL_CORNER, 0)
def UR_CORNER(self):
return self.getToken(PSParser.UR_CORNER, 0)
def L_LEFT(self):
return self.getToken(PSParser.L_LEFT, 0)
def R_RIGHT(self):
return self.getToken(PSParser.R_RIGHT, 0)
def ML_LEFT(self):
return self.getToken(PSParser.ML_LEFT, 0)
def MR_RIGHT(self):
return self.getToken(PSParser.MR_RIGHT, 0)
def getRuleIndex(self):
return PSParser.RULE_ceil_group
def enterRule(self, listener):
if hasattr(listener, "enterCeil_group"):
listener.enterCeil_group(self)
def exitRule(self, listener):
if hasattr(listener, "exitCeil_group"):
listener.exitCeil_group(self)
def ceil_group(self):
localctx = PSParser.Ceil_groupContext(self, self._ctx, self.state)
self.enterRule(localctx, 72, self.RULE_ceil_group)
try:
self.state = 705
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 42, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 673
self.match(PSParser.L_CEIL)
self.state = 674
self.expr()
self.state = 675
self.match(PSParser.R_CEIL)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 677
self.match(PSParser.UL_CORNER)
self.state = 678
self.expr()
self.state = 679
self.match(PSParser.UR_CORNER)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 681
self.match(PSParser.L_LEFT)
self.state = 682
self.match(PSParser.L_CEIL)
self.state = 683
self.expr()
self.state = 684
self.match(PSParser.R_RIGHT)
self.state = 685
self.match(PSParser.R_CEIL)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 687
self.match(PSParser.L_LEFT)
self.state = 688
self.match(PSParser.UL_CORNER)
self.state = 689
self.expr()
self.state = 690
self.match(PSParser.R_RIGHT)
self.state = 691
self.match(PSParser.UR_CORNER)
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 693
self.match(PSParser.ML_LEFT)
self.state = 694
self.match(PSParser.L_CEIL)
self.state = 695
self.expr()
self.state = 696
self.match(PSParser.MR_RIGHT)
self.state = 697
self.match(PSParser.R_CEIL)
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 699
self.match(PSParser.ML_LEFT)
self.state = 700
self.match(PSParser.UL_CORNER)
self.state = 701
self.expr()
self.state = 702
self.match(PSParser.MR_RIGHT)
self.state = 703
self.match(PSParser.UR_CORNER)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class AccentContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.AccentContext, self).__init__(parent, invokingState)
self.parser = parser
self.base = None # ExprContext
def accent_symbol(self):
return self.getTypedRuleContext(PSParser.Accent_symbolContext, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def getRuleIndex(self):
return PSParser.RULE_accent
def enterRule(self, listener):
if hasattr(listener, "enterAccent"):
listener.enterAccent(self)
def exitRule(self, listener):
if hasattr(listener, "exitAccent"):
listener.exitAccent(self)
def accent(self):
localctx = PSParser.AccentContext(self, self._ctx, self.state)
self.enterRule(localctx, 74, self.RULE_accent)
try:
self.enterOuterAlt(localctx, 1)
self.state = 707
self.accent_symbol()
self.state = 708
self.match(PSParser.L_BRACE)
self.state = 709
localctx.base = self.expr()
self.state = 710
self.match(PSParser.R_BRACE)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Atom_expr_no_supexprContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Atom_expr_no_supexprContext, self).__init__(
parent, invokingState
)
self.parser = parser
def LETTER_NO_E(self):
return self.getToken(PSParser.LETTER_NO_E, 0)
def GREEK_CMD(self):
return self.getToken(PSParser.GREEK_CMD, 0)
def OTHER_SYMBOL_CMD(self):
return self.getToken(PSParser.OTHER_SYMBOL_CMD, 0)
def accent(self):
return self.getTypedRuleContext(PSParser.AccentContext, 0)
def subexpr(self):
return self.getTypedRuleContext(PSParser.SubexprContext, 0)
def getRuleIndex(self):
return PSParser.RULE_atom_expr_no_supexpr
def enterRule(self, listener):
if hasattr(listener, "enterAtom_expr_no_supexpr"):
listener.enterAtom_expr_no_supexpr(self)
def exitRule(self, listener):
if hasattr(listener, "exitAtom_expr_no_supexpr"):
listener.exitAtom_expr_no_supexpr(self)
def atom_expr_no_supexpr(self):
localctx = PSParser.Atom_expr_no_supexprContext(self, self._ctx, self.state)
self.enterRule(localctx, 76, self.RULE_atom_expr_no_supexpr)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 716
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [176]:
self.state = 712
self.match(PSParser.LETTER_NO_E)
pass
elif token in [191]:
self.state = 713
self.match(PSParser.GREEK_CMD)
pass
elif token in [192]:
self.state = 714
self.match(PSParser.OTHER_SYMBOL_CMD)
pass
elif token in [
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,
154,
]:
self.state = 715
self.accent()
pass
else:
raise NoViableAltException(self)
self.state = 719
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 167:
self.state = 718
self.subexpr()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Atom_exprContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Atom_exprContext, self).__init__(parent, invokingState)
self.parser = parser
def LETTER_NO_E(self):
return self.getToken(PSParser.LETTER_NO_E, 0)
def GREEK_CMD(self):
return self.getToken(PSParser.GREEK_CMD, 0)
def OTHER_SYMBOL_CMD(self):
return self.getToken(PSParser.OTHER_SYMBOL_CMD, 0)
def accent(self):
return self.getTypedRuleContext(PSParser.AccentContext, 0)
def supexpr(self):
return self.getTypedRuleContext(PSParser.SupexprContext, 0)
def subexpr(self):
return self.getTypedRuleContext(PSParser.SubexprContext, 0)
def getRuleIndex(self):
return PSParser.RULE_atom_expr
def enterRule(self, listener):
if hasattr(listener, "enterAtom_expr"):
listener.enterAtom_expr(self)
def exitRule(self, listener):
if hasattr(listener, "exitAtom_expr"):
listener.exitAtom_expr(self)
def atom_expr(self):
localctx = PSParser.Atom_exprContext(self, self._ctx, self.state)
self.enterRule(localctx, 78, self.RULE_atom_expr)
try:
self.enterOuterAlt(localctx, 1)
self.state = 725
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [176]:
self.state = 721
self.match(PSParser.LETTER_NO_E)
pass
elif token in [191]:
self.state = 722
self.match(PSParser.GREEK_CMD)
pass
elif token in [192]:
self.state = 723
self.match(PSParser.OTHER_SYMBOL_CMD)
pass
elif token in [
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,
154,
]:
self.state = 724
self.accent()
pass
else:
raise NoViableAltException(self)
self.state = 735
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 46, self._ctx)
if la_ == 1:
self.state = 727
self.supexpr()
self.state = 728
self.subexpr()
elif la_ == 2:
self.state = 730
self.subexpr()
self.state = 731
self.supexpr()
elif la_ == 3:
self.state = 733
self.subexpr()
elif la_ == 4:
self.state = 734
self.supexpr()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class AtomContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.AtomContext, self).__init__(parent, invokingState)
self.parser = parser
def atom_expr(self):
return self.getTypedRuleContext(PSParser.Atom_exprContext, 0)
def SYMBOL(self):
return self.getToken(PSParser.SYMBOL, 0)
def NUMBER(self):
return self.getToken(PSParser.NUMBER, 0)
def PERCENT_NUMBER(self):
return self.getToken(PSParser.PERCENT_NUMBER, 0)
def E_NOTATION(self):
return self.getToken(PSParser.E_NOTATION, 0)
def DIFFERENTIAL(self):
return self.getToken(PSParser.DIFFERENTIAL, 0)
def mathit(self):
return self.getTypedRuleContext(PSParser.MathitContext, 0)
def VARIABLE(self):
return self.getToken(PSParser.VARIABLE, 0)
def getRuleIndex(self):
return PSParser.RULE_atom
def enterRule(self, listener):
if hasattr(listener, "enterAtom"):
listener.enterAtom(self)
def exitRule(self, listener):
if hasattr(listener, "exitAtom"):
listener.exitAtom(self)
def atom(self):
localctx = PSParser.AtomContext(self, self._ctx, self.state)
self.enterRule(localctx, 80, self.RULE_atom)
try:
self.state = 745
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 47, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 737
self.atom_expr()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 738
self.match(PSParser.SYMBOL)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 739
self.match(PSParser.NUMBER)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 740
self.match(PSParser.PERCENT_NUMBER)
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 741
self.match(PSParser.E_NOTATION)
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 742
self.match(PSParser.DIFFERENTIAL)
pass
elif la_ == 7:
self.enterOuterAlt(localctx, 7)
self.state = 743
self.mathit()
pass
elif la_ == 8:
self.enterOuterAlt(localctx, 8)
self.state = 744
self.match(PSParser.VARIABLE)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class MathitContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.MathitContext, self).__init__(parent, invokingState)
self.parser = parser
def CMD_MATHIT(self):
return self.getToken(PSParser.CMD_MATHIT, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def mathit_text(self):
return self.getTypedRuleContext(PSParser.Mathit_textContext, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def getRuleIndex(self):
return PSParser.RULE_mathit
def enterRule(self, listener):
if hasattr(listener, "enterMathit"):
listener.enterMathit(self)
def exitRule(self, listener):
if hasattr(listener, "exitMathit"):
listener.exitMathit(self)
def mathit(self):
localctx = PSParser.MathitContext(self, self._ctx, self.state)
self.enterRule(localctx, 82, self.RULE_mathit)
try:
self.enterOuterAlt(localctx, 1)
self.state = 747
self.match(PSParser.CMD_MATHIT)
self.state = 748
self.match(PSParser.L_BRACE)
self.state = 749
self.mathit_text()
self.state = 750
self.match(PSParser.R_BRACE)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Mathit_textContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Mathit_textContext, self).__init__(parent, invokingState)
self.parser = parser
def LETTER_NO_E(self, i=None):
if i is None:
return self.getTokens(PSParser.LETTER_NO_E)
else:
return self.getToken(PSParser.LETTER_NO_E, i)
def E_NOTATION_E(self, i=None):
if i is None:
return self.getTokens(PSParser.E_NOTATION_E)
else:
return self.getToken(PSParser.E_NOTATION_E, i)
def EXP_E(self, i=None):
if i is None:
return self.getTokens(PSParser.EXP_E)
else:
return self.getToken(PSParser.EXP_E, i)
def getRuleIndex(self):
return PSParser.RULE_mathit_text
def enterRule(self, listener):
if hasattr(listener, "enterMathit_text"):
listener.enterMathit_text(self)
def exitRule(self, listener):
if hasattr(listener, "exitMathit_text"):
listener.exitMathit_text(self)
def mathit_text(self):
localctx = PSParser.Mathit_textContext(self, self._ctx, self.state)
self.enterRule(localctx, 84, self.RULE_mathit_text)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 753
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 752
_la = self._input.LA(1)
if not ((((_la - 174)) & ~0x3F) == 0 and ((1 << (_la - 174)) & 7) != 0):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 755
self._errHandler.sync(self)
_la = self._input.LA(1)
if not ((((_la - 174)) & ~0x3F) == 0 and ((1 << (_la - 174)) & 7) != 0):
break
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class FracContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.FracContext, self).__init__(parent, invokingState)
self.parser = parser
self.upper = None # ExprContext
self.lower = None # ExprContext
def CMD_FRAC(self):
return self.getToken(PSParser.CMD_FRAC, 0)
def L_BRACE(self, i=None):
if i is None:
return self.getTokens(PSParser.L_BRACE)
else:
return self.getToken(PSParser.L_BRACE, i)
def R_BRACE(self, i=None):
if i is None:
return self.getTokens(PSParser.R_BRACE)
else:
return self.getToken(PSParser.R_BRACE, i)
def expr(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.ExprContext)
else:
return self.getTypedRuleContext(PSParser.ExprContext, i)
def getRuleIndex(self):
return PSParser.RULE_frac
def enterRule(self, listener):
if hasattr(listener, "enterFrac"):
listener.enterFrac(self)
def exitRule(self, listener):
if hasattr(listener, "exitFrac"):
listener.exitFrac(self)
def frac(self):
localctx = PSParser.FracContext(self, self._ctx, self.state)
self.enterRule(localctx, 86, self.RULE_frac)
try:
self.enterOuterAlt(localctx, 1)
self.state = 757
self.match(PSParser.CMD_FRAC)
self.state = 758
self.match(PSParser.L_BRACE)
self.state = 759
localctx.upper = self.expr()
self.state = 760
self.match(PSParser.R_BRACE)
self.state = 761
self.match(PSParser.L_BRACE)
self.state = 762
localctx.lower = self.expr()
self.state = 763
self.match(PSParser.R_BRACE)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class BinomContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.BinomContext, self).__init__(parent, invokingState)
self.parser = parser
self.upper = None # ExprContext
self.lower = None # ExprContext
def L_BRACE(self, i=None):
if i is None:
return self.getTokens(PSParser.L_BRACE)
else:
return self.getToken(PSParser.L_BRACE, i)
def CMD_CHOOSE(self):
return self.getToken(PSParser.CMD_CHOOSE, 0)
def R_BRACE(self, i=None):
if i is None:
return self.getTokens(PSParser.R_BRACE)
else:
return self.getToken(PSParser.R_BRACE, i)
def expr(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.ExprContext)
else:
return self.getTypedRuleContext(PSParser.ExprContext, i)
def CMD_BINOM(self):
return self.getToken(PSParser.CMD_BINOM, 0)
def getRuleIndex(self):
return PSParser.RULE_binom
def enterRule(self, listener):
if hasattr(listener, "enterBinom"):
listener.enterBinom(self)
def exitRule(self, listener):
if hasattr(listener, "exitBinom"):
listener.exitBinom(self)
def binom(self):
localctx = PSParser.BinomContext(self, self._ctx, self.state)
self.enterRule(localctx, 88, self.RULE_binom)
try:
self.state = 779
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [55]:
self.enterOuterAlt(localctx, 1)
self.state = 765
self.match(PSParser.L_BRACE)
self.state = 766
localctx.upper = self.expr()
self.state = 767
self.match(PSParser.CMD_CHOOSE)
self.state = 768
localctx.lower = self.expr()
self.state = 769
self.match(PSParser.R_BRACE)
pass
elif token in [151]:
self.enterOuterAlt(localctx, 2)
self.state = 771
self.match(PSParser.CMD_BINOM)
self.state = 772
self.match(PSParser.L_BRACE)
self.state = 773
localctx.upper = self.expr()
self.state = 774
self.match(PSParser.R_BRACE)
self.state = 775
self.match(PSParser.L_BRACE)
self.state = 776
localctx.lower = self.expr()
self.state = 777
self.match(PSParser.R_BRACE)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_normal_functions_single_argContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_normal_functions_single_argContext, self).__init__(
parent, invokingState
)
self.parser = parser
def FUNC_LOG(self):
return self.getToken(PSParser.FUNC_LOG, 0)
def FUNC_LN(self):
return self.getToken(PSParser.FUNC_LN, 0)
def FUNC_EXP(self):
return self.getToken(PSParser.FUNC_EXP, 0)
def FUNC_SIN(self):
return self.getToken(PSParser.FUNC_SIN, 0)
def FUNC_COS(self):
return self.getToken(PSParser.FUNC_COS, 0)
def FUNC_TAN(self):
return self.getToken(PSParser.FUNC_TAN, 0)
def FUNC_CSC(self):
return self.getToken(PSParser.FUNC_CSC, 0)
def FUNC_SEC(self):
return self.getToken(PSParser.FUNC_SEC, 0)
def FUNC_COT(self):
return self.getToken(PSParser.FUNC_COT, 0)
def FUNC_ARCSIN(self):
return self.getToken(PSParser.FUNC_ARCSIN, 0)
def FUNC_ARCCOS(self):
return self.getToken(PSParser.FUNC_ARCCOS, 0)
def FUNC_ARCTAN(self):
return self.getToken(PSParser.FUNC_ARCTAN, 0)
def FUNC_ARCCSC(self):
return self.getToken(PSParser.FUNC_ARCCSC, 0)
def FUNC_ARCSEC(self):
return self.getToken(PSParser.FUNC_ARCSEC, 0)
def FUNC_ARCCOT(self):
return self.getToken(PSParser.FUNC_ARCCOT, 0)
def FUNC_SINH(self):
return self.getToken(PSParser.FUNC_SINH, 0)
def FUNC_COSH(self):
return self.getToken(PSParser.FUNC_COSH, 0)
def FUNC_TANH(self):
return self.getToken(PSParser.FUNC_TANH, 0)
def FUNC_ARSINH(self):
return self.getToken(PSParser.FUNC_ARSINH, 0)
def FUNC_ARCOSH(self):
return self.getToken(PSParser.FUNC_ARCOSH, 0)
def FUNC_ARTANH(self):
return self.getToken(PSParser.FUNC_ARTANH, 0)
def FUNC_ARCSINH(self):
return self.getToken(PSParser.FUNC_ARCSINH, 0)
def FUNC_ARCCOSH(self):
return self.getToken(PSParser.FUNC_ARCCOSH, 0)
def FUNC_ARCTANH(self):
return self.getToken(PSParser.FUNC_ARCTANH, 0)
def FUNC_FLOOR(self):
return self.getToken(PSParser.FUNC_FLOOR, 0)
def FUNC_CEIL(self):
return self.getToken(PSParser.FUNC_CEIL, 0)
def FUNC_DET(self):
return self.getToken(PSParser.FUNC_DET, 0)
def getRuleIndex(self):
return PSParser.RULE_func_normal_functions_single_arg
def enterRule(self, listener):
if hasattr(listener, "enterFunc_normal_functions_single_arg"):
listener.enterFunc_normal_functions_single_arg(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_normal_functions_single_arg"):
listener.exitFunc_normal_functions_single_arg(self)
def func_normal_functions_single_arg(self):
localctx = PSParser.Func_normal_functions_single_argContext(
self, self._ctx, self.state
)
self.enterRule(localctx, 90, self.RULE_func_normal_functions_single_arg)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 781
_la = self._input.LA(1)
if not (
(((_la - 87)) & ~0x3F) == 0 and ((1 << (_la - 87)) & 2611356893183) != 0
):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_normal_functions_multi_argContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_normal_functions_multi_argContext, self).__init__(
parent, invokingState
)
self.parser = parser
def FUNC_GCD(self):
return self.getToken(PSParser.FUNC_GCD, 0)
def FUNC_LCM(self):
return self.getToken(PSParser.FUNC_LCM, 0)
def FUNC_MAX(self):
return self.getToken(PSParser.FUNC_MAX, 0)
def FUNC_MIN(self):
return self.getToken(PSParser.FUNC_MIN, 0)
def getRuleIndex(self):
return PSParser.RULE_func_normal_functions_multi_arg
def enterRule(self, listener):
if hasattr(listener, "enterFunc_normal_functions_multi_arg"):
listener.enterFunc_normal_functions_multi_arg(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_normal_functions_multi_arg"):
listener.exitFunc_normal_functions_multi_arg(self)
def func_normal_functions_multi_arg(self):
localctx = PSParser.Func_normal_functions_multi_argContext(
self, self._ctx, self.state
)
self.enterRule(localctx, 92, self.RULE_func_normal_functions_multi_arg)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 783
_la = self._input.LA(1)
if not ((((_la - 122)) & ~0x3F) == 0 and ((1 << (_la - 122)) & 51) != 0):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_operator_names_single_argContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_operator_names_single_argContext, self).__init__(
parent, invokingState
)
self.parser = parser
def FUNC_ARSINH_NAME(self):
return self.getToken(PSParser.FUNC_ARSINH_NAME, 0)
def FUNC_ARCOSH_NAME(self):
return self.getToken(PSParser.FUNC_ARCOSH_NAME, 0)
def FUNC_ARTANH_NAME(self):
return self.getToken(PSParser.FUNC_ARTANH_NAME, 0)
def FUNC_ARCSINH_NAME(self):
return self.getToken(PSParser.FUNC_ARCSINH_NAME, 0)
def FUNC_ARCCOSH_NAME(self):
return self.getToken(PSParser.FUNC_ARCCOSH_NAME, 0)
def FUNC_ARCTANH_NAME(self):
return self.getToken(PSParser.FUNC_ARCTANH_NAME, 0)
def FUNC_FLOOR_NAME(self):
return self.getToken(PSParser.FUNC_FLOOR_NAME, 0)
def FUNC_CEIL_NAME(self):
return self.getToken(PSParser.FUNC_CEIL_NAME, 0)
def FUNC_EYE_NAME(self):
return self.getToken(PSParser.FUNC_EYE_NAME, 0)
def FUNC_RANK_NAME(self):
return self.getToken(PSParser.FUNC_RANK_NAME, 0)
def FUNC_TRACE_NAME(self):
return self.getToken(PSParser.FUNC_TRACE_NAME, 0)
def FUNC_RREF_NAME(self):
return self.getToken(PSParser.FUNC_RREF_NAME, 0)
def FUNC_NULLSPACE_NAME(self):
return self.getToken(PSParser.FUNC_NULLSPACE_NAME, 0)
def FUNC_DIAGONALIZE_NAME(self):
return self.getToken(PSParser.FUNC_DIAGONALIZE_NAME, 0)
def FUNC_NORM_NAME(self):
return self.getToken(PSParser.FUNC_NORM_NAME, 0)
def FUNC_EIGENVALS_NAME(self):
return self.getToken(PSParser.FUNC_EIGENVALS_NAME, 0)
def FUNC_EIGENVECTORS_NAME(self):
return self.getToken(PSParser.FUNC_EIGENVECTORS_NAME, 0)
def FUNC_SVD_NAME(self):
return self.getToken(PSParser.FUNC_SVD_NAME, 0)
def FUNC_COLS_NAME(self):
return self.getToken(PSParser.FUNC_COLS_NAME, 0)
def FUNC_ROWS_NAME(self):
return self.getToken(PSParser.FUNC_ROWS_NAME, 0)
def getRuleIndex(self):
return PSParser.RULE_func_operator_names_single_arg
def enterRule(self, listener):
if hasattr(listener, "enterFunc_operator_names_single_arg"):
listener.enterFunc_operator_names_single_arg(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_operator_names_single_arg"):
listener.exitFunc_operator_names_single_arg(self)
def func_operator_names_single_arg(self):
localctx = PSParser.Func_operator_names_single_argContext(
self, self._ctx, self.state
)
self.enterRule(localctx, 94, self.RULE_func_operator_names_single_arg)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 785
_la = self._input.LA(1)
if not (
(((_la - 111)) & ~0x3F) == 0 and ((1 << (_la - 111)) & 66830205759) != 0
):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_operator_names_multi_argContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_operator_names_multi_argContext, self).__init__(
parent, invokingState
)
self.parser = parser
def FUNC_GCD_NAME(self):
return self.getToken(PSParser.FUNC_GCD_NAME, 0)
def FUNC_LCM_NAME(self):
return self.getToken(PSParser.FUNC_LCM_NAME, 0)
def FUNC_ZEROS_NAME(self):
return self.getToken(PSParser.FUNC_ZEROS_NAME, 0)
def FUNC_ORTHOGONALIZE_NAME(self):
return self.getToken(PSParser.FUNC_ORTHOGONALIZE_NAME, 0)
def FUNC_ONES_NAME(self):
return self.getToken(PSParser.FUNC_ONES_NAME, 0)
def FUNC_DIAG_NAME(self):
return self.getToken(PSParser.FUNC_DIAG_NAME, 0)
def FUNC_HSTACK_NAME(self):
return self.getToken(PSParser.FUNC_HSTACK_NAME, 0)
def FUNC_VSTACK_NAME(self):
return self.getToken(PSParser.FUNC_VSTACK_NAME, 0)
def getRuleIndex(self):
return PSParser.RULE_func_operator_names_multi_arg
def enterRule(self, listener):
if hasattr(listener, "enterFunc_operator_names_multi_arg"):
listener.enterFunc_operator_names_multi_arg(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_operator_names_multi_arg"):
listener.exitFunc_operator_names_multi_arg(self)
def func_operator_names_multi_arg(self):
localctx = PSParser.Func_operator_names_multi_argContext(
self, self._ctx, self.state
)
self.enterRule(localctx, 96, self.RULE_func_operator_names_multi_arg)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 787
_la = self._input.LA(1)
if not (
(((_la - 117)) & ~0x3F) == 0 and ((1 << (_la - 117)) & 29515779) != 0
):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_normal_single_argContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_normal_single_argContext, self).__init__(
parent, invokingState
)
self.parser = parser
self.func_operator_name = None # Func_operator_names_single_argContext
def func_normal_functions_single_arg(self):
return self.getTypedRuleContext(
PSParser.Func_normal_functions_single_argContext, 0
)
def CMD_OPERATORNAME(self):
return self.getToken(PSParser.CMD_OPERATORNAME, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def func_operator_names_single_arg(self):
return self.getTypedRuleContext(
PSParser.Func_operator_names_single_argContext, 0
)
def getRuleIndex(self):
return PSParser.RULE_func_normal_single_arg
def enterRule(self, listener):
if hasattr(listener, "enterFunc_normal_single_arg"):
listener.enterFunc_normal_single_arg(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_normal_single_arg"):
listener.exitFunc_normal_single_arg(self)
def func_normal_single_arg(self):
localctx = PSParser.Func_normal_single_argContext(self, self._ctx, self.state)
self.enterRule(localctx, 98, self.RULE_func_normal_single_arg)
try:
self.state = 795
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
124,
125,
128,
]:
self.enterOuterAlt(localctx, 1)
self.state = 789
self.func_normal_functions_single_arg()
pass
elif token in [155]:
self.enterOuterAlt(localctx, 2)
self.state = 790
self.match(PSParser.CMD_OPERATORNAME)
self.state = 791
self.match(PSParser.L_BRACE)
self.state = 792
localctx.func_operator_name = self.func_operator_names_single_arg()
self.state = 793
self.match(PSParser.R_BRACE)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_normal_multi_argContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_normal_multi_argContext, self).__init__(
parent, invokingState
)
self.parser = parser
self.func_operator_name = None # Func_operator_names_multi_argContext
def func_normal_functions_multi_arg(self):
return self.getTypedRuleContext(
PSParser.Func_normal_functions_multi_argContext, 0
)
def CMD_OPERATORNAME(self):
return self.getToken(PSParser.CMD_OPERATORNAME, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def func_operator_names_multi_arg(self):
return self.getTypedRuleContext(
PSParser.Func_operator_names_multi_argContext, 0
)
def getRuleIndex(self):
return PSParser.RULE_func_normal_multi_arg
def enterRule(self, listener):
if hasattr(listener, "enterFunc_normal_multi_arg"):
listener.enterFunc_normal_multi_arg(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_normal_multi_arg"):
listener.exitFunc_normal_multi_arg(self)
def func_normal_multi_arg(self):
localctx = PSParser.Func_normal_multi_argContext(self, self._ctx, self.state)
self.enterRule(localctx, 100, self.RULE_func_normal_multi_arg)
try:
self.state = 803
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [122, 123, 126, 127]:
self.enterOuterAlt(localctx, 1)
self.state = 797
self.func_normal_functions_multi_arg()
pass
elif token in [155]:
self.enterOuterAlt(localctx, 2)
self.state = 798
self.match(PSParser.CMD_OPERATORNAME)
self.state = 799
self.match(PSParser.L_BRACE)
self.state = 800
localctx.func_operator_name = self.func_operator_names_multi_arg()
self.state = 801
self.match(PSParser.R_BRACE)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class FuncContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.FuncContext, self).__init__(parent, invokingState)
self.parser = parser
self.root = None # ExprContext
self.base = None # ExprContext
def func_normal_single_arg(self):
return self.getTypedRuleContext(PSParser.Func_normal_single_argContext, 0)
def L_PAREN(self):
return self.getToken(PSParser.L_PAREN, 0)
def func_single_arg(self):
return self.getTypedRuleContext(PSParser.Func_single_argContext, 0)
def R_PAREN(self):
return self.getToken(PSParser.R_PAREN, 0)
def func_single_arg_noparens(self):
return self.getTypedRuleContext(PSParser.Func_single_arg_noparensContext, 0)
def subexpr(self):
return self.getTypedRuleContext(PSParser.SubexprContext, 0)
def supexpr(self):
return self.getTypedRuleContext(PSParser.SupexprContext, 0)
def L_LEFT(self):
return self.getToken(PSParser.L_LEFT, 0)
def R_RIGHT(self):
return self.getToken(PSParser.R_RIGHT, 0)
def ML_LEFT(self):
return self.getToken(PSParser.ML_LEFT, 0)
def MR_RIGHT(self):
return self.getToken(PSParser.MR_RIGHT, 0)
def func_normal_multi_arg(self):
return self.getTypedRuleContext(PSParser.Func_normal_multi_argContext, 0)
def func_multi_arg(self):
return self.getTypedRuleContext(PSParser.Func_multi_argContext, 0)
def func_multi_arg_noparens(self):
return self.getTypedRuleContext(PSParser.Func_multi_arg_noparensContext, 0)
def atom_expr_no_supexpr(self):
return self.getTypedRuleContext(PSParser.Atom_expr_no_supexprContext, 0)
def func_common_args(self):
return self.getTypedRuleContext(PSParser.Func_common_argsContext, 0)
def L_BRACKET(self):
return self.getToken(PSParser.L_BRACKET, 0)
def R_BRACKET(self):
return self.getToken(PSParser.R_BRACKET, 0)
def L_BRACE(self, i=None):
if i is None:
return self.getTokens(PSParser.L_BRACE)
else:
return self.getToken(PSParser.L_BRACE, i)
def R_BRACE(self, i=None):
if i is None:
return self.getTokens(PSParser.R_BRACE)
else:
return self.getToken(PSParser.R_BRACE, i)
def FUNC_INT(self):
return self.getToken(PSParser.FUNC_INT, 0)
def DIFFERENTIAL(self):
return self.getToken(PSParser.DIFFERENTIAL, 0)
def frac(self):
return self.getTypedRuleContext(PSParser.FracContext, 0)
def additive(self):
return self.getTypedRuleContext(PSParser.AdditiveContext, 0)
def UNDERSCORE(self):
return self.getToken(PSParser.UNDERSCORE, 0)
def CARET(self):
return self.getToken(PSParser.CARET, 0)
def FUNC_SQRT(self):
return self.getToken(PSParser.FUNC_SQRT, 0)
def expr(self, i=None):
if i is None:
return self.getTypedRuleContexts(PSParser.ExprContext)
else:
return self.getTypedRuleContext(PSParser.ExprContext, i)
def mp(self):
return self.getTypedRuleContext(PSParser.MpContext, 0)
def FUNC_SUM(self):
return self.getToken(PSParser.FUNC_SUM, 0)
def FUNC_PROD(self):
return self.getToken(PSParser.FUNC_PROD, 0)
def subeq(self):
return self.getTypedRuleContext(PSParser.SubeqContext, 0)
def FUNC_LIM(self):
return self.getToken(PSParser.FUNC_LIM, 0)
def limit_sub(self):
return self.getTypedRuleContext(PSParser.Limit_subContext, 0)
def EXP_E(self):
return self.getToken(PSParser.EXP_E, 0)
def getRuleIndex(self):
return PSParser.RULE_func
def enterRule(self, listener):
if hasattr(listener, "enterFunc"):
listener.enterFunc(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc"):
listener.exitFunc(self)
def func(self):
localctx = PSParser.FuncContext(self, self._ctx, self.state)
self.enterRule(localctx, 102, self.RULE_func)
self._la = 0 # Token type
try:
self.state = 971
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 84, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 805
self.func_normal_single_arg()
self.state = 818
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 56, self._ctx)
if la_ == 1:
self.state = 807
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 167:
self.state = 806
self.subexpr()
self.state = 810
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 168:
self.state = 809
self.supexpr()
pass
elif la_ == 2:
self.state = 813
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 168:
self.state = 812
self.supexpr()
self.state = 816
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 167:
self.state = 815
self.subexpr()
pass
self.state = 841
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 61, self._ctx)
if la_ == 1:
self.state = 821
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 78:
self.state = 820
self.match(PSParser.L_LEFT)
self.state = 823
self.match(PSParser.L_PAREN)
self.state = 824
self.func_single_arg()
self.state = 826
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 79:
self.state = 825
self.match(PSParser.R_RIGHT)
self.state = 828
self.match(PSParser.R_PAREN)
pass
elif la_ == 2:
self.state = 831
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 80:
self.state = 830
self.match(PSParser.ML_LEFT)
self.state = 833
self.match(PSParser.L_PAREN)
self.state = 834
self.func_single_arg()
self.state = 836
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 81:
self.state = 835
self.match(PSParser.MR_RIGHT)
self.state = 838
self.match(PSParser.R_PAREN)
pass
elif la_ == 3:
self.state = 840
self.func_single_arg_noparens()
pass
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 843
self.func_normal_multi_arg()
self.state = 856
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 66, self._ctx)
if la_ == 1:
self.state = 845
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 167:
self.state = 844
self.subexpr()
self.state = 848
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 168:
self.state = 847
self.supexpr()
pass
elif la_ == 2:
self.state = 851
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 168:
self.state = 850
self.supexpr()
self.state = 854
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 167:
self.state = 853
self.subexpr()
pass
self.state = 879
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 71, self._ctx)
if la_ == 1:
self.state = 859
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 78:
self.state = 858
self.match(PSParser.L_LEFT)
self.state = 861
self.match(PSParser.L_PAREN)
self.state = 862
self.func_multi_arg()
self.state = 864
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 79:
self.state = 863
self.match(PSParser.R_RIGHT)
self.state = 866
self.match(PSParser.R_PAREN)
pass
elif la_ == 2:
self.state = 869
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 80:
self.state = 868
self.match(PSParser.ML_LEFT)
self.state = 871
self.match(PSParser.L_PAREN)
self.state = 872
self.func_multi_arg()
self.state = 874
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 81:
self.state = 873
self.match(PSParser.MR_RIGHT)
self.state = 876
self.match(PSParser.R_PAREN)
pass
elif la_ == 3:
self.state = 878
self.func_multi_arg_noparens()
pass
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 881
self.atom_expr_no_supexpr()
self.state = 883
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 168:
self.state = 882
self.supexpr()
self.state = 886
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 78:
self.state = 885
self.match(PSParser.L_LEFT)
self.state = 888
_la = self._input.LA(1)
if not (_la == 51 or _la == 61):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 889
self.func_common_args()
self.state = 890
_la = self._input.LA(1)
if not (_la == 52 or _la == 62):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 892
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 74, self._ctx)
if la_ == 1:
self.state = 891
self.match(PSParser.R_RIGHT)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 894
self.atom_expr_no_supexpr()
self.state = 896
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 168:
self.state = 895
self.supexpr()
self.state = 898
self.match(PSParser.L_BRACE)
self.state = 900
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 78:
self.state = 899
self.match(PSParser.L_LEFT)
self.state = 902
_la = self._input.LA(1)
if not (_la == 51 or _la == 61):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 903
self.func_common_args()
self.state = 904
_la = self._input.LA(1)
if not (_la == 52 or _la == 62):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 906
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 79:
self.state = 905
self.match(PSParser.R_RIGHT)
self.state = 908
self.match(PSParser.R_BRACE)
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 910
self.match(PSParser.FUNC_INT)
self.state = 931
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 78, self._ctx)
if la_ == 1:
self.state = 911
self.subexpr()
self.state = 912
self.supexpr()
elif la_ == 2:
self.state = 914
self.supexpr()
self.state = 915
self.subexpr()
elif la_ == 3:
self.state = 917
self.match(PSParser.UNDERSCORE)
self.state = 918
self.match(PSParser.L_BRACE)
self.state = 919
self.match(PSParser.R_BRACE)
self.state = 921
self.match(PSParser.CARET)
self.state = 922
self.match(PSParser.L_BRACE)
self.state = 923
self.match(PSParser.R_BRACE)
elif la_ == 4:
self.state = 924
self.match(PSParser.CARET)
self.state = 925
self.match(PSParser.L_BRACE)
self.state = 926
self.match(PSParser.R_BRACE)
self.state = 928
self.match(PSParser.UNDERSCORE)
self.state = 929
self.match(PSParser.L_BRACE)
self.state = 930
self.match(PSParser.R_BRACE)
self.state = 939
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 80, self._ctx)
if la_ == 1:
self.state = 934
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 79, self._ctx)
if la_ == 1:
self.state = 933
self.additive(0)
self.state = 936
self.match(PSParser.DIFFERENTIAL)
pass
elif la_ == 2:
self.state = 937
self.frac()
pass
elif la_ == 3:
self.state = 938
self.additive(0)
pass
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 941
self.match(PSParser.FUNC_SQRT)
self.state = 946
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 61:
self.state = 942
self.match(PSParser.L_BRACKET)
self.state = 943
localctx.root = self.expr()
self.state = 944
self.match(PSParser.R_BRACKET)
self.state = 948
self.match(PSParser.L_BRACE)
self.state = 949
localctx.base = self.expr()
self.state = 950
self.match(PSParser.R_BRACE)
pass
elif la_ == 7:
self.enterOuterAlt(localctx, 7)
self.state = 952
_la = self._input.LA(1)
if not (_la == 85 or _la == 86):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 959
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [167]:
self.state = 953
self.subeq()
self.state = 954
self.supexpr()
pass
elif token in [168]:
self.state = 956
self.supexpr()
self.state = 957
self.subeq()
pass
else:
raise NoViableAltException(self)
self.state = 961
self.mp(0)
pass
elif la_ == 8:
self.enterOuterAlt(localctx, 8)
self.state = 963
self.match(PSParser.FUNC_LIM)
self.state = 964
self.limit_sub()
self.state = 965
self.mp(0)
pass
elif la_ == 9:
self.enterOuterAlt(localctx, 9)
self.state = 967
self.match(PSParser.EXP_E)
self.state = 969
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 83, self._ctx)
if la_ == 1:
self.state = 968
self.supexpr()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class ArgsContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.ArgsContext, self).__init__(parent, invokingState)
self.parser = parser
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def COMMA(self):
return self.getToken(PSParser.COMMA, 0)
def args(self):
return self.getTypedRuleContext(PSParser.ArgsContext, 0)
def getRuleIndex(self):
return PSParser.RULE_args
def enterRule(self, listener):
if hasattr(listener, "enterArgs"):
listener.enterArgs(self)
def exitRule(self, listener):
if hasattr(listener, "exitArgs"):
listener.exitArgs(self)
def args(self):
localctx = PSParser.ArgsContext(self, self._ctx, self.state)
self.enterRule(localctx, 104, self.RULE_args)
try:
self.state = 978
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 85, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 973
self.expr()
self.state = 974
self.match(PSParser.COMMA)
self.state = 975
self.args()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 977
self.expr()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_common_argsContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_common_argsContext, self).__init__(
parent, invokingState
)
self.parser = parser
def atom(self):
return self.getTypedRuleContext(PSParser.AtomContext, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def COMMA(self):
return self.getToken(PSParser.COMMA, 0)
def args(self):
return self.getTypedRuleContext(PSParser.ArgsContext, 0)
def getRuleIndex(self):
return PSParser.RULE_func_common_args
def enterRule(self, listener):
if hasattr(listener, "enterFunc_common_args"):
listener.enterFunc_common_args(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_common_args"):
listener.exitFunc_common_args(self)
def func_common_args(self):
localctx = PSParser.Func_common_argsContext(self, self._ctx, self.state)
self.enterRule(localctx, 106, self.RULE_func_common_args)
try:
self.state = 988
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 86, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 980
self.atom()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 981
self.expr()
self.state = 982
self.match(PSParser.COMMA)
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 984
self.expr()
self.state = 985
self.match(PSParser.COMMA)
self.state = 986
self.args()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Limit_subContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Limit_subContext, self).__init__(parent, invokingState)
self.parser = parser
def UNDERSCORE(self):
return self.getToken(PSParser.UNDERSCORE, 0)
def L_BRACE(self, i=None):
if i is None:
return self.getTokens(PSParser.L_BRACE)
else:
return self.getToken(PSParser.L_BRACE, i)
def LIM_APPROACH_SYM(self):
return self.getToken(PSParser.LIM_APPROACH_SYM, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def R_BRACE(self, i=None):
if i is None:
return self.getTokens(PSParser.R_BRACE)
else:
return self.getToken(PSParser.R_BRACE, i)
def LETTER_NO_E(self):
return self.getToken(PSParser.LETTER_NO_E, 0)
def GREEK_CMD(self):
return self.getToken(PSParser.GREEK_CMD, 0)
def OTHER_SYMBOL_CMD(self):
return self.getToken(PSParser.OTHER_SYMBOL_CMD, 0)
def CARET(self):
return self.getToken(PSParser.CARET, 0)
def ADD(self):
return self.getToken(PSParser.ADD, 0)
def SUB(self):
return self.getToken(PSParser.SUB, 0)
def getRuleIndex(self):
return PSParser.RULE_limit_sub
def enterRule(self, listener):
if hasattr(listener, "enterLimit_sub"):
listener.enterLimit_sub(self)
def exitRule(self, listener):
if hasattr(listener, "exitLimit_sub"):
listener.exitLimit_sub(self)
def limit_sub(self):
localctx = PSParser.Limit_subContext(self, self._ctx, self.state)
self.enterRule(localctx, 108, self.RULE_limit_sub)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 990
self.match(PSParser.UNDERSCORE)
self.state = 991
self.match(PSParser.L_BRACE)
self.state = 992
_la = self._input.LA(1)
if not ((((_la - 176)) & ~0x3F) == 0 and ((1 << (_la - 176)) & 98305) != 0):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 993
self.match(PSParser.LIM_APPROACH_SYM)
self.state = 994
self.expr()
self.state = 999
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la == 168:
self.state = 995
self.match(PSParser.CARET)
self.state = 996
self.match(PSParser.L_BRACE)
self.state = 997
_la = self._input.LA(1)
if not (_la == 47 or _la == 48):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 998
self.match(PSParser.R_BRACE)
self.state = 1001
self.match(PSParser.R_BRACE)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_single_argContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_single_argContext, self).__init__(parent, invokingState)
self.parser = parser
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def getRuleIndex(self):
return PSParser.RULE_func_single_arg
def enterRule(self, listener):
if hasattr(listener, "enterFunc_single_arg"):
listener.enterFunc_single_arg(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_single_arg"):
listener.exitFunc_single_arg(self)
def func_single_arg(self):
localctx = PSParser.Func_single_argContext(self, self._ctx, self.state)
self.enterRule(localctx, 110, self.RULE_func_single_arg)
try:
self.enterOuterAlt(localctx, 1)
self.state = 1003
self.expr()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_single_arg_noparensContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_single_arg_noparensContext, self).__init__(
parent, invokingState
)
self.parser = parser
def mp_nofunc(self):
return self.getTypedRuleContext(PSParser.Mp_nofuncContext, 0)
def getRuleIndex(self):
return PSParser.RULE_func_single_arg_noparens
def enterRule(self, listener):
if hasattr(listener, "enterFunc_single_arg_noparens"):
listener.enterFunc_single_arg_noparens(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_single_arg_noparens"):
listener.exitFunc_single_arg_noparens(self)
def func_single_arg_noparens(self):
localctx = PSParser.Func_single_arg_noparensContext(self, self._ctx, self.state)
self.enterRule(localctx, 112, self.RULE_func_single_arg_noparens)
try:
self.enterOuterAlt(localctx, 1)
self.state = 1005
self.mp_nofunc(0)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_multi_argContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_multi_argContext, self).__init__(parent, invokingState)
self.parser = parser
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def COMMA(self):
return self.getToken(PSParser.COMMA, 0)
def func_multi_arg(self):
return self.getTypedRuleContext(PSParser.Func_multi_argContext, 0)
def getRuleIndex(self):
return PSParser.RULE_func_multi_arg
def enterRule(self, listener):
if hasattr(listener, "enterFunc_multi_arg"):
listener.enterFunc_multi_arg(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_multi_arg"):
listener.exitFunc_multi_arg(self)
def func_multi_arg(self):
localctx = PSParser.Func_multi_argContext(self, self._ctx, self.state)
self.enterRule(localctx, 114, self.RULE_func_multi_arg)
try:
self.state = 1012
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 88, self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 1007
self.expr()
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 1008
self.expr()
self.state = 1009
self.match(PSParser.COMMA)
self.state = 1010
self.func_multi_arg()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class Func_multi_arg_noparensContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.Func_multi_arg_noparensContext, self).__init__(
parent, invokingState
)
self.parser = parser
def mp_nofunc(self):
return self.getTypedRuleContext(PSParser.Mp_nofuncContext, 0)
def getRuleIndex(self):
return PSParser.RULE_func_multi_arg_noparens
def enterRule(self, listener):
if hasattr(listener, "enterFunc_multi_arg_noparens"):
listener.enterFunc_multi_arg_noparens(self)
def exitRule(self, listener):
if hasattr(listener, "exitFunc_multi_arg_noparens"):
listener.exitFunc_multi_arg_noparens(self)
def func_multi_arg_noparens(self):
localctx = PSParser.Func_multi_arg_noparensContext(self, self._ctx, self.state)
self.enterRule(localctx, 116, self.RULE_func_multi_arg_noparens)
try:
self.enterOuterAlt(localctx, 1)
self.state = 1014
self.mp_nofunc(0)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class SubexprContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.SubexprContext, self).__init__(parent, invokingState)
self.parser = parser
def UNDERSCORE(self):
return self.getToken(PSParser.UNDERSCORE, 0)
def atom(self):
return self.getTypedRuleContext(PSParser.AtomContext, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def args(self):
return self.getTypedRuleContext(PSParser.ArgsContext, 0)
def getRuleIndex(self):
return PSParser.RULE_subexpr
def enterRule(self, listener):
if hasattr(listener, "enterSubexpr"):
listener.enterSubexpr(self)
def exitRule(self, listener):
if hasattr(listener, "exitSubexpr"):
listener.exitSubexpr(self)
def subexpr(self):
localctx = PSParser.SubexprContext(self, self._ctx, self.state)
self.enterRule(localctx, 118, self.RULE_subexpr)
try:
self.enterOuterAlt(localctx, 1)
self.state = 1016
self.match(PSParser.UNDERSCORE)
self.state = 1025
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [
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,
154,
173,
176,
179,
180,
190,
191,
192,
193,
194,
]:
self.state = 1017
self.atom()
pass
elif token in [55]:
self.state = 1018
self.match(PSParser.L_BRACE)
self.state = 1021
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input, 89, self._ctx)
if la_ == 1:
self.state = 1019
self.expr()
pass
elif la_ == 2:
self.state = 1020
self.args()
pass
self.state = 1023
self.match(PSParser.R_BRACE)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class SupexprContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.SupexprContext, self).__init__(parent, invokingState)
self.parser = parser
def CARET(self):
return self.getToken(PSParser.CARET, 0)
def atom(self):
return self.getTypedRuleContext(PSParser.AtomContext, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def expr(self):
return self.getTypedRuleContext(PSParser.ExprContext, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def getRuleIndex(self):
return PSParser.RULE_supexpr
def enterRule(self, listener):
if hasattr(listener, "enterSupexpr"):
listener.enterSupexpr(self)
def exitRule(self, listener):
if hasattr(listener, "exitSupexpr"):
listener.exitSupexpr(self)
def supexpr(self):
localctx = PSParser.SupexprContext(self, self._ctx, self.state)
self.enterRule(localctx, 120, self.RULE_supexpr)
try:
self.enterOuterAlt(localctx, 1)
self.state = 1027
self.match(PSParser.CARET)
self.state = 1033
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [
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,
154,
173,
176,
179,
180,
190,
191,
192,
193,
194,
]:
self.state = 1028
self.atom()
pass
elif token in [55]:
self.state = 1029
self.match(PSParser.L_BRACE)
self.state = 1030
self.expr()
self.state = 1031
self.match(PSParser.R_BRACE)
pass
else:
raise NoViableAltException(self)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class SubeqContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.SubeqContext, self).__init__(parent, invokingState)
self.parser = parser
def UNDERSCORE(self):
return self.getToken(PSParser.UNDERSCORE, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def equality(self):
return self.getTypedRuleContext(PSParser.EqualityContext, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def getRuleIndex(self):
return PSParser.RULE_subeq
def enterRule(self, listener):
if hasattr(listener, "enterSubeq"):
listener.enterSubeq(self)
def exitRule(self, listener):
if hasattr(listener, "exitSubeq"):
listener.exitSubeq(self)
def subeq(self):
localctx = PSParser.SubeqContext(self, self._ctx, self.state)
self.enterRule(localctx, 122, self.RULE_subeq)
try:
self.enterOuterAlt(localctx, 1)
self.state = 1035
self.match(PSParser.UNDERSCORE)
self.state = 1036
self.match(PSParser.L_BRACE)
self.state = 1037
self.equality()
self.state = 1038
self.match(PSParser.R_BRACE)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class SupeqContext(ParserRuleContext):
def __init__(self, parser, parent=None, invokingState=-1):
super(PSParser.SupeqContext, self).__init__(parent, invokingState)
self.parser = parser
def UNDERSCORE(self):
return self.getToken(PSParser.UNDERSCORE, 0)
def L_BRACE(self):
return self.getToken(PSParser.L_BRACE, 0)
def equality(self):
return self.getTypedRuleContext(PSParser.EqualityContext, 0)
def R_BRACE(self):
return self.getToken(PSParser.R_BRACE, 0)
def getRuleIndex(self):
return PSParser.RULE_supeq
def enterRule(self, listener):
if hasattr(listener, "enterSupeq"):
listener.enterSupeq(self)
def exitRule(self, listener):
if hasattr(listener, "exitSupeq"):
listener.exitSupeq(self)
def supeq(self):
localctx = PSParser.SupeqContext(self, self._ctx, self.state)
self.enterRule(localctx, 124, self.RULE_supeq)
try:
self.enterOuterAlt(localctx, 1)
self.state = 1040
self.match(PSParser.UNDERSCORE)
self.state = 1041
self.match(PSParser.L_BRACE)
self.state = 1042
self.equality()
self.state = 1043
self.match(PSParser.R_BRACE)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
def sempred(self, localctx, ruleIndex, predIndex):
if self._predicates == None:
self._predicates = dict()
self._predicates[12] = self.relation_sempred
self._predicates[17] = self.additive_sempred
self._predicates[18] = self.mp_sempred
self._predicates[19] = self.mp_nofunc_sempred
self._predicates[28] = self.exp_sempred
self._predicates[29] = self.exp_nofunc_sempred
pred = self._predicates.get(ruleIndex, None)
if pred is None:
raise Exception("No predicate with index:" + str(ruleIndex))
else:
return pred(localctx, predIndex)
def relation_sempred(self, localctx, predIndex):
if predIndex == 0:
return self.precpred(self._ctx, 2)
def additive_sempred(self, localctx, predIndex):
if predIndex == 1:
return self.precpred(self._ctx, 2)
def mp_sempred(self, localctx, predIndex):
if predIndex == 2:
return self.precpred(self._ctx, 2)
def mp_nofunc_sempred(self, localctx, predIndex):
if predIndex == 3:
return self.precpred(self._ctx, 2)
def exp_sempred(self, localctx, predIndex):
if predIndex == 4:
return self.precpred(self._ctx, 2)
def exp_nofunc_sempred(self, localctx, predIndex):
if predIndex == 5:
return self.precpred(self._ctx, 2)