avp-rag-system / PseudocodeParser.py
BeefStewBibi's picture
Add new code and update grammar
e541f4b
# Generated from Pseudocode.g4 by ANTLR 4.13.2
# encoding: utf-8
from antlr4 import *
from io import StringIO
import sys
if sys.version_info[1] > 5:
from typing import TextIO
else:
from typing.io import TextIO
def serializedATN():
return [
4,1,46,514,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,1,0,5,0,66,8,0,
10,0,12,0,69,9,0,1,0,1,0,4,0,73,8,0,11,0,12,0,74,1,0,5,0,78,8,0,
10,0,12,0,81,9,0,1,0,5,0,84,8,0,10,0,12,0,87,9,0,1,0,1,0,1,1,3,1,
92,8,1,1,1,1,1,3,1,96,8,1,1,1,1,1,3,1,100,8,1,1,1,1,1,3,1,104,8,
1,1,1,1,1,1,1,3,1,109,8,1,1,1,1,1,3,1,113,8,1,1,1,1,1,3,1,117,8,
1,1,1,1,1,3,1,121,8,1,1,1,3,1,124,8,1,1,1,1,1,3,1,128,8,1,1,1,3,
1,131,8,1,1,1,1,1,3,1,135,8,1,3,1,137,8,1,1,2,1,2,1,2,1,2,1,2,1,
2,3,2,145,8,2,1,3,1,3,1,3,1,3,3,3,151,8,3,1,4,1,4,1,4,1,4,1,4,1,
4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,165,8,4,1,4,1,4,1,4,1,4,1,4,1,4,1,
4,5,4,174,8,4,10,4,12,4,177,9,4,1,4,1,4,3,4,181,8,4,1,5,1,5,1,5,
1,5,1,6,1,6,1,6,1,6,3,6,191,8,6,1,6,1,6,1,6,4,6,196,8,6,11,6,12,
6,197,1,6,1,6,4,6,202,8,6,11,6,12,6,203,1,6,5,6,207,8,6,10,6,12,
6,210,9,6,3,6,212,8,6,1,6,5,6,215,8,6,10,6,12,6,218,9,6,1,6,1,6,
1,6,1,7,1,7,1,7,3,7,226,8,7,1,7,1,7,1,8,1,8,1,8,5,8,233,8,8,10,8,
12,8,236,9,8,1,9,3,9,239,8,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,
10,1,11,1,11,1,11,5,11,252,8,11,10,11,12,11,255,9,11,1,12,1,12,1,
13,1,13,3,13,261,8,13,1,13,1,13,1,13,1,13,1,13,4,13,268,8,13,11,
13,12,13,269,1,13,1,13,4,13,274,8,13,11,13,12,13,275,1,13,5,13,279,
8,13,10,13,12,13,282,9,13,3,13,284,8,13,1,13,5,13,287,8,13,10,13,
12,13,290,9,13,1,13,1,13,1,13,1,14,1,14,3,14,297,8,14,1,14,1,14,
1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,4,14,310,8,14,11,14,
12,14,311,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,16,1,16,1,16,
1,16,1,16,1,16,4,16,328,8,16,11,16,12,16,329,1,16,1,16,1,16,1,16,
1,16,1,16,1,16,1,16,4,16,340,8,16,11,16,12,16,341,1,16,1,16,5,16,
346,8,16,10,16,12,16,349,9,16,1,16,1,16,1,16,4,16,354,8,16,11,16,
12,16,355,1,16,3,16,359,8,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,
1,17,1,17,4,17,370,8,17,11,17,12,17,371,1,17,1,17,4,17,376,8,17,
11,17,12,17,377,1,17,5,17,381,8,17,10,17,12,17,384,9,17,3,17,386,
8,17,1,17,5,17,389,8,17,10,17,12,17,392,9,17,1,17,1,17,1,17,1,18,
1,18,1,18,1,19,1,19,1,20,1,20,4,20,404,8,20,11,20,12,20,405,1,20,
5,20,409,8,20,10,20,12,20,412,9,20,3,20,414,8,20,1,20,5,20,417,8,
20,10,20,12,20,420,9,20,1,21,1,21,1,22,1,22,1,22,4,22,427,8,22,11,
22,12,22,428,1,22,3,22,432,8,22,1,23,1,23,1,23,4,23,437,8,23,11,
23,12,23,438,1,23,3,23,442,8,23,1,24,1,24,1,24,1,24,1,24,3,24,449,
8,24,1,25,1,25,1,25,4,25,454,8,25,11,25,12,25,455,1,25,3,25,459,
8,25,1,26,1,26,1,26,4,26,464,8,26,11,26,12,26,465,1,26,3,26,469,
8,26,1,27,1,27,1,27,4,27,474,8,27,11,27,12,27,475,1,27,3,27,479,
8,27,1,28,1,28,1,28,3,28,484,8,28,1,29,1,29,1,29,1,29,1,29,1,29,
1,29,3,29,493,8,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,502,8,
29,1,30,1,30,1,30,5,30,507,8,30,10,30,12,30,510,9,30,1,31,1,31,1,
31,0,0,32,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,0,7,4,0,29,29,31,31,33,33,35,
35,2,0,17,17,19,20,1,0,42,43,2,0,22,22,24,27,2,0,32,32,34,34,2,0,
30,30,36,36,2,0,12,13,16,20,561,0,67,1,0,0,0,2,136,1,0,0,0,4,144,
1,0,0,0,6,146,1,0,0,0,8,180,1,0,0,0,10,182,1,0,0,0,12,186,1,0,0,
0,14,222,1,0,0,0,16,229,1,0,0,0,18,238,1,0,0,0,20,242,1,0,0,0,22,
248,1,0,0,0,24,256,1,0,0,0,26,258,1,0,0,0,28,294,1,0,0,0,30,317,
1,0,0,0,32,321,1,0,0,0,34,363,1,0,0,0,36,396,1,0,0,0,38,399,1,0,
0,0,40,413,1,0,0,0,42,421,1,0,0,0,44,431,1,0,0,0,46,441,1,0,0,0,
48,448,1,0,0,0,50,458,1,0,0,0,52,468,1,0,0,0,54,478,1,0,0,0,56,483,
1,0,0,0,58,501,1,0,0,0,60,503,1,0,0,0,62,511,1,0,0,0,64,66,5,45,
0,0,65,64,1,0,0,0,66,69,1,0,0,0,67,65,1,0,0,0,67,68,1,0,0,0,68,70,
1,0,0,0,69,67,1,0,0,0,70,79,3,2,1,0,71,73,5,45,0,0,72,71,1,0,0,0,
73,74,1,0,0,0,74,72,1,0,0,0,74,75,1,0,0,0,75,76,1,0,0,0,76,78,3,
2,1,0,77,72,1,0,0,0,78,81,1,0,0,0,79,77,1,0,0,0,79,80,1,0,0,0,80,
85,1,0,0,0,81,79,1,0,0,0,82,84,5,45,0,0,83,82,1,0,0,0,84,87,1,0,
0,0,85,83,1,0,0,0,85,86,1,0,0,0,86,88,1,0,0,0,87,85,1,0,0,0,88,89,
5,0,0,1,89,1,1,0,0,0,90,92,3,20,10,0,91,90,1,0,0,0,91,92,1,0,0,0,
92,93,1,0,0,0,93,95,3,6,3,0,94,96,5,43,0,0,95,94,1,0,0,0,95,96,1,
0,0,0,96,137,1,0,0,0,97,137,3,12,6,0,98,100,3,20,10,0,99,98,1,0,
0,0,99,100,1,0,0,0,100,101,1,0,0,0,101,103,3,14,7,0,102,104,5,43,
0,0,103,102,1,0,0,0,103,104,1,0,0,0,104,137,1,0,0,0,105,137,3,26,
13,0,106,137,3,28,14,0,107,109,3,20,10,0,108,107,1,0,0,0,108,109,
1,0,0,0,109,110,1,0,0,0,110,137,3,32,16,0,111,113,3,20,10,0,112,
111,1,0,0,0,112,113,1,0,0,0,113,114,1,0,0,0,114,137,3,34,17,0,115,
117,3,20,10,0,116,115,1,0,0,0,116,117,1,0,0,0,117,118,1,0,0,0,118,
120,3,36,18,0,119,121,5,43,0,0,120,119,1,0,0,0,120,121,1,0,0,0,121,
137,1,0,0,0,122,124,3,20,10,0,123,122,1,0,0,0,123,124,1,0,0,0,124,
125,1,0,0,0,125,127,3,38,19,0,126,128,5,43,0,0,127,126,1,0,0,0,127,
128,1,0,0,0,128,137,1,0,0,0,129,131,3,20,10,0,130,129,1,0,0,0,130,
131,1,0,0,0,131,132,1,0,0,0,132,134,3,10,5,0,133,135,5,43,0,0,134,
133,1,0,0,0,134,135,1,0,0,0,135,137,1,0,0,0,136,91,1,0,0,0,136,97,
1,0,0,0,136,99,1,0,0,0,136,105,1,0,0,0,136,106,1,0,0,0,136,108,1,
0,0,0,136,112,1,0,0,0,136,116,1,0,0,0,136,123,1,0,0,0,136,130,1,
0,0,0,137,3,1,0,0,0,138,139,5,17,0,0,139,140,5,37,0,0,140,141,3,
42,21,0,141,142,5,38,0,0,142,145,1,0,0,0,143,145,5,17,0,0,144,138,
1,0,0,0,144,143,1,0,0,0,145,5,1,0,0,0,146,147,3,4,2,0,147,150,5,
23,0,0,148,151,3,42,21,0,149,151,3,8,4,0,150,148,1,0,0,0,150,149,
1,0,0,0,151,7,1,0,0,0,152,153,5,1,0,0,153,154,5,37,0,0,154,155,3,
42,21,0,155,156,5,2,0,0,156,157,3,42,21,0,157,158,5,38,0,0,158,181,
1,0,0,0,159,160,5,1,0,0,160,161,5,39,0,0,161,164,3,42,21,0,162,163,
5,42,0,0,163,165,3,42,21,0,164,162,1,0,0,0,164,165,1,0,0,0,165,166,
1,0,0,0,166,167,5,40,0,0,167,181,1,0,0,0,168,169,5,1,0,0,169,170,
5,37,0,0,170,175,3,42,21,0,171,172,5,42,0,0,172,174,3,42,21,0,173,
171,1,0,0,0,174,177,1,0,0,0,175,173,1,0,0,0,175,176,1,0,0,0,176,
178,1,0,0,0,177,175,1,0,0,0,178,179,5,38,0,0,179,181,1,0,0,0,180,
152,1,0,0,0,180,159,1,0,0,0,180,168,1,0,0,0,181,9,1,0,0,0,182,183,
3,4,2,0,183,184,7,0,0,0,184,185,3,42,21,0,185,11,1,0,0,0,186,187,
5,3,0,0,187,188,5,17,0,0,188,190,5,39,0,0,189,191,3,16,8,0,190,189,
1,0,0,0,190,191,1,0,0,0,191,192,1,0,0,0,192,193,5,40,0,0,193,195,
5,41,0,0,194,196,5,45,0,0,195,194,1,0,0,0,196,197,1,0,0,0,197,195,
1,0,0,0,197,198,1,0,0,0,198,211,1,0,0,0,199,208,3,2,1,0,200,202,
5,45,0,0,201,200,1,0,0,0,202,203,1,0,0,0,203,201,1,0,0,0,203,204,
1,0,0,0,204,205,1,0,0,0,205,207,3,2,1,0,206,201,1,0,0,0,207,210,
1,0,0,0,208,206,1,0,0,0,208,209,1,0,0,0,209,212,1,0,0,0,210,208,
1,0,0,0,211,199,1,0,0,0,211,212,1,0,0,0,212,216,1,0,0,0,213,215,
5,45,0,0,214,213,1,0,0,0,215,218,1,0,0,0,216,214,1,0,0,0,216,217,
1,0,0,0,217,219,1,0,0,0,218,216,1,0,0,0,219,220,5,9,0,0,220,221,
5,3,0,0,221,13,1,0,0,0,222,223,5,17,0,0,223,225,5,39,0,0,224,226,
3,60,30,0,225,224,1,0,0,0,225,226,1,0,0,0,226,227,1,0,0,0,227,228,
5,40,0,0,228,15,1,0,0,0,229,234,3,18,9,0,230,231,5,42,0,0,231,233,
3,18,9,0,232,230,1,0,0,0,233,236,1,0,0,0,234,232,1,0,0,0,234,235,
1,0,0,0,235,17,1,0,0,0,236,234,1,0,0,0,237,239,3,20,10,0,238,237,
1,0,0,0,238,239,1,0,0,0,239,240,1,0,0,0,240,241,5,17,0,0,241,19,
1,0,0,0,242,243,5,44,0,0,243,244,5,17,0,0,244,245,5,25,0,0,245,246,
3,22,11,0,246,247,5,27,0,0,247,21,1,0,0,0,248,253,3,24,12,0,249,
250,5,42,0,0,250,252,3,24,12,0,251,249,1,0,0,0,252,255,1,0,0,0,253,
251,1,0,0,0,253,254,1,0,0,0,254,23,1,0,0,0,255,253,1,0,0,0,256,257,
7,1,0,0,257,25,1,0,0,0,258,260,5,4,0,0,259,261,3,20,10,0,260,259,
1,0,0,0,260,261,1,0,0,0,261,262,1,0,0,0,262,263,5,17,0,0,263,264,
5,5,0,0,264,265,5,17,0,0,265,267,5,41,0,0,266,268,5,45,0,0,267,266,
1,0,0,0,268,269,1,0,0,0,269,267,1,0,0,0,269,270,1,0,0,0,270,283,
1,0,0,0,271,280,3,2,1,0,272,274,5,45,0,0,273,272,1,0,0,0,274,275,
1,0,0,0,275,273,1,0,0,0,275,276,1,0,0,0,276,277,1,0,0,0,277,279,
3,2,1,0,278,273,1,0,0,0,279,282,1,0,0,0,280,278,1,0,0,0,280,281,
1,0,0,0,281,284,1,0,0,0,282,280,1,0,0,0,283,271,1,0,0,0,283,284,
1,0,0,0,284,288,1,0,0,0,285,287,5,45,0,0,286,285,1,0,0,0,287,290,
1,0,0,0,288,286,1,0,0,0,288,289,1,0,0,0,289,291,1,0,0,0,290,288,
1,0,0,0,291,292,5,9,0,0,292,293,5,4,0,0,293,27,1,0,0,0,294,296,5,
4,0,0,295,297,3,20,10,0,296,295,1,0,0,0,296,297,1,0,0,0,297,298,
1,0,0,0,298,299,5,39,0,0,299,300,5,17,0,0,300,301,5,23,0,0,301,302,
3,42,21,0,302,303,7,2,0,0,303,304,3,42,21,0,304,305,7,2,0,0,305,
306,3,30,15,0,306,307,5,40,0,0,307,309,5,41,0,0,308,310,5,45,0,0,
309,308,1,0,0,0,310,311,1,0,0,0,311,309,1,0,0,0,311,312,1,0,0,0,
312,313,1,0,0,0,313,314,3,40,20,0,314,315,5,9,0,0,315,316,5,4,0,
0,316,29,1,0,0,0,317,318,5,17,0,0,318,319,7,0,0,0,319,320,3,42,21,
0,320,31,1,0,0,0,321,322,5,6,0,0,322,323,5,39,0,0,323,324,3,42,21,
0,324,325,5,40,0,0,325,327,5,41,0,0,326,328,5,45,0,0,327,326,1,0,
0,0,328,329,1,0,0,0,329,327,1,0,0,0,329,330,1,0,0,0,330,331,1,0,
0,0,331,347,3,40,20,0,332,333,5,7,0,0,333,334,5,6,0,0,334,335,5,
39,0,0,335,336,3,42,21,0,336,337,5,40,0,0,337,339,5,41,0,0,338,340,
5,45,0,0,339,338,1,0,0,0,340,341,1,0,0,0,341,339,1,0,0,0,341,342,
1,0,0,0,342,343,1,0,0,0,343,344,3,40,20,0,344,346,1,0,0,0,345,332,
1,0,0,0,346,349,1,0,0,0,347,345,1,0,0,0,347,348,1,0,0,0,348,358,
1,0,0,0,349,347,1,0,0,0,350,351,5,7,0,0,351,353,5,41,0,0,352,354,
5,45,0,0,353,352,1,0,0,0,354,355,1,0,0,0,355,353,1,0,0,0,355,356,
1,0,0,0,356,357,1,0,0,0,357,359,3,40,20,0,358,350,1,0,0,0,358,359,
1,0,0,0,359,360,1,0,0,0,360,361,5,9,0,0,361,362,5,6,0,0,362,33,1,
0,0,0,363,364,5,10,0,0,364,365,5,39,0,0,365,366,3,42,21,0,366,367,
5,40,0,0,367,369,5,41,0,0,368,370,5,45,0,0,369,368,1,0,0,0,370,371,
1,0,0,0,371,369,1,0,0,0,371,372,1,0,0,0,372,385,1,0,0,0,373,382,
3,2,1,0,374,376,5,45,0,0,375,374,1,0,0,0,376,377,1,0,0,0,377,375,
1,0,0,0,377,378,1,0,0,0,378,379,1,0,0,0,379,381,3,2,1,0,380,375,
1,0,0,0,381,384,1,0,0,0,382,380,1,0,0,0,382,383,1,0,0,0,383,386,
1,0,0,0,384,382,1,0,0,0,385,373,1,0,0,0,385,386,1,0,0,0,386,390,
1,0,0,0,387,389,5,45,0,0,388,387,1,0,0,0,389,392,1,0,0,0,390,388,
1,0,0,0,390,391,1,0,0,0,391,393,1,0,0,0,392,390,1,0,0,0,393,394,
5,9,0,0,394,395,5,10,0,0,395,35,1,0,0,0,396,397,5,8,0,0,397,398,
3,42,21,0,398,37,1,0,0,0,399,400,5,11,0,0,400,39,1,0,0,0,401,410,
3,2,1,0,402,404,5,45,0,0,403,402,1,0,0,0,404,405,1,0,0,0,405,403,
1,0,0,0,405,406,1,0,0,0,406,407,1,0,0,0,407,409,3,2,1,0,408,403,
1,0,0,0,409,412,1,0,0,0,410,408,1,0,0,0,410,411,1,0,0,0,411,414,
1,0,0,0,412,410,1,0,0,0,413,401,1,0,0,0,413,414,1,0,0,0,414,418,
1,0,0,0,415,417,5,45,0,0,416,415,1,0,0,0,417,420,1,0,0,0,418,416,
1,0,0,0,418,419,1,0,0,0,419,41,1,0,0,0,420,418,1,0,0,0,421,422,3,
44,22,0,422,43,1,0,0,0,423,426,3,46,23,0,424,425,5,15,0,0,425,427,
3,46,23,0,426,424,1,0,0,0,427,428,1,0,0,0,428,426,1,0,0,0,428,429,
1,0,0,0,429,432,1,0,0,0,430,432,3,46,23,0,431,423,1,0,0,0,431,430,
1,0,0,0,432,45,1,0,0,0,433,436,3,48,24,0,434,435,5,14,0,0,435,437,
3,48,24,0,436,434,1,0,0,0,437,438,1,0,0,0,438,436,1,0,0,0,438,439,
1,0,0,0,439,442,1,0,0,0,440,442,3,48,24,0,441,433,1,0,0,0,441,440,
1,0,0,0,442,47,1,0,0,0,443,444,3,50,25,0,444,445,7,3,0,0,445,446,
3,50,25,0,446,449,1,0,0,0,447,449,3,50,25,0,448,443,1,0,0,0,448,
447,1,0,0,0,449,49,1,0,0,0,450,453,3,52,26,0,451,452,7,4,0,0,452,
454,3,52,26,0,453,451,1,0,0,0,454,455,1,0,0,0,455,453,1,0,0,0,455,
456,1,0,0,0,456,459,1,0,0,0,457,459,3,52,26,0,458,450,1,0,0,0,458,
457,1,0,0,0,459,51,1,0,0,0,460,463,3,54,27,0,461,462,7,5,0,0,462,
464,3,54,27,0,463,461,1,0,0,0,464,465,1,0,0,0,465,463,1,0,0,0,465,
466,1,0,0,0,466,469,1,0,0,0,467,469,3,54,27,0,468,460,1,0,0,0,468,
467,1,0,0,0,469,53,1,0,0,0,470,473,3,56,28,0,471,472,5,28,0,0,472,
474,3,56,28,0,473,471,1,0,0,0,474,475,1,0,0,0,475,473,1,0,0,0,475,
476,1,0,0,0,476,479,1,0,0,0,477,479,3,56,28,0,478,470,1,0,0,0,478,
477,1,0,0,0,479,55,1,0,0,0,480,481,5,34,0,0,481,484,3,56,28,0,482,
484,3,58,29,0,483,480,1,0,0,0,483,482,1,0,0,0,484,57,1,0,0,0,485,
486,5,39,0,0,486,487,3,42,21,0,487,488,5,40,0,0,488,502,1,0,0,0,
489,490,5,17,0,0,490,492,5,39,0,0,491,493,3,60,30,0,492,491,1,0,
0,0,492,493,1,0,0,0,493,494,1,0,0,0,494,502,5,40,0,0,495,496,5,17,
0,0,496,497,5,37,0,0,497,498,3,42,21,0,498,499,5,38,0,0,499,502,
1,0,0,0,500,502,3,62,31,0,501,485,1,0,0,0,501,489,1,0,0,0,501,495,
1,0,0,0,501,500,1,0,0,0,502,59,1,0,0,0,503,508,3,42,21,0,504,505,
5,42,0,0,505,507,3,42,21,0,506,504,1,0,0,0,507,510,1,0,0,0,508,506,
1,0,0,0,508,509,1,0,0,0,509,61,1,0,0,0,510,508,1,0,0,0,511,512,7,
6,0,0,512,63,1,0,0,0,69,67,74,79,85,91,95,99,103,108,112,116,120,
123,127,130,134,136,144,150,164,175,180,190,197,203,208,211,216,
225,234,238,253,260,269,275,280,283,288,296,311,329,341,347,355,
358,371,377,382,385,390,405,410,413,418,428,431,438,441,448,455,
458,465,468,475,478,483,492,501,508
]
class PseudocodeParser ( Parser ):
grammarFileName = "Pseudocode.g4"
atn = ATNDeserializer().deserialize(serializedATN())
decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
sharedContextCache = PredictionContextCache()
literalNames = [ "<INVALID>", "'arr'", "'to'", "'fun'", "'for'", "'in'",
"'if'", "'else'", "'return'", "'end'", "'while'", "'break'",
"<INVALID>", "'False'", "'and'", "'or'", "'Null'",
"<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>",
"<INVALID>", "'=='", "'='", "'<='", "'<'", "'>='",
"'>'", "'**'", "'*='", "'*'", "'+='", "'+'", "'-='",
"'-'", "'/='", "'/'", "'['", "']'", "'('", "')'", "':'",
"','", "';'", "'@'" ]
symbolicNames = [ "<INVALID>", "ARR", "TO", "FUN", "FOR", "IN", "IF",
"ELSE", "RETURN", "END", "WHILE", "BREAK", "TRUE",
"FALSE", "AND", "OR", "NULL", "ID", "FLOAT", "INT",
"STRING", "COMMENT", "EQEQ", "EQ", "LESS_EQ", "LOW_THAN",
"GREATER_EQ", "GREATER_THAN", "POW", "STAR_EQ", "STAR",
"PLUS_EQ", "PLUS", "MINUS_EQ", "MINUS", "SLASH_EQ",
"SLASH", "LBRACK", "RBRACK", "LPAREN", "RPAREN", "COLON",
"COMMA", "SEMICOLON", "AT", "NL", "WS" ]
RULE_program = 0
RULE_statement = 1
RULE_lvalue = 2
RULE_assignment = 3
RULE_arrayInitialization = 4
RULE_compoundAssignment = 5
RULE_functionDecl = 6
RULE_functionCallStatement = 7
RULE_paramList = 8
RULE_annotatedParam = 9
RULE_annotation = 10
RULE_annotationArgList = 11
RULE_annotationArg = 12
RULE_forEachLoop = 13
RULE_regularForLoop = 14
RULE_forUpdate = 15
RULE_ifStatement = 16
RULE_whileLoop = 17
RULE_returnStatement = 18
RULE_breakStatement = 19
RULE_block = 20
RULE_expression = 21
RULE_logicalOrExpression = 22
RULE_logicalAndExpression = 23
RULE_comparisonExpression = 24
RULE_additiveExpression = 25
RULE_multiplicativeExpression = 26
RULE_powerExpression = 27
RULE_unaryExpression = 28
RULE_primaryExpression = 29
RULE_expressionList = 30
RULE_atom = 31
ruleNames = [ "program", "statement", "lvalue", "assignment", "arrayInitialization",
"compoundAssignment", "functionDecl", "functionCallStatement",
"paramList", "annotatedParam", "annotation", "annotationArgList",
"annotationArg", "forEachLoop", "regularForLoop", "forUpdate",
"ifStatement", "whileLoop", "returnStatement", "breakStatement",
"block", "expression", "logicalOrExpression", "logicalAndExpression",
"comparisonExpression", "additiveExpression", "multiplicativeExpression",
"powerExpression", "unaryExpression", "primaryExpression",
"expressionList", "atom" ]
EOF = Token.EOF
ARR=1
TO=2
FUN=3
FOR=4
IN=5
IF=6
ELSE=7
RETURN=8
END=9
WHILE=10
BREAK=11
TRUE=12
FALSE=13
AND=14
OR=15
NULL=16
ID=17
FLOAT=18
INT=19
STRING=20
COMMENT=21
EQEQ=22
EQ=23
LESS_EQ=24
LOW_THAN=25
GREATER_EQ=26
GREATER_THAN=27
POW=28
STAR_EQ=29
STAR=30
PLUS_EQ=31
PLUS=32
MINUS_EQ=33
MINUS=34
SLASH_EQ=35
SLASH=36
LBRACK=37
RBRACK=38
LPAREN=39
RPAREN=40
COLON=41
COMMA=42
SEMICOLON=43
AT=44
NL=45
WS=46
def __init__(self, input:TokenStream, output:TextIO = sys.stdout):
super().__init__(input, output)
self.checkVersion("4.13.2")
self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
self._predicates = None
class ProgramContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def statement(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.StatementContext)
else:
return self.getTypedRuleContext(PseudocodeParser.StatementContext,i)
def EOF(self):
return self.getToken(PseudocodeParser.EOF, 0)
def NL(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.NL)
else:
return self.getToken(PseudocodeParser.NL, i)
def getRuleIndex(self):
return PseudocodeParser.RULE_program
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterProgram" ):
listener.enterProgram(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitProgram" ):
listener.exitProgram(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitProgram" ):
return visitor.visitProgram(self)
else:
return visitor.visitChildren(self)
def program(self):
localctx = PseudocodeParser.ProgramContext(self, self._ctx, self.state)
self.enterRule(localctx, 0, self.RULE_program)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 67
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==45:
self.state = 64
self.match(PseudocodeParser.NL)
self.state = 69
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 70
self.statement()
self.state = 79
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,2,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 72
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 71
self.match(PseudocodeParser.NL)
self.state = 74
self._errHandler.sync(self)
_la = self._input.LA(1)
if not (_la==45):
break
self.state = 76
self.statement()
self.state = 81
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,2,self._ctx)
self.state = 85
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==45:
self.state = 82
self.match(PseudocodeParser.NL)
self.state = 87
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 88
self.match(PseudocodeParser.EOF)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class StatementContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def assignment(self):
return self.getTypedRuleContext(PseudocodeParser.AssignmentContext,0)
def annotation(self):
return self.getTypedRuleContext(PseudocodeParser.AnnotationContext,0)
def SEMICOLON(self):
return self.getToken(PseudocodeParser.SEMICOLON, 0)
def functionDecl(self):
return self.getTypedRuleContext(PseudocodeParser.FunctionDeclContext,0)
def functionCallStatement(self):
return self.getTypedRuleContext(PseudocodeParser.FunctionCallStatementContext,0)
def forEachLoop(self):
return self.getTypedRuleContext(PseudocodeParser.ForEachLoopContext,0)
def regularForLoop(self):
return self.getTypedRuleContext(PseudocodeParser.RegularForLoopContext,0)
def ifStatement(self):
return self.getTypedRuleContext(PseudocodeParser.IfStatementContext,0)
def whileLoop(self):
return self.getTypedRuleContext(PseudocodeParser.WhileLoopContext,0)
def returnStatement(self):
return self.getTypedRuleContext(PseudocodeParser.ReturnStatementContext,0)
def breakStatement(self):
return self.getTypedRuleContext(PseudocodeParser.BreakStatementContext,0)
def compoundAssignment(self):
return self.getTypedRuleContext(PseudocodeParser.CompoundAssignmentContext,0)
def getRuleIndex(self):
return PseudocodeParser.RULE_statement
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterStatement" ):
listener.enterStatement(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitStatement" ):
listener.exitStatement(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitStatement" ):
return visitor.visitStatement(self)
else:
return visitor.visitChildren(self)
def statement(self):
localctx = PseudocodeParser.StatementContext(self, self._ctx, self.state)
self.enterRule(localctx, 2, self.RULE_statement)
self._la = 0 # Token type
try:
self.state = 136
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,16,self._ctx)
if la_ == 1:
self.enterOuterAlt(localctx, 1)
self.state = 91
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==44:
self.state = 90
self.annotation()
self.state = 93
self.assignment()
self.state = 95
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==43:
self.state = 94
self.match(PseudocodeParser.SEMICOLON)
pass
elif la_ == 2:
self.enterOuterAlt(localctx, 2)
self.state = 97
self.functionDecl()
pass
elif la_ == 3:
self.enterOuterAlt(localctx, 3)
self.state = 99
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==44:
self.state = 98
self.annotation()
self.state = 101
self.functionCallStatement()
self.state = 103
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==43:
self.state = 102
self.match(PseudocodeParser.SEMICOLON)
pass
elif la_ == 4:
self.enterOuterAlt(localctx, 4)
self.state = 105
self.forEachLoop()
pass
elif la_ == 5:
self.enterOuterAlt(localctx, 5)
self.state = 106
self.regularForLoop()
pass
elif la_ == 6:
self.enterOuterAlt(localctx, 6)
self.state = 108
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==44:
self.state = 107
self.annotation()
self.state = 110
self.ifStatement()
pass
elif la_ == 7:
self.enterOuterAlt(localctx, 7)
self.state = 112
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==44:
self.state = 111
self.annotation()
self.state = 114
self.whileLoop()
pass
elif la_ == 8:
self.enterOuterAlt(localctx, 8)
self.state = 116
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==44:
self.state = 115
self.annotation()
self.state = 118
self.returnStatement()
self.state = 120
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==43:
self.state = 119
self.match(PseudocodeParser.SEMICOLON)
pass
elif la_ == 9:
self.enterOuterAlt(localctx, 9)
self.state = 123
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==44:
self.state = 122
self.annotation()
self.state = 125
self.breakStatement()
self.state = 127
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==43:
self.state = 126
self.match(PseudocodeParser.SEMICOLON)
pass
elif la_ == 10:
self.enterOuterAlt(localctx, 10)
self.state = 130
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==44:
self.state = 129
self.annotation()
self.state = 132
self.compoundAssignment()
self.state = 134
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==43:
self.state = 133
self.match(PseudocodeParser.SEMICOLON)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class LvalueContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PseudocodeParser.RULE_lvalue
def copyFrom(self, ctx:ParserRuleContext):
super().copyFrom(ctx)
class SimpleLvalueContext(LvalueContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.LvalueContext
super().__init__(parser)
self.copyFrom(ctx)
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterSimpleLvalue" ):
listener.enterSimpleLvalue(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitSimpleLvalue" ):
listener.exitSimpleLvalue(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitSimpleLvalue" ):
return visitor.visitSimpleLvalue(self)
else:
return visitor.visitChildren(self)
class ArrayLvalueContext(LvalueContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.LvalueContext
super().__init__(parser)
self.copyFrom(ctx)
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def LBRACK(self):
return self.getToken(PseudocodeParser.LBRACK, 0)
def expression(self):
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,0)
def RBRACK(self):
return self.getToken(PseudocodeParser.RBRACK, 0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterArrayLvalue" ):
listener.enterArrayLvalue(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitArrayLvalue" ):
listener.exitArrayLvalue(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitArrayLvalue" ):
return visitor.visitArrayLvalue(self)
else:
return visitor.visitChildren(self)
def lvalue(self):
localctx = PseudocodeParser.LvalueContext(self, self._ctx, self.state)
self.enterRule(localctx, 4, self.RULE_lvalue)
try:
self.state = 144
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,17,self._ctx)
if la_ == 1:
localctx = PseudocodeParser.ArrayLvalueContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 138
self.match(PseudocodeParser.ID)
self.state = 139
self.match(PseudocodeParser.LBRACK)
self.state = 140
self.expression()
self.state = 141
self.match(PseudocodeParser.RBRACK)
pass
elif la_ == 2:
localctx = PseudocodeParser.SimpleLvalueContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 143
self.match(PseudocodeParser.ID)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class AssignmentContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def lvalue(self):
return self.getTypedRuleContext(PseudocodeParser.LvalueContext,0)
def EQ(self):
return self.getToken(PseudocodeParser.EQ, 0)
def expression(self):
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,0)
def arrayInitialization(self):
return self.getTypedRuleContext(PseudocodeParser.ArrayInitializationContext,0)
def getRuleIndex(self):
return PseudocodeParser.RULE_assignment
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAssignment" ):
listener.enterAssignment(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAssignment" ):
listener.exitAssignment(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAssignment" ):
return visitor.visitAssignment(self)
else:
return visitor.visitChildren(self)
def assignment(self):
localctx = PseudocodeParser.AssignmentContext(self, self._ctx, self.state)
self.enterRule(localctx, 6, self.RULE_assignment)
try:
self.enterOuterAlt(localctx, 1)
self.state = 146
self.lvalue()
self.state = 147
self.match(PseudocodeParser.EQ)
self.state = 150
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [12, 13, 16, 17, 18, 19, 20, 34, 39]:
self.state = 148
self.expression()
pass
elif token in [1]:
self.state = 149
self.arrayInitialization()
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 ArrayInitializationContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PseudocodeParser.RULE_arrayInitialization
def copyFrom(self, ctx:ParserRuleContext):
super().copyFrom(ctx)
class RangeArrayContext(ArrayInitializationContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.ArrayInitializationContext
super().__init__(parser)
self.start = None # ExpressionContext
self.stop = None # ExpressionContext
self.copyFrom(ctx)
def ARR(self):
return self.getToken(PseudocodeParser.ARR, 0)
def LBRACK(self):
return self.getToken(PseudocodeParser.LBRACK, 0)
def TO(self):
return self.getToken(PseudocodeParser.TO, 0)
def RBRACK(self):
return self.getToken(PseudocodeParser.RBRACK, 0)
def expression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.ExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,i)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterRangeArray" ):
listener.enterRangeArray(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitRangeArray" ):
listener.exitRangeArray(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitRangeArray" ):
return visitor.visitRangeArray(self)
else:
return visitor.visitChildren(self)
class ValueArrayContext(ArrayInitializationContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.ArrayInitializationContext
super().__init__(parser)
self.copyFrom(ctx)
def ARR(self):
return self.getToken(PseudocodeParser.ARR, 0)
def LBRACK(self):
return self.getToken(PseudocodeParser.LBRACK, 0)
def expression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.ExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,i)
def RBRACK(self):
return self.getToken(PseudocodeParser.RBRACK, 0)
def COMMA(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.COMMA)
else:
return self.getToken(PseudocodeParser.COMMA, i)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterValueArray" ):
listener.enterValueArray(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitValueArray" ):
listener.exitValueArray(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitValueArray" ):
return visitor.visitValueArray(self)
else:
return visitor.visitChildren(self)
class SizeArrayContext(ArrayInitializationContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.ArrayInitializationContext
super().__init__(parser)
self.size = None # ExpressionContext
self.fill = None # ExpressionContext
self.copyFrom(ctx)
def ARR(self):
return self.getToken(PseudocodeParser.ARR, 0)
def LPAREN(self):
return self.getToken(PseudocodeParser.LPAREN, 0)
def RPAREN(self):
return self.getToken(PseudocodeParser.RPAREN, 0)
def expression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.ExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,i)
def COMMA(self):
return self.getToken(PseudocodeParser.COMMA, 0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterSizeArray" ):
listener.enterSizeArray(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitSizeArray" ):
listener.exitSizeArray(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitSizeArray" ):
return visitor.visitSizeArray(self)
else:
return visitor.visitChildren(self)
def arrayInitialization(self):
localctx = PseudocodeParser.ArrayInitializationContext(self, self._ctx, self.state)
self.enterRule(localctx, 8, self.RULE_arrayInitialization)
self._la = 0 # Token type
try:
self.state = 180
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,21,self._ctx)
if la_ == 1:
localctx = PseudocodeParser.RangeArrayContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 152
self.match(PseudocodeParser.ARR)
self.state = 153
self.match(PseudocodeParser.LBRACK)
self.state = 154
localctx.start = self.expression()
self.state = 155
self.match(PseudocodeParser.TO)
self.state = 156
localctx.stop = self.expression()
self.state = 157
self.match(PseudocodeParser.RBRACK)
pass
elif la_ == 2:
localctx = PseudocodeParser.SizeArrayContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 159
self.match(PseudocodeParser.ARR)
self.state = 160
self.match(PseudocodeParser.LPAREN)
self.state = 161
localctx.size = self.expression()
self.state = 164
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==42:
self.state = 162
self.match(PseudocodeParser.COMMA)
self.state = 163
localctx.fill = self.expression()
self.state = 166
self.match(PseudocodeParser.RPAREN)
pass
elif la_ == 3:
localctx = PseudocodeParser.ValueArrayContext(self, localctx)
self.enterOuterAlt(localctx, 3)
self.state = 168
self.match(PseudocodeParser.ARR)
self.state = 169
self.match(PseudocodeParser.LBRACK)
self.state = 170
self.expression()
self.state = 175
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==42:
self.state = 171
self.match(PseudocodeParser.COMMA)
self.state = 172
self.expression()
self.state = 177
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 178
self.match(PseudocodeParser.RBRACK)
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class CompoundAssignmentContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def lvalue(self):
return self.getTypedRuleContext(PseudocodeParser.LvalueContext,0)
def expression(self):
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,0)
def PLUS_EQ(self):
return self.getToken(PseudocodeParser.PLUS_EQ, 0)
def MINUS_EQ(self):
return self.getToken(PseudocodeParser.MINUS_EQ, 0)
def STAR_EQ(self):
return self.getToken(PseudocodeParser.STAR_EQ, 0)
def SLASH_EQ(self):
return self.getToken(PseudocodeParser.SLASH_EQ, 0)
def getRuleIndex(self):
return PseudocodeParser.RULE_compoundAssignment
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterCompoundAssignment" ):
listener.enterCompoundAssignment(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitCompoundAssignment" ):
listener.exitCompoundAssignment(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitCompoundAssignment" ):
return visitor.visitCompoundAssignment(self)
else:
return visitor.visitChildren(self)
def compoundAssignment(self):
localctx = PseudocodeParser.CompoundAssignmentContext(self, self._ctx, self.state)
self.enterRule(localctx, 10, self.RULE_compoundAssignment)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 182
self.lvalue()
self.state = 183
_la = self._input.LA(1)
if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 45634027520) != 0)):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 184
self.expression()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class FunctionDeclContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def FUN(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.FUN)
else:
return self.getToken(PseudocodeParser.FUN, i)
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def LPAREN(self):
return self.getToken(PseudocodeParser.LPAREN, 0)
def RPAREN(self):
return self.getToken(PseudocodeParser.RPAREN, 0)
def COLON(self):
return self.getToken(PseudocodeParser.COLON, 0)
def END(self):
return self.getToken(PseudocodeParser.END, 0)
def paramList(self):
return self.getTypedRuleContext(PseudocodeParser.ParamListContext,0)
def NL(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.NL)
else:
return self.getToken(PseudocodeParser.NL, i)
def statement(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.StatementContext)
else:
return self.getTypedRuleContext(PseudocodeParser.StatementContext,i)
def getRuleIndex(self):
return PseudocodeParser.RULE_functionDecl
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterFunctionDecl" ):
listener.enterFunctionDecl(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitFunctionDecl" ):
listener.exitFunctionDecl(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitFunctionDecl" ):
return visitor.visitFunctionDecl(self)
else:
return visitor.visitChildren(self)
def functionDecl(self):
localctx = PseudocodeParser.FunctionDeclContext(self, self._ctx, self.state)
self.enterRule(localctx, 12, self.RULE_functionDecl)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 186
self.match(PseudocodeParser.FUN)
self.state = 187
self.match(PseudocodeParser.ID)
self.state = 188
self.match(PseudocodeParser.LPAREN)
self.state = 190
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==17 or _la==44:
self.state = 189
self.paramList()
self.state = 192
self.match(PseudocodeParser.RPAREN)
self.state = 193
self.match(PseudocodeParser.COLON)
self.state = 195
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 194
self.match(PseudocodeParser.NL)
else:
raise NoViableAltException(self)
self.state = 197
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,23,self._ctx)
self.state = 211
self._errHandler.sync(self)
_la = self._input.LA(1)
if (((_la) & ~0x3f) == 0 and ((1 << _la) & 17592186178904) != 0):
self.state = 199
self.statement()
self.state = 208
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 = 201
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 200
self.match(PseudocodeParser.NL)
self.state = 203
self._errHandler.sync(self)
_la = self._input.LA(1)
if not (_la==45):
break
self.state = 205
self.statement()
self.state = 210
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,25,self._ctx)
self.state = 216
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==45:
self.state = 213
self.match(PseudocodeParser.NL)
self.state = 218
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 219
self.match(PseudocodeParser.END)
self.state = 220
self.match(PseudocodeParser.FUN)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class FunctionCallStatementContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def LPAREN(self):
return self.getToken(PseudocodeParser.LPAREN, 0)
def RPAREN(self):
return self.getToken(PseudocodeParser.RPAREN, 0)
def expressionList(self):
return self.getTypedRuleContext(PseudocodeParser.ExpressionListContext,0)
def getRuleIndex(self):
return PseudocodeParser.RULE_functionCallStatement
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterFunctionCallStatement" ):
listener.enterFunctionCallStatement(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitFunctionCallStatement" ):
listener.exitFunctionCallStatement(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitFunctionCallStatement" ):
return visitor.visitFunctionCallStatement(self)
else:
return visitor.visitChildren(self)
def functionCallStatement(self):
localctx = PseudocodeParser.FunctionCallStatementContext(self, self._ctx, self.state)
self.enterRule(localctx, 14, self.RULE_functionCallStatement)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 222
self.match(PseudocodeParser.ID)
self.state = 223
self.match(PseudocodeParser.LPAREN)
self.state = 225
self._errHandler.sync(self)
_la = self._input.LA(1)
if (((_la) & ~0x3f) == 0 and ((1 << _la) & 566937726976) != 0):
self.state = 224
self.expressionList()
self.state = 227
self.match(PseudocodeParser.RPAREN)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class ParamListContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def annotatedParam(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.AnnotatedParamContext)
else:
return self.getTypedRuleContext(PseudocodeParser.AnnotatedParamContext,i)
def COMMA(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.COMMA)
else:
return self.getToken(PseudocodeParser.COMMA, i)
def getRuleIndex(self):
return PseudocodeParser.RULE_paramList
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterParamList" ):
listener.enterParamList(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitParamList" ):
listener.exitParamList(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitParamList" ):
return visitor.visitParamList(self)
else:
return visitor.visitChildren(self)
def paramList(self):
localctx = PseudocodeParser.ParamListContext(self, self._ctx, self.state)
self.enterRule(localctx, 16, self.RULE_paramList)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 229
self.annotatedParam()
self.state = 234
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==42:
self.state = 230
self.match(PseudocodeParser.COMMA)
self.state = 231
self.annotatedParam()
self.state = 236
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 AnnotatedParamContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def annotation(self):
return self.getTypedRuleContext(PseudocodeParser.AnnotationContext,0)
def getRuleIndex(self):
return PseudocodeParser.RULE_annotatedParam
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAnnotatedParam" ):
listener.enterAnnotatedParam(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAnnotatedParam" ):
listener.exitAnnotatedParam(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAnnotatedParam" ):
return visitor.visitAnnotatedParam(self)
else:
return visitor.visitChildren(self)
def annotatedParam(self):
localctx = PseudocodeParser.AnnotatedParamContext(self, self._ctx, self.state)
self.enterRule(localctx, 18, self.RULE_annotatedParam)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 238
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==44:
self.state = 237
self.annotation()
self.state = 240
self.match(PseudocodeParser.ID)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class AnnotationContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def AT(self):
return self.getToken(PseudocodeParser.AT, 0)
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def LOW_THAN(self):
return self.getToken(PseudocodeParser.LOW_THAN, 0)
def annotationArgList(self):
return self.getTypedRuleContext(PseudocodeParser.AnnotationArgListContext,0)
def GREATER_THAN(self):
return self.getToken(PseudocodeParser.GREATER_THAN, 0)
def getRuleIndex(self):
return PseudocodeParser.RULE_annotation
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAnnotation" ):
listener.enterAnnotation(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAnnotation" ):
listener.exitAnnotation(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAnnotation" ):
return visitor.visitAnnotation(self)
else:
return visitor.visitChildren(self)
def annotation(self):
localctx = PseudocodeParser.AnnotationContext(self, self._ctx, self.state)
self.enterRule(localctx, 20, self.RULE_annotation)
try:
self.enterOuterAlt(localctx, 1)
self.state = 242
self.match(PseudocodeParser.AT)
self.state = 243
self.match(PseudocodeParser.ID)
self.state = 244
self.match(PseudocodeParser.LOW_THAN)
self.state = 245
self.annotationArgList()
self.state = 246
self.match(PseudocodeParser.GREATER_THAN)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class AnnotationArgListContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def annotationArg(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.AnnotationArgContext)
else:
return self.getTypedRuleContext(PseudocodeParser.AnnotationArgContext,i)
def COMMA(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.COMMA)
else:
return self.getToken(PseudocodeParser.COMMA, i)
def getRuleIndex(self):
return PseudocodeParser.RULE_annotationArgList
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAnnotationArgList" ):
listener.enterAnnotationArgList(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAnnotationArgList" ):
listener.exitAnnotationArgList(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAnnotationArgList" ):
return visitor.visitAnnotationArgList(self)
else:
return visitor.visitChildren(self)
def annotationArgList(self):
localctx = PseudocodeParser.AnnotationArgListContext(self, self._ctx, self.state)
self.enterRule(localctx, 22, self.RULE_annotationArgList)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 248
self.annotationArg()
self.state = 253
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==42:
self.state = 249
self.match(PseudocodeParser.COMMA)
self.state = 250
self.annotationArg()
self.state = 255
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 AnnotationArgContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def STRING(self):
return self.getToken(PseudocodeParser.STRING, 0)
def INT(self):
return self.getToken(PseudocodeParser.INT, 0)
def getRuleIndex(self):
return PseudocodeParser.RULE_annotationArg
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAnnotationArg" ):
listener.enterAnnotationArg(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAnnotationArg" ):
listener.exitAnnotationArg(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAnnotationArg" ):
return visitor.visitAnnotationArg(self)
else:
return visitor.visitChildren(self)
def annotationArg(self):
localctx = PseudocodeParser.AnnotationArgContext(self, self._ctx, self.state)
self.enterRule(localctx, 24, self.RULE_annotationArg)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 256
_la = self._input.LA(1)
if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 1703936) != 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 ForEachLoopContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def FOR(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.FOR)
else:
return self.getToken(PseudocodeParser.FOR, i)
def ID(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.ID)
else:
return self.getToken(PseudocodeParser.ID, i)
def IN(self):
return self.getToken(PseudocodeParser.IN, 0)
def COLON(self):
return self.getToken(PseudocodeParser.COLON, 0)
def END(self):
return self.getToken(PseudocodeParser.END, 0)
def annotation(self):
return self.getTypedRuleContext(PseudocodeParser.AnnotationContext,0)
def NL(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.NL)
else:
return self.getToken(PseudocodeParser.NL, i)
def statement(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.StatementContext)
else:
return self.getTypedRuleContext(PseudocodeParser.StatementContext,i)
def getRuleIndex(self):
return PseudocodeParser.RULE_forEachLoop
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterForEachLoop" ):
listener.enterForEachLoop(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitForEachLoop" ):
listener.exitForEachLoop(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitForEachLoop" ):
return visitor.visitForEachLoop(self)
else:
return visitor.visitChildren(self)
def forEachLoop(self):
localctx = PseudocodeParser.ForEachLoopContext(self, self._ctx, self.state)
self.enterRule(localctx, 26, self.RULE_forEachLoop)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 258
self.match(PseudocodeParser.FOR)
self.state = 260
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==44:
self.state = 259
self.annotation()
self.state = 262
self.match(PseudocodeParser.ID)
self.state = 263
self.match(PseudocodeParser.IN)
self.state = 264
self.match(PseudocodeParser.ID)
self.state = 265
self.match(PseudocodeParser.COLON)
self.state = 267
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 266
self.match(PseudocodeParser.NL)
else:
raise NoViableAltException(self)
self.state = 269
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,33,self._ctx)
self.state = 283
self._errHandler.sync(self)
_la = self._input.LA(1)
if (((_la) & ~0x3f) == 0 and ((1 << _la) & 17592186178904) != 0):
self.state = 271
self.statement()
self.state = 280
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:
self.state = 273
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 272
self.match(PseudocodeParser.NL)
self.state = 275
self._errHandler.sync(self)
_la = self._input.LA(1)
if not (_la==45):
break
self.state = 277
self.statement()
self.state = 282
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,35,self._ctx)
self.state = 288
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==45:
self.state = 285
self.match(PseudocodeParser.NL)
self.state = 290
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 291
self.match(PseudocodeParser.END)
self.state = 292
self.match(PseudocodeParser.FOR)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class RegularForLoopContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def FOR(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.FOR)
else:
return self.getToken(PseudocodeParser.FOR, i)
def LPAREN(self):
return self.getToken(PseudocodeParser.LPAREN, 0)
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def EQ(self):
return self.getToken(PseudocodeParser.EQ, 0)
def expression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.ExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,i)
def forUpdate(self):
return self.getTypedRuleContext(PseudocodeParser.ForUpdateContext,0)
def RPAREN(self):
return self.getToken(PseudocodeParser.RPAREN, 0)
def COLON(self):
return self.getToken(PseudocodeParser.COLON, 0)
def block(self):
return self.getTypedRuleContext(PseudocodeParser.BlockContext,0)
def END(self):
return self.getToken(PseudocodeParser.END, 0)
def COMMA(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.COMMA)
else:
return self.getToken(PseudocodeParser.COMMA, i)
def SEMICOLON(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.SEMICOLON)
else:
return self.getToken(PseudocodeParser.SEMICOLON, i)
def annotation(self):
return self.getTypedRuleContext(PseudocodeParser.AnnotationContext,0)
def NL(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.NL)
else:
return self.getToken(PseudocodeParser.NL, i)
def getRuleIndex(self):
return PseudocodeParser.RULE_regularForLoop
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterRegularForLoop" ):
listener.enterRegularForLoop(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitRegularForLoop" ):
listener.exitRegularForLoop(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitRegularForLoop" ):
return visitor.visitRegularForLoop(self)
else:
return visitor.visitChildren(self)
def regularForLoop(self):
localctx = PseudocodeParser.RegularForLoopContext(self, self._ctx, self.state)
self.enterRule(localctx, 28, self.RULE_regularForLoop)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 294
self.match(PseudocodeParser.FOR)
self.state = 296
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==44:
self.state = 295
self.annotation()
self.state = 298
self.match(PseudocodeParser.LPAREN)
self.state = 299
self.match(PseudocodeParser.ID)
self.state = 300
self.match(PseudocodeParser.EQ)
self.state = 301
self.expression()
self.state = 302
_la = self._input.LA(1)
if not(_la==42 or _la==43):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 303
self.expression()
self.state = 304
_la = self._input.LA(1)
if not(_la==42 or _la==43):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 305
self.forUpdate()
self.state = 306
self.match(PseudocodeParser.RPAREN)
self.state = 307
self.match(PseudocodeParser.COLON)
self.state = 309
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 308
self.match(PseudocodeParser.NL)
else:
raise NoViableAltException(self)
self.state = 311
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,39,self._ctx)
self.state = 313
self.block()
self.state = 314
self.match(PseudocodeParser.END)
self.state = 315
self.match(PseudocodeParser.FOR)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class ForUpdateContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def expression(self):
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,0)
def PLUS_EQ(self):
return self.getToken(PseudocodeParser.PLUS_EQ, 0)
def MINUS_EQ(self):
return self.getToken(PseudocodeParser.MINUS_EQ, 0)
def STAR_EQ(self):
return self.getToken(PseudocodeParser.STAR_EQ, 0)
def SLASH_EQ(self):
return self.getToken(PseudocodeParser.SLASH_EQ, 0)
def getRuleIndex(self):
return PseudocodeParser.RULE_forUpdate
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterForUpdate" ):
listener.enterForUpdate(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitForUpdate" ):
listener.exitForUpdate(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitForUpdate" ):
return visitor.visitForUpdate(self)
else:
return visitor.visitChildren(self)
def forUpdate(self):
localctx = PseudocodeParser.ForUpdateContext(self, self._ctx, self.state)
self.enterRule(localctx, 30, self.RULE_forUpdate)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 317
self.match(PseudocodeParser.ID)
self.state = 318
_la = self._input.LA(1)
if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 45634027520) != 0)):
self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 319
self.expression()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class IfStatementContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def IF(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.IF)
else:
return self.getToken(PseudocodeParser.IF, i)
def LPAREN(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.LPAREN)
else:
return self.getToken(PseudocodeParser.LPAREN, i)
def expression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.ExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,i)
def RPAREN(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.RPAREN)
else:
return self.getToken(PseudocodeParser.RPAREN, i)
def COLON(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.COLON)
else:
return self.getToken(PseudocodeParser.COLON, i)
def block(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.BlockContext)
else:
return self.getTypedRuleContext(PseudocodeParser.BlockContext,i)
def END(self):
return self.getToken(PseudocodeParser.END, 0)
def NL(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.NL)
else:
return self.getToken(PseudocodeParser.NL, i)
def ELSE(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.ELSE)
else:
return self.getToken(PseudocodeParser.ELSE, i)
def getRuleIndex(self):
return PseudocodeParser.RULE_ifStatement
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterIfStatement" ):
listener.enterIfStatement(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitIfStatement" ):
listener.exitIfStatement(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitIfStatement" ):
return visitor.visitIfStatement(self)
else:
return visitor.visitChildren(self)
def ifStatement(self):
localctx = PseudocodeParser.IfStatementContext(self, self._ctx, self.state)
self.enterRule(localctx, 32, self.RULE_ifStatement)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 321
self.match(PseudocodeParser.IF)
self.state = 322
self.match(PseudocodeParser.LPAREN)
self.state = 323
self.expression()
self.state = 324
self.match(PseudocodeParser.RPAREN)
self.state = 325
self.match(PseudocodeParser.COLON)
self.state = 327
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 326
self.match(PseudocodeParser.NL)
else:
raise NoViableAltException(self)
self.state = 329
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,40,self._ctx)
self.state = 331
self.block()
self.state = 347
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,42,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 332
self.match(PseudocodeParser.ELSE)
self.state = 333
self.match(PseudocodeParser.IF)
self.state = 334
self.match(PseudocodeParser.LPAREN)
self.state = 335
self.expression()
self.state = 336
self.match(PseudocodeParser.RPAREN)
self.state = 337
self.match(PseudocodeParser.COLON)
self.state = 339
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 338
self.match(PseudocodeParser.NL)
else:
raise NoViableAltException(self)
self.state = 341
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,41,self._ctx)
self.state = 343
self.block()
self.state = 349
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,42,self._ctx)
self.state = 358
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==7:
self.state = 350
self.match(PseudocodeParser.ELSE)
self.state = 351
self.match(PseudocodeParser.COLON)
self.state = 353
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 352
self.match(PseudocodeParser.NL)
else:
raise NoViableAltException(self)
self.state = 355
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,43,self._ctx)
self.state = 357
self.block()
self.state = 360
self.match(PseudocodeParser.END)
self.state = 361
self.match(PseudocodeParser.IF)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class WhileLoopContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def WHILE(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.WHILE)
else:
return self.getToken(PseudocodeParser.WHILE, i)
def LPAREN(self):
return self.getToken(PseudocodeParser.LPAREN, 0)
def expression(self):
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,0)
def RPAREN(self):
return self.getToken(PseudocodeParser.RPAREN, 0)
def COLON(self):
return self.getToken(PseudocodeParser.COLON, 0)
def END(self):
return self.getToken(PseudocodeParser.END, 0)
def NL(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.NL)
else:
return self.getToken(PseudocodeParser.NL, i)
def statement(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.StatementContext)
else:
return self.getTypedRuleContext(PseudocodeParser.StatementContext,i)
def getRuleIndex(self):
return PseudocodeParser.RULE_whileLoop
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterWhileLoop" ):
listener.enterWhileLoop(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitWhileLoop" ):
listener.exitWhileLoop(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitWhileLoop" ):
return visitor.visitWhileLoop(self)
else:
return visitor.visitChildren(self)
def whileLoop(self):
localctx = PseudocodeParser.WhileLoopContext(self, self._ctx, self.state)
self.enterRule(localctx, 34, self.RULE_whileLoop)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 363
self.match(PseudocodeParser.WHILE)
self.state = 364
self.match(PseudocodeParser.LPAREN)
self.state = 365
self.expression()
self.state = 366
self.match(PseudocodeParser.RPAREN)
self.state = 367
self.match(PseudocodeParser.COLON)
self.state = 369
self._errHandler.sync(self)
_alt = 1
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt == 1:
self.state = 368
self.match(PseudocodeParser.NL)
else:
raise NoViableAltException(self)
self.state = 371
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,45,self._ctx)
self.state = 385
self._errHandler.sync(self)
_la = self._input.LA(1)
if (((_la) & ~0x3f) == 0 and ((1 << _la) & 17592186178904) != 0):
self.state = 373
self.statement()
self.state = 382
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,47,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 375
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 374
self.match(PseudocodeParser.NL)
self.state = 377
self._errHandler.sync(self)
_la = self._input.LA(1)
if not (_la==45):
break
self.state = 379
self.statement()
self.state = 384
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,47,self._ctx)
self.state = 390
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==45:
self.state = 387
self.match(PseudocodeParser.NL)
self.state = 392
self._errHandler.sync(self)
_la = self._input.LA(1)
self.state = 393
self.match(PseudocodeParser.END)
self.state = 394
self.match(PseudocodeParser.WHILE)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class ReturnStatementContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def RETURN(self):
return self.getToken(PseudocodeParser.RETURN, 0)
def expression(self):
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,0)
def getRuleIndex(self):
return PseudocodeParser.RULE_returnStatement
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterReturnStatement" ):
listener.enterReturnStatement(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitReturnStatement" ):
listener.exitReturnStatement(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitReturnStatement" ):
return visitor.visitReturnStatement(self)
else:
return visitor.visitChildren(self)
def returnStatement(self):
localctx = PseudocodeParser.ReturnStatementContext(self, self._ctx, self.state)
self.enterRule(localctx, 36, self.RULE_returnStatement)
try:
self.enterOuterAlt(localctx, 1)
self.state = 396
self.match(PseudocodeParser.RETURN)
self.state = 397
self.expression()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class BreakStatementContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def BREAK(self):
return self.getToken(PseudocodeParser.BREAK, 0)
def getRuleIndex(self):
return PseudocodeParser.RULE_breakStatement
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterBreakStatement" ):
listener.enterBreakStatement(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitBreakStatement" ):
listener.exitBreakStatement(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitBreakStatement" ):
return visitor.visitBreakStatement(self)
else:
return visitor.visitChildren(self)
def breakStatement(self):
localctx = PseudocodeParser.BreakStatementContext(self, self._ctx, self.state)
self.enterRule(localctx, 38, self.RULE_breakStatement)
try:
self.enterOuterAlt(localctx, 1)
self.state = 399
self.match(PseudocodeParser.BREAK)
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class BlockContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def statement(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.StatementContext)
else:
return self.getTypedRuleContext(PseudocodeParser.StatementContext,i)
def NL(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.NL)
else:
return self.getToken(PseudocodeParser.NL, i)
def getRuleIndex(self):
return PseudocodeParser.RULE_block
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterBlock" ):
listener.enterBlock(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitBlock" ):
listener.exitBlock(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitBlock" ):
return visitor.visitBlock(self)
else:
return visitor.visitChildren(self)
def block(self):
localctx = PseudocodeParser.BlockContext(self, self._ctx, self.state)
self.enterRule(localctx, 40, self.RULE_block)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 413
self._errHandler.sync(self)
_la = self._input.LA(1)
if (((_la) & ~0x3f) == 0 and ((1 << _la) & 17592186178904) != 0):
self.state = 401
self.statement()
self.state = 410
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,51,self._ctx)
while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER:
if _alt==1:
self.state = 403
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 402
self.match(PseudocodeParser.NL)
self.state = 405
self._errHandler.sync(self)
_la = self._input.LA(1)
if not (_la==45):
break
self.state = 407
self.statement()
self.state = 412
self._errHandler.sync(self)
_alt = self._interp.adaptivePredict(self._input,51,self._ctx)
self.state = 418
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==45:
self.state = 415
self.match(PseudocodeParser.NL)
self.state = 420
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 ExpressionContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def logicalOrExpression(self):
return self.getTypedRuleContext(PseudocodeParser.LogicalOrExpressionContext,0)
def getRuleIndex(self):
return PseudocodeParser.RULE_expression
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterExpression" ):
listener.enterExpression(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitExpression" ):
listener.exitExpression(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitExpression" ):
return visitor.visitExpression(self)
else:
return visitor.visitChildren(self)
def expression(self):
localctx = PseudocodeParser.ExpressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 42, self.RULE_expression)
try:
self.enterOuterAlt(localctx, 1)
self.state = 421
self.logicalOrExpression()
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class LogicalOrExpressionContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PseudocodeParser.RULE_logicalOrExpression
def copyFrom(self, ctx:ParserRuleContext):
super().copyFrom(ctx)
class OrExprContext(LogicalOrExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.LogicalOrExpressionContext
super().__init__(parser)
self.left = None # LogicalAndExpressionContext
self.right = None # LogicalAndExpressionContext
self.copyFrom(ctx)
def logicalAndExpression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.LogicalAndExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.LogicalAndExpressionContext,i)
def OR(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.OR)
else:
return self.getToken(PseudocodeParser.OR, i)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterOrExpr" ):
listener.enterOrExpr(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitOrExpr" ):
listener.exitOrExpr(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitOrExpr" ):
return visitor.visitOrExpr(self)
else:
return visitor.visitChildren(self)
class OrPassContext(LogicalOrExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.LogicalOrExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def logicalAndExpression(self):
return self.getTypedRuleContext(PseudocodeParser.LogicalAndExpressionContext,0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterOrPass" ):
listener.enterOrPass(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitOrPass" ):
listener.exitOrPass(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitOrPass" ):
return visitor.visitOrPass(self)
else:
return visitor.visitChildren(self)
def logicalOrExpression(self):
localctx = PseudocodeParser.LogicalOrExpressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 44, self.RULE_logicalOrExpression)
self._la = 0 # Token type
try:
self.state = 431
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,55,self._ctx)
if la_ == 1:
localctx = PseudocodeParser.OrExprContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 423
localctx.left = self.logicalAndExpression()
self.state = 426
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 424
self.match(PseudocodeParser.OR)
self.state = 425
localctx.right = self.logicalAndExpression()
self.state = 428
self._errHandler.sync(self)
_la = self._input.LA(1)
if not (_la==15):
break
pass
elif la_ == 2:
localctx = PseudocodeParser.OrPassContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 430
self.logicalAndExpression()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class LogicalAndExpressionContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PseudocodeParser.RULE_logicalAndExpression
def copyFrom(self, ctx:ParserRuleContext):
super().copyFrom(ctx)
class AndExprContext(LogicalAndExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.LogicalAndExpressionContext
super().__init__(parser)
self.left = None # ComparisonExpressionContext
self.right = None # ComparisonExpressionContext
self.copyFrom(ctx)
def comparisonExpression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.ComparisonExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.ComparisonExpressionContext,i)
def AND(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.AND)
else:
return self.getToken(PseudocodeParser.AND, i)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAndExpr" ):
listener.enterAndExpr(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAndExpr" ):
listener.exitAndExpr(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAndExpr" ):
return visitor.visitAndExpr(self)
else:
return visitor.visitChildren(self)
class AndPassContext(LogicalAndExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.LogicalAndExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def comparisonExpression(self):
return self.getTypedRuleContext(PseudocodeParser.ComparisonExpressionContext,0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAndPass" ):
listener.enterAndPass(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAndPass" ):
listener.exitAndPass(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAndPass" ):
return visitor.visitAndPass(self)
else:
return visitor.visitChildren(self)
def logicalAndExpression(self):
localctx = PseudocodeParser.LogicalAndExpressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 46, self.RULE_logicalAndExpression)
self._la = 0 # Token type
try:
self.state = 441
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,57,self._ctx)
if la_ == 1:
localctx = PseudocodeParser.AndExprContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 433
localctx.left = self.comparisonExpression()
self.state = 436
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 434
self.match(PseudocodeParser.AND)
self.state = 435
localctx.right = self.comparisonExpression()
self.state = 438
self._errHandler.sync(self)
_la = self._input.LA(1)
if not (_la==14):
break
pass
elif la_ == 2:
localctx = PseudocodeParser.AndPassContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 440
self.comparisonExpression()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class ComparisonExpressionContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PseudocodeParser.RULE_comparisonExpression
def copyFrom(self, ctx:ParserRuleContext):
super().copyFrom(ctx)
class CompareExprContext(ComparisonExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.ComparisonExpressionContext
super().__init__(parser)
self.left = None # AdditiveExpressionContext
self.op = None # Token
self.right = None # AdditiveExpressionContext
self.copyFrom(ctx)
def additiveExpression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.AdditiveExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.AdditiveExpressionContext,i)
def EQEQ(self):
return self.getToken(PseudocodeParser.EQEQ, 0)
def LOW_THAN(self):
return self.getToken(PseudocodeParser.LOW_THAN, 0)
def GREATER_THAN(self):
return self.getToken(PseudocodeParser.GREATER_THAN, 0)
def LESS_EQ(self):
return self.getToken(PseudocodeParser.LESS_EQ, 0)
def GREATER_EQ(self):
return self.getToken(PseudocodeParser.GREATER_EQ, 0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterCompareExpr" ):
listener.enterCompareExpr(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitCompareExpr" ):
listener.exitCompareExpr(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitCompareExpr" ):
return visitor.visitCompareExpr(self)
else:
return visitor.visitChildren(self)
class ComparisonPassContext(ComparisonExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.ComparisonExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def additiveExpression(self):
return self.getTypedRuleContext(PseudocodeParser.AdditiveExpressionContext,0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterComparisonPass" ):
listener.enterComparisonPass(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitComparisonPass" ):
listener.exitComparisonPass(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitComparisonPass" ):
return visitor.visitComparisonPass(self)
else:
return visitor.visitChildren(self)
def comparisonExpression(self):
localctx = PseudocodeParser.ComparisonExpressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 48, self.RULE_comparisonExpression)
self._la = 0 # Token type
try:
self.state = 448
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,58,self._ctx)
if la_ == 1:
localctx = PseudocodeParser.CompareExprContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 443
localctx.left = self.additiveExpression()
self.state = 444
localctx.op = self._input.LT(1)
_la = self._input.LA(1)
if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 255852544) != 0)):
localctx.op = self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 445
localctx.right = self.additiveExpression()
pass
elif la_ == 2:
localctx = PseudocodeParser.ComparisonPassContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 447
self.additiveExpression()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class AdditiveExpressionContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PseudocodeParser.RULE_additiveExpression
def copyFrom(self, ctx:ParserRuleContext):
super().copyFrom(ctx)
class AdditivePassContext(AdditiveExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.AdditiveExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def multiplicativeExpression(self):
return self.getTypedRuleContext(PseudocodeParser.MultiplicativeExpressionContext,0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAdditivePass" ):
listener.enterAdditivePass(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAdditivePass" ):
listener.exitAdditivePass(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAdditivePass" ):
return visitor.visitAdditivePass(self)
else:
return visitor.visitChildren(self)
class AddExprContext(AdditiveExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.AdditiveExpressionContext
super().__init__(parser)
self.left = None # MultiplicativeExpressionContext
self.op = None # Token
self.right = None # MultiplicativeExpressionContext
self.copyFrom(ctx)
def multiplicativeExpression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.MultiplicativeExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.MultiplicativeExpressionContext,i)
def PLUS(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.PLUS)
else:
return self.getToken(PseudocodeParser.PLUS, i)
def MINUS(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.MINUS)
else:
return self.getToken(PseudocodeParser.MINUS, i)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAddExpr" ):
listener.enterAddExpr(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAddExpr" ):
listener.exitAddExpr(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAddExpr" ):
return visitor.visitAddExpr(self)
else:
return visitor.visitChildren(self)
def additiveExpression(self):
localctx = PseudocodeParser.AdditiveExpressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 50, self.RULE_additiveExpression)
self._la = 0 # Token type
try:
self.state = 458
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,60,self._ctx)
if la_ == 1:
localctx = PseudocodeParser.AddExprContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 450
localctx.left = self.multiplicativeExpression()
self.state = 453
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 451
localctx.op = self._input.LT(1)
_la = self._input.LA(1)
if not(_la==32 or _la==34):
localctx.op = self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 452
localctx.right = self.multiplicativeExpression()
self.state = 455
self._errHandler.sync(self)
_la = self._input.LA(1)
if not (_la==32 or _la==34):
break
pass
elif la_ == 2:
localctx = PseudocodeParser.AdditivePassContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 457
self.multiplicativeExpression()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class MultiplicativeExpressionContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PseudocodeParser.RULE_multiplicativeExpression
def copyFrom(self, ctx:ParserRuleContext):
super().copyFrom(ctx)
class MulExprContext(MultiplicativeExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.MultiplicativeExpressionContext
super().__init__(parser)
self.left = None # PowerExpressionContext
self.op = None # Token
self.right = None # PowerExpressionContext
self.copyFrom(ctx)
def powerExpression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.PowerExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.PowerExpressionContext,i)
def STAR(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.STAR)
else:
return self.getToken(PseudocodeParser.STAR, i)
def SLASH(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.SLASH)
else:
return self.getToken(PseudocodeParser.SLASH, i)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterMulExpr" ):
listener.enterMulExpr(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitMulExpr" ):
listener.exitMulExpr(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitMulExpr" ):
return visitor.visitMulExpr(self)
else:
return visitor.visitChildren(self)
class MultiplicativePassContext(MultiplicativeExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.MultiplicativeExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def powerExpression(self):
return self.getTypedRuleContext(PseudocodeParser.PowerExpressionContext,0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterMultiplicativePass" ):
listener.enterMultiplicativePass(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitMultiplicativePass" ):
listener.exitMultiplicativePass(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitMultiplicativePass" ):
return visitor.visitMultiplicativePass(self)
else:
return visitor.visitChildren(self)
def multiplicativeExpression(self):
localctx = PseudocodeParser.MultiplicativeExpressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 52, self.RULE_multiplicativeExpression)
self._la = 0 # Token type
try:
self.state = 468
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,62,self._ctx)
if la_ == 1:
localctx = PseudocodeParser.MulExprContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 460
localctx.left = self.powerExpression()
self.state = 463
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 461
localctx.op = self._input.LT(1)
_la = self._input.LA(1)
if not(_la==30 or _la==36):
localctx.op = self._errHandler.recoverInline(self)
else:
self._errHandler.reportMatch(self)
self.consume()
self.state = 462
localctx.right = self.powerExpression()
self.state = 465
self._errHandler.sync(self)
_la = self._input.LA(1)
if not (_la==30 or _la==36):
break
pass
elif la_ == 2:
localctx = PseudocodeParser.MultiplicativePassContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 467
self.powerExpression()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class PowerExpressionContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PseudocodeParser.RULE_powerExpression
def copyFrom(self, ctx:ParserRuleContext):
super().copyFrom(ctx)
class PowerPassContext(PowerExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.PowerExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def unaryExpression(self):
return self.getTypedRuleContext(PseudocodeParser.UnaryExpressionContext,0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterPowerPass" ):
listener.enterPowerPass(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitPowerPass" ):
listener.exitPowerPass(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitPowerPass" ):
return visitor.visitPowerPass(self)
else:
return visitor.visitChildren(self)
class PowExprContext(PowerExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.PowerExpressionContext
super().__init__(parser)
self.left = None # UnaryExpressionContext
self.right = None # UnaryExpressionContext
self.copyFrom(ctx)
def unaryExpression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.UnaryExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.UnaryExpressionContext,i)
def POW(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.POW)
else:
return self.getToken(PseudocodeParser.POW, i)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterPowExpr" ):
listener.enterPowExpr(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitPowExpr" ):
listener.exitPowExpr(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitPowExpr" ):
return visitor.visitPowExpr(self)
else:
return visitor.visitChildren(self)
def powerExpression(self):
localctx = PseudocodeParser.PowerExpressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 54, self.RULE_powerExpression)
self._la = 0 # Token type
try:
self.state = 478
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,64,self._ctx)
if la_ == 1:
localctx = PseudocodeParser.PowExprContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 470
localctx.left = self.unaryExpression()
self.state = 473
self._errHandler.sync(self)
_la = self._input.LA(1)
while True:
self.state = 471
self.match(PseudocodeParser.POW)
self.state = 472
localctx.right = self.unaryExpression()
self.state = 475
self._errHandler.sync(self)
_la = self._input.LA(1)
if not (_la==28):
break
pass
elif la_ == 2:
localctx = PseudocodeParser.PowerPassContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 477
self.unaryExpression()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class UnaryExpressionContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PseudocodeParser.RULE_unaryExpression
def copyFrom(self, ctx:ParserRuleContext):
super().copyFrom(ctx)
class UnaryPassContext(UnaryExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.UnaryExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def primaryExpression(self):
return self.getTypedRuleContext(PseudocodeParser.PrimaryExpressionContext,0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterUnaryPass" ):
listener.enterUnaryPass(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitUnaryPass" ):
listener.exitUnaryPass(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitUnaryPass" ):
return visitor.visitUnaryPass(self)
else:
return visitor.visitChildren(self)
class UnaryMinusExprContext(UnaryExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.UnaryExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def MINUS(self):
return self.getToken(PseudocodeParser.MINUS, 0)
def unaryExpression(self):
return self.getTypedRuleContext(PseudocodeParser.UnaryExpressionContext,0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterUnaryMinusExpr" ):
listener.enterUnaryMinusExpr(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitUnaryMinusExpr" ):
listener.exitUnaryMinusExpr(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitUnaryMinusExpr" ):
return visitor.visitUnaryMinusExpr(self)
else:
return visitor.visitChildren(self)
def unaryExpression(self):
localctx = PseudocodeParser.UnaryExpressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 56, self.RULE_unaryExpression)
try:
self.state = 483
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [34]:
localctx = PseudocodeParser.UnaryMinusExprContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 480
self.match(PseudocodeParser.MINUS)
self.state = 481
self.unaryExpression()
pass
elif token in [12, 13, 16, 17, 18, 19, 20, 39]:
localctx = PseudocodeParser.UnaryPassContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 482
self.primaryExpression()
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 PrimaryExpressionContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def getRuleIndex(self):
return PseudocodeParser.RULE_primaryExpression
def copyFrom(self, ctx:ParserRuleContext):
super().copyFrom(ctx)
class ParenExpressionContext(PrimaryExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.PrimaryExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def LPAREN(self):
return self.getToken(PseudocodeParser.LPAREN, 0)
def expression(self):
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,0)
def RPAREN(self):
return self.getToken(PseudocodeParser.RPAREN, 0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterParenExpression" ):
listener.enterParenExpression(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitParenExpression" ):
listener.exitParenExpression(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitParenExpression" ):
return visitor.visitParenExpression(self)
else:
return visitor.visitChildren(self)
class AtomExpressionContext(PrimaryExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.PrimaryExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def atom(self):
return self.getTypedRuleContext(PseudocodeParser.AtomContext,0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAtomExpression" ):
listener.enterAtomExpression(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAtomExpression" ):
listener.exitAtomExpression(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAtomExpression" ):
return visitor.visitAtomExpression(self)
else:
return visitor.visitChildren(self)
class ArrayAccessExpressionContext(PrimaryExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.PrimaryExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def LBRACK(self):
return self.getToken(PseudocodeParser.LBRACK, 0)
def expression(self):
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,0)
def RBRACK(self):
return self.getToken(PseudocodeParser.RBRACK, 0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterArrayAccessExpression" ):
listener.enterArrayAccessExpression(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitArrayAccessExpression" ):
listener.exitArrayAccessExpression(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitArrayAccessExpression" ):
return visitor.visitArrayAccessExpression(self)
else:
return visitor.visitChildren(self)
class FunctionCallExpressionContext(PrimaryExpressionContext):
def __init__(self, parser, ctx:ParserRuleContext): # actually a PseudocodeParser.PrimaryExpressionContext
super().__init__(parser)
self.copyFrom(ctx)
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def LPAREN(self):
return self.getToken(PseudocodeParser.LPAREN, 0)
def RPAREN(self):
return self.getToken(PseudocodeParser.RPAREN, 0)
def expressionList(self):
return self.getTypedRuleContext(PseudocodeParser.ExpressionListContext,0)
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterFunctionCallExpression" ):
listener.enterFunctionCallExpression(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitFunctionCallExpression" ):
listener.exitFunctionCallExpression(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitFunctionCallExpression" ):
return visitor.visitFunctionCallExpression(self)
else:
return visitor.visitChildren(self)
def primaryExpression(self):
localctx = PseudocodeParser.PrimaryExpressionContext(self, self._ctx, self.state)
self.enterRule(localctx, 58, self.RULE_primaryExpression)
self._la = 0 # Token type
try:
self.state = 501
self._errHandler.sync(self)
la_ = self._interp.adaptivePredict(self._input,67,self._ctx)
if la_ == 1:
localctx = PseudocodeParser.ParenExpressionContext(self, localctx)
self.enterOuterAlt(localctx, 1)
self.state = 485
self.match(PseudocodeParser.LPAREN)
self.state = 486
self.expression()
self.state = 487
self.match(PseudocodeParser.RPAREN)
pass
elif la_ == 2:
localctx = PseudocodeParser.FunctionCallExpressionContext(self, localctx)
self.enterOuterAlt(localctx, 2)
self.state = 489
self.match(PseudocodeParser.ID)
self.state = 490
self.match(PseudocodeParser.LPAREN)
self.state = 492
self._errHandler.sync(self)
_la = self._input.LA(1)
if (((_la) & ~0x3f) == 0 and ((1 << _la) & 566937726976) != 0):
self.state = 491
self.expressionList()
self.state = 494
self.match(PseudocodeParser.RPAREN)
pass
elif la_ == 3:
localctx = PseudocodeParser.ArrayAccessExpressionContext(self, localctx)
self.enterOuterAlt(localctx, 3)
self.state = 495
self.match(PseudocodeParser.ID)
self.state = 496
self.match(PseudocodeParser.LBRACK)
self.state = 497
self.expression()
self.state = 498
self.match(PseudocodeParser.RBRACK)
pass
elif la_ == 4:
localctx = PseudocodeParser.AtomExpressionContext(self, localctx)
self.enterOuterAlt(localctx, 4)
self.state = 500
self.atom()
pass
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
self._errHandler.recover(self, re)
finally:
self.exitRule()
return localctx
class ExpressionListContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def expression(self, i:int=None):
if i is None:
return self.getTypedRuleContexts(PseudocodeParser.ExpressionContext)
else:
return self.getTypedRuleContext(PseudocodeParser.ExpressionContext,i)
def COMMA(self, i:int=None):
if i is None:
return self.getTokens(PseudocodeParser.COMMA)
else:
return self.getToken(PseudocodeParser.COMMA, i)
def getRuleIndex(self):
return PseudocodeParser.RULE_expressionList
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterExpressionList" ):
listener.enterExpressionList(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitExpressionList" ):
listener.exitExpressionList(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitExpressionList" ):
return visitor.visitExpressionList(self)
else:
return visitor.visitChildren(self)
def expressionList(self):
localctx = PseudocodeParser.ExpressionListContext(self, self._ctx, self.state)
self.enterRule(localctx, 60, self.RULE_expressionList)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 503
self.expression()
self.state = 508
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==42:
self.state = 504
self.match(PseudocodeParser.COMMA)
self.state = 505
self.expression()
self.state = 510
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 AtomContext(ParserRuleContext):
__slots__ = 'parser'
def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1):
super().__init__(parent, invokingState)
self.parser = parser
def ID(self):
return self.getToken(PseudocodeParser.ID, 0)
def INT(self):
return self.getToken(PseudocodeParser.INT, 0)
def FLOAT(self):
return self.getToken(PseudocodeParser.FLOAT, 0)
def TRUE(self):
return self.getToken(PseudocodeParser.TRUE, 0)
def FALSE(self):
return self.getToken(PseudocodeParser.FALSE, 0)
def NULL(self):
return self.getToken(PseudocodeParser.NULL, 0)
def STRING(self):
return self.getToken(PseudocodeParser.STRING, 0)
def getRuleIndex(self):
return PseudocodeParser.RULE_atom
def enterRule(self, listener:ParseTreeListener):
if hasattr( listener, "enterAtom" ):
listener.enterAtom(self)
def exitRule(self, listener:ParseTreeListener):
if hasattr( listener, "exitAtom" ):
listener.exitAtom(self)
def accept(self, visitor:ParseTreeVisitor):
if hasattr( visitor, "visitAtom" ):
return visitor.visitAtom(self)
else:
return visitor.visitChildren(self)
def atom(self):
localctx = PseudocodeParser.AtomContext(self, self._ctx, self.state)
self.enterRule(localctx, 62, self.RULE_atom)
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
self.state = 511
_la = self._input.LA(1)
if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 2043904) != 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