brett-compiler 1.0.20 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3990 +1 @@
1
- // Generated from /builds/kdg-ti/programmeren-3/projecten-25-26/brett.deswert/Compiler/src/g4/Brett.g4 by ANTLR 4.13.2
2
- // jshint ignore: start
3
- import antlr4 from 'antlr4';
4
- import BrettListener from './BrettListener.js';
5
- import BrettVisitor from './BrettVisitor.js';
6
-
7
- const serializedATN = [4,1,57,342,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,
8
- 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,
9
- 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,
10
- 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,1,0,
11
- 5,0,56,8,0,10,0,12,0,59,9,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
12
- 1,1,1,1,1,1,1,1,3,1,76,8,1,1,2,1,2,5,2,80,8,2,10,2,12,2,83,9,2,1,2,1,2,1,
13
- 3,1,3,1,3,1,3,3,3,91,8,3,1,3,1,3,3,3,95,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,
14
- 1,3,1,3,1,3,3,3,107,8,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,116,8,4,1,5,1,5,
15
- 1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,3,7,136,
16
- 8,7,1,7,3,7,139,8,7,1,7,1,7,3,7,143,8,7,1,7,1,7,1,7,1,8,1,8,1,8,4,8,151,
17
- 8,8,11,8,12,8,152,1,8,3,8,156,8,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,10,1,10,
18
- 1,10,1,10,1,11,1,11,3,11,171,8,11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,
19
- 1,14,1,14,1,14,1,15,1,15,1,15,1,15,3,15,188,8,15,1,15,1,15,1,15,3,15,193,
20
- 8,15,1,15,1,15,1,16,1,16,1,16,5,16,200,8,16,10,16,12,16,203,9,16,1,17,1,
21
- 17,1,17,3,17,208,8,17,1,18,1,18,1,18,1,18,1,18,5,18,215,8,18,10,18,12,18,
22
- 218,9,18,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,3,20,229,8,20,1,20,
23
- 1,20,1,20,1,20,3,20,235,8,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,
24
- 3,21,246,8,21,1,21,1,21,1,21,3,21,251,8,21,1,21,1,21,1,21,1,21,1,21,1,21,
25
- 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,
26
- 21,1,21,5,21,275,8,21,10,21,12,21,278,9,21,1,22,1,22,1,22,1,22,1,22,1,22,
27
- 1,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,293,8,22,1,22,1,22,1,22,3,22,298,
28
- 8,22,1,23,1,23,1,23,1,23,5,23,304,8,23,10,23,12,23,307,9,23,3,23,309,8,23,
29
- 1,23,1,23,1,24,1,24,1,24,1,24,5,24,317,8,24,10,24,12,24,320,9,24,3,24,322,
30
- 8,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,3,25,332,8,25,1,26,1,26,1,26,
31
- 5,26,337,8,26,10,26,12,26,340,9,26,1,26,0,2,36,42,27,0,2,4,6,8,10,12,14,
32
- 16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,0,6,3,0,2,5,25,
33
- 25,54,54,1,0,6,7,1,0,40,41,1,0,38,39,1,0,34,37,1,0,32,33,373,0,57,1,0,0,
34
- 0,2,75,1,0,0,0,4,77,1,0,0,0,6,106,1,0,0,0,8,108,1,0,0,0,10,117,1,0,0,0,12,
35
- 123,1,0,0,0,14,131,1,0,0,0,16,147,1,0,0,0,18,159,1,0,0,0,20,164,1,0,0,0,
36
- 22,168,1,0,0,0,24,174,1,0,0,0,26,177,1,0,0,0,28,180,1,0,0,0,30,183,1,0,0,
37
- 0,32,196,1,0,0,0,34,204,1,0,0,0,36,209,1,0,0,0,38,219,1,0,0,0,40,221,1,0,
38
- 0,0,42,250,1,0,0,0,44,297,1,0,0,0,46,299,1,0,0,0,48,312,1,0,0,0,50,331,1,
39
- 0,0,0,52,333,1,0,0,0,54,56,3,2,1,0,55,54,1,0,0,0,56,59,1,0,0,0,57,55,1,0,
40
- 0,0,57,58,1,0,0,0,58,60,1,0,0,0,59,57,1,0,0,0,60,61,5,0,0,1,61,1,1,0,0,0,
41
- 62,76,3,6,3,0,63,76,3,30,15,0,64,76,3,8,4,0,65,76,3,10,5,0,66,76,3,14,7,
42
- 0,67,76,3,16,8,0,68,76,3,22,11,0,69,76,3,28,14,0,70,76,3,4,2,0,71,76,3,24,
43
- 12,0,72,76,3,26,13,0,73,76,3,12,6,0,74,76,3,40,20,0,75,62,1,0,0,0,75,63,
44
- 1,0,0,0,75,64,1,0,0,0,75,65,1,0,0,0,75,66,1,0,0,0,75,67,1,0,0,0,75,68,1,
45
- 0,0,0,75,69,1,0,0,0,75,70,1,0,0,0,75,71,1,0,0,0,75,72,1,0,0,0,75,73,1,0,
46
- 0,0,75,74,1,0,0,0,76,3,1,0,0,0,77,81,5,49,0,0,78,80,3,2,1,0,79,78,1,0,0,
47
- 0,80,83,1,0,0,0,81,79,1,0,0,0,81,82,1,0,0,0,82,84,1,0,0,0,83,81,1,0,0,0,
48
- 84,85,5,50,0,0,85,5,1,0,0,0,86,87,5,11,0,0,87,90,5,54,0,0,88,89,5,44,0,0,
49
- 89,91,3,36,18,0,90,88,1,0,0,0,90,91,1,0,0,0,91,94,1,0,0,0,92,93,5,42,0,0,
50
- 93,95,3,42,21,0,94,92,1,0,0,0,94,95,1,0,0,0,95,96,1,0,0,0,96,107,5,43,0,
51
- 0,97,98,5,12,0,0,98,99,5,54,0,0,99,100,5,44,0,0,100,101,3,36,18,0,101,102,
52
- 1,0,0,0,102,103,5,42,0,0,103,104,3,42,21,0,104,105,5,43,0,0,105,107,1,0,
53
- 0,0,106,86,1,0,0,0,106,97,1,0,0,0,107,7,1,0,0,0,108,109,5,14,0,0,109,110,
54
- 5,47,0,0,110,111,3,42,21,0,111,112,5,48,0,0,112,115,3,4,2,0,113,114,5,15,
55
- 0,0,114,116,3,4,2,0,115,113,1,0,0,0,115,116,1,0,0,0,116,9,1,0,0,0,117,118,
56
- 5,16,0,0,118,119,5,47,0,0,119,120,3,42,21,0,120,121,5,48,0,0,121,122,3,4,
57
- 2,0,122,11,1,0,0,0,123,124,5,18,0,0,124,125,3,4,2,0,125,126,5,16,0,0,126,
58
- 127,5,47,0,0,127,128,3,42,21,0,128,129,5,48,0,0,129,130,5,43,0,0,130,13,
59
- 1,0,0,0,131,132,5,17,0,0,132,135,5,47,0,0,133,136,3,6,3,0,134,136,3,28,14,
60
- 0,135,133,1,0,0,0,135,134,1,0,0,0,135,136,1,0,0,0,136,138,1,0,0,0,137,139,
61
- 3,42,21,0,138,137,1,0,0,0,138,139,1,0,0,0,139,140,1,0,0,0,140,142,5,43,0,
62
- 0,141,143,3,42,21,0,142,141,1,0,0,0,142,143,1,0,0,0,143,144,1,0,0,0,144,
63
- 145,5,48,0,0,145,146,3,4,2,0,146,15,1,0,0,0,147,148,5,26,0,0,148,150,5,49,
64
- 0,0,149,151,3,18,9,0,150,149,1,0,0,0,151,152,1,0,0,0,152,150,1,0,0,0,152,
65
- 153,1,0,0,0,153,155,1,0,0,0,154,156,3,20,10,0,155,154,1,0,0,0,155,156,1,
66
- 0,0,0,156,157,1,0,0,0,157,158,5,50,0,0,158,17,1,0,0,0,159,160,5,27,0,0,160,
67
- 161,3,42,21,0,161,162,5,53,0,0,162,163,3,4,2,0,163,19,1,0,0,0,164,165,5,
68
- 28,0,0,165,166,5,53,0,0,166,167,3,4,2,0,167,21,1,0,0,0,168,170,5,29,0,0,
69
- 169,171,3,42,21,0,170,169,1,0,0,0,170,171,1,0,0,0,171,172,1,0,0,0,172,173,
70
- 5,43,0,0,173,23,1,0,0,0,174,175,5,22,0,0,175,176,5,43,0,0,176,25,1,0,0,0,
71
- 177,178,5,23,0,0,178,179,5,43,0,0,179,27,1,0,0,0,180,181,3,42,21,0,181,182,
72
- 5,43,0,0,182,29,1,0,0,0,183,184,5,13,0,0,184,185,5,54,0,0,185,187,5,47,0,
73
- 0,186,188,3,32,16,0,187,186,1,0,0,0,187,188,1,0,0,0,188,189,1,0,0,0,189,
74
- 192,5,48,0,0,190,191,5,44,0,0,191,193,3,36,18,0,192,190,1,0,0,0,192,193,
75
- 1,0,0,0,193,194,1,0,0,0,194,195,3,4,2,0,195,31,1,0,0,0,196,201,3,34,17,0,
76
- 197,198,5,45,0,0,198,200,3,34,17,0,199,197,1,0,0,0,200,203,1,0,0,0,201,199,
77
- 1,0,0,0,201,202,1,0,0,0,202,33,1,0,0,0,203,201,1,0,0,0,204,207,5,54,0,0,
78
- 205,206,5,44,0,0,206,208,3,36,18,0,207,205,1,0,0,0,207,208,1,0,0,0,208,35,
79
- 1,0,0,0,209,210,6,18,-1,0,210,211,3,38,19,0,211,216,1,0,0,0,212,213,10,1,
80
- 0,0,213,215,5,1,0,0,214,212,1,0,0,0,215,218,1,0,0,0,216,214,1,0,0,0,216,
81
- 217,1,0,0,0,217,37,1,0,0,0,218,216,1,0,0,0,219,220,7,0,0,0,220,39,1,0,0,
82
- 0,221,222,5,19,0,0,222,223,3,4,2,0,223,224,5,20,0,0,224,225,5,47,0,0,225,
83
- 228,5,54,0,0,226,227,5,44,0,0,227,229,3,36,18,0,228,226,1,0,0,0,228,229,
84
- 1,0,0,0,229,230,1,0,0,0,230,231,5,48,0,0,231,234,3,4,2,0,232,233,5,21,0,
85
- 0,233,235,3,4,2,0,234,232,1,0,0,0,234,235,1,0,0,0,235,41,1,0,0,0,236,237,
86
- 6,21,-1,0,237,251,3,44,22,0,238,239,5,54,0,0,239,240,5,42,0,0,240,251,3,
87
- 42,21,6,241,242,5,24,0,0,242,243,5,54,0,0,243,245,5,47,0,0,244,246,3,52,
88
- 26,0,245,244,1,0,0,0,245,246,1,0,0,0,246,247,1,0,0,0,247,251,5,48,0,0,248,
89
- 249,7,1,0,0,249,251,3,42,21,1,250,236,1,0,0,0,250,238,1,0,0,0,250,241,1,
90
- 0,0,0,250,248,1,0,0,0,251,276,1,0,0,0,252,253,10,10,0,0,253,254,7,2,0,0,
91
- 254,275,3,42,21,11,255,256,10,9,0,0,256,257,7,3,0,0,257,275,3,42,21,10,258,
92
- 259,10,8,0,0,259,260,7,4,0,0,260,275,3,42,21,9,261,262,10,7,0,0,262,263,
93
- 7,5,0,0,263,275,3,42,21,8,264,265,10,5,0,0,265,266,5,51,0,0,266,267,3,42,
94
- 21,0,267,268,5,52,0,0,268,275,1,0,0,0,269,270,10,4,0,0,270,271,5,46,0,0,
95
- 271,275,5,54,0,0,272,273,10,2,0,0,273,275,7,1,0,0,274,252,1,0,0,0,274,255,
96
- 1,0,0,0,274,258,1,0,0,0,274,261,1,0,0,0,274,264,1,0,0,0,274,269,1,0,0,0,
97
- 274,272,1,0,0,0,275,278,1,0,0,0,276,274,1,0,0,0,276,277,1,0,0,0,277,43,1,
98
- 0,0,0,278,276,1,0,0,0,279,298,5,30,0,0,280,298,5,31,0,0,281,298,5,8,0,0,
99
- 282,298,5,9,0,0,283,298,5,10,0,0,284,298,5,54,0,0,285,286,5,47,0,0,286,287,
100
- 3,42,21,0,287,288,5,48,0,0,288,298,1,0,0,0,289,290,5,54,0,0,290,292,5,47,
101
- 0,0,291,293,3,52,26,0,292,291,1,0,0,0,292,293,1,0,0,0,293,294,1,0,0,0,294,
102
- 298,5,48,0,0,295,298,3,46,23,0,296,298,3,48,24,0,297,279,1,0,0,0,297,280,
103
- 1,0,0,0,297,281,1,0,0,0,297,282,1,0,0,0,297,283,1,0,0,0,297,284,1,0,0,0,
104
- 297,285,1,0,0,0,297,289,1,0,0,0,297,295,1,0,0,0,297,296,1,0,0,0,298,45,1,
105
- 0,0,0,299,308,5,51,0,0,300,305,3,42,21,0,301,302,5,45,0,0,302,304,3,42,21,
106
- 0,303,301,1,0,0,0,304,307,1,0,0,0,305,303,1,0,0,0,305,306,1,0,0,0,306,309,
107
- 1,0,0,0,307,305,1,0,0,0,308,300,1,0,0,0,308,309,1,0,0,0,309,310,1,0,0,0,
108
- 310,311,5,52,0,0,311,47,1,0,0,0,312,321,5,49,0,0,313,318,3,50,25,0,314,315,
109
- 5,45,0,0,315,317,3,50,25,0,316,314,1,0,0,0,317,320,1,0,0,0,318,316,1,0,0,
110
- 0,318,319,1,0,0,0,319,322,1,0,0,0,320,318,1,0,0,0,321,313,1,0,0,0,321,322,
111
- 1,0,0,0,322,323,1,0,0,0,323,324,5,50,0,0,324,49,1,0,0,0,325,326,5,54,0,0,
112
- 326,327,5,44,0,0,327,332,3,42,21,0,328,329,5,31,0,0,329,330,5,44,0,0,330,
113
- 332,3,42,21,0,331,325,1,0,0,0,331,328,1,0,0,0,332,51,1,0,0,0,333,338,3,42,
114
- 21,0,334,335,5,45,0,0,335,337,3,42,21,0,336,334,1,0,0,0,337,340,1,0,0,0,
115
- 338,336,1,0,0,0,338,339,1,0,0,0,339,53,1,0,0,0,340,338,1,0,0,0,32,57,75,
116
- 81,90,94,106,115,135,138,142,152,155,170,187,192,201,207,216,228,234,245,
117
- 250,274,276,292,297,305,308,318,321,331,338];
118
-
119
-
120
- const atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);
121
-
122
- const decisionsToDFA = atn.decisionToState.map( (ds, index) => new antlr4.dfa.DFA(ds, index) );
123
-
124
- const sharedContextCache = new antlr4.atn.PredictionContextCache();
125
-
126
- export default class BrettParser extends antlr4.Parser {
127
-
128
- static grammarFileName = "Brett.g4";
129
- static literalNames = [ null, "'[]'", "'string'", "'number'", "'bool'",
130
- "'any'", "'++'", "'--'", "'true'", "'false'",
131
- "'nil'", "'let'", "'const'", "'def'", "'if'",
132
- "'else'", "'while'", "'for'", "'do'", "'try'",
133
- "'catch'", "'finally'", "'break'", "'continue'",
134
- "'new'", "'void'", "'switch'", "'case'", "'default'",
135
- "'return'", null, null, "'=='", "'!='", "'<='",
136
- "'>='", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'",
137
- "'='", "';'", "':'", "','", "'.'", "'('", "')'",
138
- "'{'", "'}'", "'['", "']'", "'=>'" ];
139
- static symbolicNames = [ null, null, null, null, null, null, null, null,
140
- null, null, null, "LET", "CONST", "DEF", "IF",
141
- "ELSE", "WHILE", "FOR", "DO", "TRY", "CATCH",
142
- "FINALLY", "BREAK", "CONTINUE", "NEW", "VOID",
143
- "SWITCH", "CASE", "DEFAULT", "RETURN", "NUMBER",
144
- "STRING", "EQ", "NEQ", "LE", "GE", "LT", "GT",
145
- "PLUS", "MINUS", "STAR", "SLASH", "ASSIGN",
146
- "SEMI", "COLON", "COMMA", "DOT", "LPAREN",
147
- "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK",
148
- "ARROW", "IDENTIFIER", "WS", "LINE_COMMENT",
149
- "BLOCK_COMMENT" ];
150
- static ruleNames = [ "program", "statement", "block", "variableDeclaration",
151
- "ifStatement", "whileStatement", "doWhileStatement",
152
- "forStatement", "switchStatement", "switchCase",
153
- "defaultCase", "returnStatement", "breakStatement",
154
- "continueStatement", "expressionStatement", "functionDeclaration",
155
- "parameterList", "parameter", "type", "baseType",
156
- "tryCatchStatement", "expression", "primary", "arrayLiteral",
157
- "objectLiteral", "property", "argList" ];
158
-
159
- constructor(input) {
160
- super(input);
161
- this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache);
162
- this.ruleNames = BrettParser.ruleNames;
163
- this.literalNames = BrettParser.literalNames;
164
- this.symbolicNames = BrettParser.symbolicNames;
165
- }
166
-
167
- sempred(localctx, ruleIndex, predIndex) {
168
- switch(ruleIndex) {
169
- case 18:
170
- return this.type_sempred(localctx, predIndex);
171
- case 21:
172
- return this.expression_sempred(localctx, predIndex);
173
- default:
174
- throw "No predicate with index:" + ruleIndex;
175
- }
176
- }
177
-
178
- type_sempred(localctx, predIndex) {
179
- switch(predIndex) {
180
- case 0:
181
- return this.precpred(this._ctx, 1);
182
- default:
183
- throw "No predicate with index:" + predIndex;
184
- }
185
- };
186
-
187
- expression_sempred(localctx, predIndex) {
188
- switch(predIndex) {
189
- case 1:
190
- return this.precpred(this._ctx, 10);
191
- case 2:
192
- return this.precpred(this._ctx, 9);
193
- case 3:
194
- return this.precpred(this._ctx, 8);
195
- case 4:
196
- return this.precpred(this._ctx, 7);
197
- case 5:
198
- return this.precpred(this._ctx, 5);
199
- case 6:
200
- return this.precpred(this._ctx, 4);
201
- case 7:
202
- return this.precpred(this._ctx, 2);
203
- default:
204
- throw "No predicate with index:" + predIndex;
205
- }
206
- };
207
-
208
-
209
-
210
-
211
- program() {
212
- let localctx = new ProgramContext(this, this._ctx, this.state);
213
- this.enterRule(localctx, 0, BrettParser.RULE_program);
214
- var _la = 0;
215
- try {
216
- this.enterOuterAlt(localctx, 1);
217
- this.state = 57;
218
- this._errHandler.sync(this);
219
- _la = this._input.LA(1);
220
- while((((_la) & ~0x1f) === 0 && ((1 << _la) & 3855581120) !== 0) || ((((_la - 47)) & ~0x1f) === 0 && ((1 << (_la - 47)) & 149) !== 0)) {
221
- this.state = 54;
222
- this.statement();
223
- this.state = 59;
224
- this._errHandler.sync(this);
225
- _la = this._input.LA(1);
226
- }
227
- this.state = 60;
228
- this.match(BrettParser.EOF);
229
- } catch (re) {
230
- if(re instanceof antlr4.error.RecognitionException) {
231
- localctx.exception = re;
232
- this._errHandler.reportError(this, re);
233
- this._errHandler.recover(this, re);
234
- } else {
235
- throw re;
236
- }
237
- } finally {
238
- this.exitRule();
239
- }
240
- return localctx;
241
- }
242
-
243
-
244
-
245
- statement() {
246
- let localctx = new StatementContext(this, this._ctx, this.state);
247
- this.enterRule(localctx, 2, BrettParser.RULE_statement);
248
- try {
249
- this.state = 75;
250
- this._errHandler.sync(this);
251
- var la_ = this._interp.adaptivePredict(this._input,1,this._ctx);
252
- switch(la_) {
253
- case 1:
254
- this.enterOuterAlt(localctx, 1);
255
- this.state = 62;
256
- this.variableDeclaration();
257
- break;
258
-
259
- case 2:
260
- this.enterOuterAlt(localctx, 2);
261
- this.state = 63;
262
- this.functionDeclaration();
263
- break;
264
-
265
- case 3:
266
- this.enterOuterAlt(localctx, 3);
267
- this.state = 64;
268
- this.ifStatement();
269
- break;
270
-
271
- case 4:
272
- this.enterOuterAlt(localctx, 4);
273
- this.state = 65;
274
- this.whileStatement();
275
- break;
276
-
277
- case 5:
278
- this.enterOuterAlt(localctx, 5);
279
- this.state = 66;
280
- this.forStatement();
281
- break;
282
-
283
- case 6:
284
- this.enterOuterAlt(localctx, 6);
285
- this.state = 67;
286
- this.switchStatement();
287
- break;
288
-
289
- case 7:
290
- this.enterOuterAlt(localctx, 7);
291
- this.state = 68;
292
- this.returnStatement();
293
- break;
294
-
295
- case 8:
296
- this.enterOuterAlt(localctx, 8);
297
- this.state = 69;
298
- this.expressionStatement();
299
- break;
300
-
301
- case 9:
302
- this.enterOuterAlt(localctx, 9);
303
- this.state = 70;
304
- this.block();
305
- break;
306
-
307
- case 10:
308
- this.enterOuterAlt(localctx, 10);
309
- this.state = 71;
310
- this.breakStatement();
311
- break;
312
-
313
- case 11:
314
- this.enterOuterAlt(localctx, 11);
315
- this.state = 72;
316
- this.continueStatement();
317
- break;
318
-
319
- case 12:
320
- this.enterOuterAlt(localctx, 12);
321
- this.state = 73;
322
- this.doWhileStatement();
323
- break;
324
-
325
- case 13:
326
- this.enterOuterAlt(localctx, 13);
327
- this.state = 74;
328
- this.tryCatchStatement();
329
- break;
330
-
331
- }
332
- } catch (re) {
333
- if(re instanceof antlr4.error.RecognitionException) {
334
- localctx.exception = re;
335
- this._errHandler.reportError(this, re);
336
- this._errHandler.recover(this, re);
337
- } else {
338
- throw re;
339
- }
340
- } finally {
341
- this.exitRule();
342
- }
343
- return localctx;
344
- }
345
-
346
-
347
-
348
- block() {
349
- let localctx = new BlockContext(this, this._ctx, this.state);
350
- this.enterRule(localctx, 4, BrettParser.RULE_block);
351
- var _la = 0;
352
- try {
353
- this.enterOuterAlt(localctx, 1);
354
- this.state = 77;
355
- this.match(BrettParser.LBRACE);
356
- this.state = 81;
357
- this._errHandler.sync(this);
358
- _la = this._input.LA(1);
359
- while((((_la) & ~0x1f) === 0 && ((1 << _la) & 3855581120) !== 0) || ((((_la - 47)) & ~0x1f) === 0 && ((1 << (_la - 47)) & 149) !== 0)) {
360
- this.state = 78;
361
- this.statement();
362
- this.state = 83;
363
- this._errHandler.sync(this);
364
- _la = this._input.LA(1);
365
- }
366
- this.state = 84;
367
- this.match(BrettParser.RBRACE);
368
- } catch (re) {
369
- if(re instanceof antlr4.error.RecognitionException) {
370
- localctx.exception = re;
371
- this._errHandler.reportError(this, re);
372
- this._errHandler.recover(this, re);
373
- } else {
374
- throw re;
375
- }
376
- } finally {
377
- this.exitRule();
378
- }
379
- return localctx;
380
- }
381
-
382
-
383
-
384
- variableDeclaration() {
385
- let localctx = new VariableDeclarationContext(this, this._ctx, this.state);
386
- this.enterRule(localctx, 6, BrettParser.RULE_variableDeclaration);
387
- var _la = 0;
388
- try {
389
- this.state = 106;
390
- this._errHandler.sync(this);
391
- switch(this._input.LA(1)) {
392
- case 11:
393
- this.enterOuterAlt(localctx, 1);
394
- this.state = 86;
395
- this.match(BrettParser.LET);
396
- this.state = 87;
397
- this.match(BrettParser.IDENTIFIER);
398
- this.state = 90;
399
- this._errHandler.sync(this);
400
- _la = this._input.LA(1);
401
- if(_la===44) {
402
- this.state = 88;
403
- this.match(BrettParser.COLON);
404
- this.state = 89;
405
- this.type(0);
406
- }
407
-
408
- this.state = 94;
409
- this._errHandler.sync(this);
410
- _la = this._input.LA(1);
411
- if(_la===42) {
412
- this.state = 92;
413
- this.match(BrettParser.ASSIGN);
414
- this.state = 93;
415
- this.expression(0);
416
- }
417
-
418
- this.state = 96;
419
- this.match(BrettParser.SEMI);
420
- break;
421
- case 12:
422
- this.enterOuterAlt(localctx, 2);
423
- this.state = 97;
424
- this.match(BrettParser.CONST);
425
- this.state = 98;
426
- this.match(BrettParser.IDENTIFIER);
427
-
428
- this.state = 99;
429
- this.match(BrettParser.COLON);
430
- this.state = 100;
431
- this.type(0);
432
- this.state = 102;
433
- this.match(BrettParser.ASSIGN);
434
- this.state = 103;
435
- this.expression(0);
436
- this.state = 104;
437
- this.match(BrettParser.SEMI);
438
- break;
439
- default:
440
- throw new antlr4.error.NoViableAltException(this);
441
- }
442
- } catch (re) {
443
- if(re instanceof antlr4.error.RecognitionException) {
444
- localctx.exception = re;
445
- this._errHandler.reportError(this, re);
446
- this._errHandler.recover(this, re);
447
- } else {
448
- throw re;
449
- }
450
- } finally {
451
- this.exitRule();
452
- }
453
- return localctx;
454
- }
455
-
456
-
457
-
458
- ifStatement() {
459
- let localctx = new IfStatementContext(this, this._ctx, this.state);
460
- this.enterRule(localctx, 8, BrettParser.RULE_ifStatement);
461
- var _la = 0;
462
- try {
463
- this.enterOuterAlt(localctx, 1);
464
- this.state = 108;
465
- this.match(BrettParser.IF);
466
- this.state = 109;
467
- this.match(BrettParser.LPAREN);
468
- this.state = 110;
469
- this.expression(0);
470
- this.state = 111;
471
- this.match(BrettParser.RPAREN);
472
- this.state = 112;
473
- this.block();
474
- this.state = 115;
475
- this._errHandler.sync(this);
476
- _la = this._input.LA(1);
477
- if(_la===15) {
478
- this.state = 113;
479
- this.match(BrettParser.ELSE);
480
- this.state = 114;
481
- this.block();
482
- }
483
-
484
- } catch (re) {
485
- if(re instanceof antlr4.error.RecognitionException) {
486
- localctx.exception = re;
487
- this._errHandler.reportError(this, re);
488
- this._errHandler.recover(this, re);
489
- } else {
490
- throw re;
491
- }
492
- } finally {
493
- this.exitRule();
494
- }
495
- return localctx;
496
- }
497
-
498
-
499
-
500
- whileStatement() {
501
- let localctx = new WhileStatementContext(this, this._ctx, this.state);
502
- this.enterRule(localctx, 10, BrettParser.RULE_whileStatement);
503
- try {
504
- this.enterOuterAlt(localctx, 1);
505
- this.state = 117;
506
- this.match(BrettParser.WHILE);
507
- this.state = 118;
508
- this.match(BrettParser.LPAREN);
509
- this.state = 119;
510
- this.expression(0);
511
- this.state = 120;
512
- this.match(BrettParser.RPAREN);
513
- this.state = 121;
514
- this.block();
515
- } catch (re) {
516
- if(re instanceof antlr4.error.RecognitionException) {
517
- localctx.exception = re;
518
- this._errHandler.reportError(this, re);
519
- this._errHandler.recover(this, re);
520
- } else {
521
- throw re;
522
- }
523
- } finally {
524
- this.exitRule();
525
- }
526
- return localctx;
527
- }
528
-
529
-
530
-
531
- doWhileStatement() {
532
- let localctx = new DoWhileStatementContext(this, this._ctx, this.state);
533
- this.enterRule(localctx, 12, BrettParser.RULE_doWhileStatement);
534
- try {
535
- this.enterOuterAlt(localctx, 1);
536
- this.state = 123;
537
- this.match(BrettParser.DO);
538
- this.state = 124;
539
- this.block();
540
- this.state = 125;
541
- this.match(BrettParser.WHILE);
542
- this.state = 126;
543
- this.match(BrettParser.LPAREN);
544
- this.state = 127;
545
- this.expression(0);
546
- this.state = 128;
547
- this.match(BrettParser.RPAREN);
548
- this.state = 129;
549
- this.match(BrettParser.SEMI);
550
- } catch (re) {
551
- if(re instanceof antlr4.error.RecognitionException) {
552
- localctx.exception = re;
553
- this._errHandler.reportError(this, re);
554
- this._errHandler.recover(this, re);
555
- } else {
556
- throw re;
557
- }
558
- } finally {
559
- this.exitRule();
560
- }
561
- return localctx;
562
- }
563
-
564
-
565
-
566
- forStatement() {
567
- let localctx = new ForStatementContext(this, this._ctx, this.state);
568
- this.enterRule(localctx, 14, BrettParser.RULE_forStatement);
569
- var _la = 0;
570
- try {
571
- this.enterOuterAlt(localctx, 1);
572
- this.state = 131;
573
- this.match(BrettParser.FOR);
574
- this.state = 132;
575
- this.match(BrettParser.LPAREN);
576
- this.state = 135;
577
- this._errHandler.sync(this);
578
- var la_ = this._interp.adaptivePredict(this._input,7,this._ctx);
579
- if(la_===1) {
580
- this.state = 133;
581
- this.variableDeclaration();
582
-
583
- } else if(la_===2) {
584
- this.state = 134;
585
- this.expressionStatement();
586
-
587
- }
588
- this.state = 138;
589
- this._errHandler.sync(this);
590
- _la = this._input.LA(1);
591
- if((((_la) & ~0x1f) === 0 && ((1 << _la) & 3238004672) !== 0) || ((((_la - 47)) & ~0x1f) === 0 && ((1 << (_la - 47)) & 149) !== 0)) {
592
- this.state = 137;
593
- this.expression(0);
594
- }
595
-
596
- this.state = 140;
597
- this.match(BrettParser.SEMI);
598
- this.state = 142;
599
- this._errHandler.sync(this);
600
- _la = this._input.LA(1);
601
- if((((_la) & ~0x1f) === 0 && ((1 << _la) & 3238004672) !== 0) || ((((_la - 47)) & ~0x1f) === 0 && ((1 << (_la - 47)) & 149) !== 0)) {
602
- this.state = 141;
603
- this.expression(0);
604
- }
605
-
606
- this.state = 144;
607
- this.match(BrettParser.RPAREN);
608
- this.state = 145;
609
- this.block();
610
- } catch (re) {
611
- if(re instanceof antlr4.error.RecognitionException) {
612
- localctx.exception = re;
613
- this._errHandler.reportError(this, re);
614
- this._errHandler.recover(this, re);
615
- } else {
616
- throw re;
617
- }
618
- } finally {
619
- this.exitRule();
620
- }
621
- return localctx;
622
- }
623
-
624
-
625
-
626
- switchStatement() {
627
- let localctx = new SwitchStatementContext(this, this._ctx, this.state);
628
- this.enterRule(localctx, 16, BrettParser.RULE_switchStatement);
629
- var _la = 0;
630
- try {
631
- this.enterOuterAlt(localctx, 1);
632
- this.state = 147;
633
- this.match(BrettParser.SWITCH);
634
- this.state = 148;
635
- this.match(BrettParser.LBRACE);
636
- this.state = 150;
637
- this._errHandler.sync(this);
638
- _la = this._input.LA(1);
639
- do {
640
- this.state = 149;
641
- this.switchCase();
642
- this.state = 152;
643
- this._errHandler.sync(this);
644
- _la = this._input.LA(1);
645
- } while(_la===27);
646
- this.state = 155;
647
- this._errHandler.sync(this);
648
- _la = this._input.LA(1);
649
- if(_la===28) {
650
- this.state = 154;
651
- this.defaultCase();
652
- }
653
-
654
- this.state = 157;
655
- this.match(BrettParser.RBRACE);
656
- } catch (re) {
657
- if(re instanceof antlr4.error.RecognitionException) {
658
- localctx.exception = re;
659
- this._errHandler.reportError(this, re);
660
- this._errHandler.recover(this, re);
661
- } else {
662
- throw re;
663
- }
664
- } finally {
665
- this.exitRule();
666
- }
667
- return localctx;
668
- }
669
-
670
-
671
-
672
- switchCase() {
673
- let localctx = new SwitchCaseContext(this, this._ctx, this.state);
674
- this.enterRule(localctx, 18, BrettParser.RULE_switchCase);
675
- try {
676
- this.enterOuterAlt(localctx, 1);
677
- this.state = 159;
678
- this.match(BrettParser.CASE);
679
- this.state = 160;
680
- this.expression(0);
681
- this.state = 161;
682
- this.match(BrettParser.ARROW);
683
- this.state = 162;
684
- this.block();
685
- } catch (re) {
686
- if(re instanceof antlr4.error.RecognitionException) {
687
- localctx.exception = re;
688
- this._errHandler.reportError(this, re);
689
- this._errHandler.recover(this, re);
690
- } else {
691
- throw re;
692
- }
693
- } finally {
694
- this.exitRule();
695
- }
696
- return localctx;
697
- }
698
-
699
-
700
-
701
- defaultCase() {
702
- let localctx = new DefaultCaseContext(this, this._ctx, this.state);
703
- this.enterRule(localctx, 20, BrettParser.RULE_defaultCase);
704
- try {
705
- this.enterOuterAlt(localctx, 1);
706
- this.state = 164;
707
- this.match(BrettParser.DEFAULT);
708
- this.state = 165;
709
- this.match(BrettParser.ARROW);
710
- this.state = 166;
711
- this.block();
712
- } catch (re) {
713
- if(re instanceof antlr4.error.RecognitionException) {
714
- localctx.exception = re;
715
- this._errHandler.reportError(this, re);
716
- this._errHandler.recover(this, re);
717
- } else {
718
- throw re;
719
- }
720
- } finally {
721
- this.exitRule();
722
- }
723
- return localctx;
724
- }
725
-
726
-
727
-
728
- returnStatement() {
729
- let localctx = new ReturnStatementContext(this, this._ctx, this.state);
730
- this.enterRule(localctx, 22, BrettParser.RULE_returnStatement);
731
- var _la = 0;
732
- try {
733
- this.enterOuterAlt(localctx, 1);
734
- this.state = 168;
735
- this.match(BrettParser.RETURN);
736
- this.state = 170;
737
- this._errHandler.sync(this);
738
- _la = this._input.LA(1);
739
- if((((_la) & ~0x1f) === 0 && ((1 << _la) & 3238004672) !== 0) || ((((_la - 47)) & ~0x1f) === 0 && ((1 << (_la - 47)) & 149) !== 0)) {
740
- this.state = 169;
741
- this.expression(0);
742
- }
743
-
744
- this.state = 172;
745
- this.match(BrettParser.SEMI);
746
- } catch (re) {
747
- if(re instanceof antlr4.error.RecognitionException) {
748
- localctx.exception = re;
749
- this._errHandler.reportError(this, re);
750
- this._errHandler.recover(this, re);
751
- } else {
752
- throw re;
753
- }
754
- } finally {
755
- this.exitRule();
756
- }
757
- return localctx;
758
- }
759
-
760
-
761
-
762
- breakStatement() {
763
- let localctx = new BreakStatementContext(this, this._ctx, this.state);
764
- this.enterRule(localctx, 24, BrettParser.RULE_breakStatement);
765
- try {
766
- this.enterOuterAlt(localctx, 1);
767
- this.state = 174;
768
- this.match(BrettParser.BREAK);
769
- this.state = 175;
770
- this.match(BrettParser.SEMI);
771
- } catch (re) {
772
- if(re instanceof antlr4.error.RecognitionException) {
773
- localctx.exception = re;
774
- this._errHandler.reportError(this, re);
775
- this._errHandler.recover(this, re);
776
- } else {
777
- throw re;
778
- }
779
- } finally {
780
- this.exitRule();
781
- }
782
- return localctx;
783
- }
784
-
785
-
786
-
787
- continueStatement() {
788
- let localctx = new ContinueStatementContext(this, this._ctx, this.state);
789
- this.enterRule(localctx, 26, BrettParser.RULE_continueStatement);
790
- try {
791
- this.enterOuterAlt(localctx, 1);
792
- this.state = 177;
793
- this.match(BrettParser.CONTINUE);
794
- this.state = 178;
795
- this.match(BrettParser.SEMI);
796
- } catch (re) {
797
- if(re instanceof antlr4.error.RecognitionException) {
798
- localctx.exception = re;
799
- this._errHandler.reportError(this, re);
800
- this._errHandler.recover(this, re);
801
- } else {
802
- throw re;
803
- }
804
- } finally {
805
- this.exitRule();
806
- }
807
- return localctx;
808
- }
809
-
810
-
811
-
812
- expressionStatement() {
813
- let localctx = new ExpressionStatementContext(this, this._ctx, this.state);
814
- this.enterRule(localctx, 28, BrettParser.RULE_expressionStatement);
815
- try {
816
- this.enterOuterAlt(localctx, 1);
817
- this.state = 180;
818
- this.expression(0);
819
- this.state = 181;
820
- this.match(BrettParser.SEMI);
821
- } catch (re) {
822
- if(re instanceof antlr4.error.RecognitionException) {
823
- localctx.exception = re;
824
- this._errHandler.reportError(this, re);
825
- this._errHandler.recover(this, re);
826
- } else {
827
- throw re;
828
- }
829
- } finally {
830
- this.exitRule();
831
- }
832
- return localctx;
833
- }
834
-
835
-
836
-
837
- functionDeclaration() {
838
- let localctx = new FunctionDeclarationContext(this, this._ctx, this.state);
839
- this.enterRule(localctx, 30, BrettParser.RULE_functionDeclaration);
840
- var _la = 0;
841
- try {
842
- this.enterOuterAlt(localctx, 1);
843
- this.state = 183;
844
- this.match(BrettParser.DEF);
845
- this.state = 184;
846
- this.match(BrettParser.IDENTIFIER);
847
- this.state = 185;
848
- this.match(BrettParser.LPAREN);
849
- this.state = 187;
850
- this._errHandler.sync(this);
851
- _la = this._input.LA(1);
852
- if(_la===54) {
853
- this.state = 186;
854
- this.parameterList();
855
- }
856
-
857
- this.state = 189;
858
- this.match(BrettParser.RPAREN);
859
- this.state = 192;
860
- this._errHandler.sync(this);
861
- _la = this._input.LA(1);
862
- if(_la===44) {
863
- this.state = 190;
864
- this.match(BrettParser.COLON);
865
- this.state = 191;
866
- this.type(0);
867
- }
868
-
869
- this.state = 194;
870
- this.block();
871
- } catch (re) {
872
- if(re instanceof antlr4.error.RecognitionException) {
873
- localctx.exception = re;
874
- this._errHandler.reportError(this, re);
875
- this._errHandler.recover(this, re);
876
- } else {
877
- throw re;
878
- }
879
- } finally {
880
- this.exitRule();
881
- }
882
- return localctx;
883
- }
884
-
885
-
886
-
887
- parameterList() {
888
- let localctx = new ParameterListContext(this, this._ctx, this.state);
889
- this.enterRule(localctx, 32, BrettParser.RULE_parameterList);
890
- var _la = 0;
891
- try {
892
- this.enterOuterAlt(localctx, 1);
893
- this.state = 196;
894
- this.parameter();
895
- this.state = 201;
896
- this._errHandler.sync(this);
897
- _la = this._input.LA(1);
898
- while(_la===45) {
899
- this.state = 197;
900
- this.match(BrettParser.COMMA);
901
- this.state = 198;
902
- this.parameter();
903
- this.state = 203;
904
- this._errHandler.sync(this);
905
- _la = this._input.LA(1);
906
- }
907
- } catch (re) {
908
- if(re instanceof antlr4.error.RecognitionException) {
909
- localctx.exception = re;
910
- this._errHandler.reportError(this, re);
911
- this._errHandler.recover(this, re);
912
- } else {
913
- throw re;
914
- }
915
- } finally {
916
- this.exitRule();
917
- }
918
- return localctx;
919
- }
920
-
921
-
922
-
923
- parameter() {
924
- let localctx = new ParameterContext(this, this._ctx, this.state);
925
- this.enterRule(localctx, 34, BrettParser.RULE_parameter);
926
- var _la = 0;
927
- try {
928
- this.enterOuterAlt(localctx, 1);
929
- this.state = 204;
930
- this.match(BrettParser.IDENTIFIER);
931
- this.state = 207;
932
- this._errHandler.sync(this);
933
- _la = this._input.LA(1);
934
- if(_la===44) {
935
- this.state = 205;
936
- this.match(BrettParser.COLON);
937
- this.state = 206;
938
- this.type(0);
939
- }
940
-
941
- } catch (re) {
942
- if(re instanceof antlr4.error.RecognitionException) {
943
- localctx.exception = re;
944
- this._errHandler.reportError(this, re);
945
- this._errHandler.recover(this, re);
946
- } else {
947
- throw re;
948
- }
949
- } finally {
950
- this.exitRule();
951
- }
952
- return localctx;
953
- }
954
-
955
-
956
- type(_p) {
957
- if(_p===undefined) {
958
- _p = 0;
959
- }
960
- const _parentctx = this._ctx;
961
- const _parentState = this.state;
962
- let localctx = new TypeContext(this, this._ctx, _parentState);
963
- let _prevctx = localctx;
964
- const _startState = 36;
965
- this.enterRecursionRule(localctx, 36, BrettParser.RULE_type, _p);
966
- try {
967
- this.enterOuterAlt(localctx, 1);
968
- localctx = new SimpleTypeContext(this, localctx);
969
- this._ctx = localctx;
970
- _prevctx = localctx;
971
-
972
- this.state = 210;
973
- this.baseType();
974
- this._ctx.stop = this._input.LT(-1);
975
- this.state = 216;
976
- this._errHandler.sync(this);
977
- var _alt = this._interp.adaptivePredict(this._input,17,this._ctx)
978
- while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
979
- if(_alt===1) {
980
- if(this._parseListeners!==null) {
981
- this.triggerExitRuleEvent();
982
- }
983
- _prevctx = localctx;
984
- localctx = new ArrayTypeContext(this, new TypeContext(this, _parentctx, _parentState));
985
- this.pushNewRecursionContext(localctx, _startState, BrettParser.RULE_type);
986
- this.state = 212;
987
- if (!( this.precpred(this._ctx, 1))) {
988
- throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)");
989
- }
990
- this.state = 213;
991
- this.match(BrettParser.T__0);
992
- }
993
- this.state = 218;
994
- this._errHandler.sync(this);
995
- _alt = this._interp.adaptivePredict(this._input,17,this._ctx);
996
- }
997
-
998
- } catch( error) {
999
- if(error instanceof antlr4.error.RecognitionException) {
1000
- localctx.exception = error;
1001
- this._errHandler.reportError(this, error);
1002
- this._errHandler.recover(this, error);
1003
- } else {
1004
- throw error;
1005
- }
1006
- } finally {
1007
- this.unrollRecursionContexts(_parentctx)
1008
- }
1009
- return localctx;
1010
- }
1011
-
1012
-
1013
-
1014
- baseType() {
1015
- let localctx = new BaseTypeContext(this, this._ctx, this.state);
1016
- this.enterRule(localctx, 38, BrettParser.RULE_baseType);
1017
- var _la = 0;
1018
- try {
1019
- this.enterOuterAlt(localctx, 1);
1020
- this.state = 219;
1021
- _la = this._input.LA(1);
1022
- if(!((((_la) & ~0x1f) === 0 && ((1 << _la) & 33554492) !== 0) || _la===54)) {
1023
- this._errHandler.recoverInline(this);
1024
- }
1025
- else {
1026
- this._errHandler.reportMatch(this);
1027
- this.consume();
1028
- }
1029
- } catch (re) {
1030
- if(re instanceof antlr4.error.RecognitionException) {
1031
- localctx.exception = re;
1032
- this._errHandler.reportError(this, re);
1033
- this._errHandler.recover(this, re);
1034
- } else {
1035
- throw re;
1036
- }
1037
- } finally {
1038
- this.exitRule();
1039
- }
1040
- return localctx;
1041
- }
1042
-
1043
-
1044
-
1045
- tryCatchStatement() {
1046
- let localctx = new TryCatchStatementContext(this, this._ctx, this.state);
1047
- this.enterRule(localctx, 40, BrettParser.RULE_tryCatchStatement);
1048
- var _la = 0;
1049
- try {
1050
- this.enterOuterAlt(localctx, 1);
1051
- this.state = 221;
1052
- this.match(BrettParser.TRY);
1053
- this.state = 222;
1054
- this.block();
1055
- this.state = 223;
1056
- this.match(BrettParser.CATCH);
1057
- this.state = 224;
1058
- this.match(BrettParser.LPAREN);
1059
- this.state = 225;
1060
- this.match(BrettParser.IDENTIFIER);
1061
- this.state = 228;
1062
- this._errHandler.sync(this);
1063
- _la = this._input.LA(1);
1064
- if(_la===44) {
1065
- this.state = 226;
1066
- this.match(BrettParser.COLON);
1067
- this.state = 227;
1068
- this.type(0);
1069
- }
1070
-
1071
- this.state = 230;
1072
- this.match(BrettParser.RPAREN);
1073
- this.state = 231;
1074
- this.block();
1075
- this.state = 234;
1076
- this._errHandler.sync(this);
1077
- _la = this._input.LA(1);
1078
- if(_la===21) {
1079
- this.state = 232;
1080
- this.match(BrettParser.FINALLY);
1081
- this.state = 233;
1082
- this.block();
1083
- }
1084
-
1085
- } catch (re) {
1086
- if(re instanceof antlr4.error.RecognitionException) {
1087
- localctx.exception = re;
1088
- this._errHandler.reportError(this, re);
1089
- this._errHandler.recover(this, re);
1090
- } else {
1091
- throw re;
1092
- }
1093
- } finally {
1094
- this.exitRule();
1095
- }
1096
- return localctx;
1097
- }
1098
-
1099
-
1100
- expression(_p) {
1101
- if(_p===undefined) {
1102
- _p = 0;
1103
- }
1104
- const _parentctx = this._ctx;
1105
- const _parentState = this.state;
1106
- let localctx = new ExpressionContext(this, this._ctx, _parentState);
1107
- let _prevctx = localctx;
1108
- const _startState = 42;
1109
- this.enterRecursionRule(localctx, 42, BrettParser.RULE_expression, _p);
1110
- var _la = 0;
1111
- try {
1112
- this.enterOuterAlt(localctx, 1);
1113
- this.state = 250;
1114
- this._errHandler.sync(this);
1115
- var la_ = this._interp.adaptivePredict(this._input,21,this._ctx);
1116
- switch(la_) {
1117
- case 1:
1118
- localctx = new PrimaryExpressionContext(this, localctx);
1119
- this._ctx = localctx;
1120
- _prevctx = localctx;
1121
-
1122
- this.state = 237;
1123
- this.primary();
1124
- break;
1125
-
1126
- case 2:
1127
- localctx = new AssignmentExpressionContext(this, localctx);
1128
- this._ctx = localctx;
1129
- _prevctx = localctx;
1130
- this.state = 238;
1131
- this.match(BrettParser.IDENTIFIER);
1132
- this.state = 239;
1133
- this.match(BrettParser.ASSIGN);
1134
- this.state = 240;
1135
- this.expression(6);
1136
- break;
1137
-
1138
- case 3:
1139
- localctx = new NewExpressionContext(this, localctx);
1140
- this._ctx = localctx;
1141
- _prevctx = localctx;
1142
- this.state = 241;
1143
- this.match(BrettParser.NEW);
1144
- this.state = 242;
1145
- this.match(BrettParser.IDENTIFIER);
1146
- this.state = 243;
1147
- this.match(BrettParser.LPAREN);
1148
- this.state = 245;
1149
- this._errHandler.sync(this);
1150
- _la = this._input.LA(1);
1151
- if((((_la) & ~0x1f) === 0 && ((1 << _la) & 3238004672) !== 0) || ((((_la - 47)) & ~0x1f) === 0 && ((1 << (_la - 47)) & 149) !== 0)) {
1152
- this.state = 244;
1153
- this.argList();
1154
- }
1155
-
1156
- this.state = 247;
1157
- this.match(BrettParser.RPAREN);
1158
- break;
1159
-
1160
- case 4:
1161
- localctx = new PreIncrementDecrementContext(this, localctx);
1162
- this._ctx = localctx;
1163
- _prevctx = localctx;
1164
- this.state = 248;
1165
- _la = this._input.LA(1);
1166
- if(!(_la===6 || _la===7)) {
1167
- this._errHandler.recoverInline(this);
1168
- }
1169
- else {
1170
- this._errHandler.reportMatch(this);
1171
- this.consume();
1172
- }
1173
- this.state = 249;
1174
- this.expression(1);
1175
- break;
1176
-
1177
- }
1178
- this._ctx.stop = this._input.LT(-1);
1179
- this.state = 276;
1180
- this._errHandler.sync(this);
1181
- var _alt = this._interp.adaptivePredict(this._input,23,this._ctx)
1182
- while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
1183
- if(_alt===1) {
1184
- if(this._parseListeners!==null) {
1185
- this.triggerExitRuleEvent();
1186
- }
1187
- _prevctx = localctx;
1188
- this.state = 274;
1189
- this._errHandler.sync(this);
1190
- var la_ = this._interp.adaptivePredict(this._input,22,this._ctx);
1191
- switch(la_) {
1192
- case 1:
1193
- localctx = new BinaryExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
1194
- this.pushNewRecursionContext(localctx, _startState, BrettParser.RULE_expression);
1195
- this.state = 252;
1196
- if (!( this.precpred(this._ctx, 10))) {
1197
- throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 10)");
1198
- }
1199
- this.state = 253;
1200
- localctx.op = this._input.LT(1);
1201
- _la = this._input.LA(1);
1202
- if(!(_la===40 || _la===41)) {
1203
- localctx.op = this._errHandler.recoverInline(this);
1204
- }
1205
- else {
1206
- this._errHandler.reportMatch(this);
1207
- this.consume();
1208
- }
1209
- this.state = 254;
1210
- this.expression(11);
1211
- break;
1212
-
1213
- case 2:
1214
- localctx = new BinaryExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
1215
- this.pushNewRecursionContext(localctx, _startState, BrettParser.RULE_expression);
1216
- this.state = 255;
1217
- if (!( this.precpred(this._ctx, 9))) {
1218
- throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 9)");
1219
- }
1220
- this.state = 256;
1221
- localctx.op = this._input.LT(1);
1222
- _la = this._input.LA(1);
1223
- if(!(_la===38 || _la===39)) {
1224
- localctx.op = this._errHandler.recoverInline(this);
1225
- }
1226
- else {
1227
- this._errHandler.reportMatch(this);
1228
- this.consume();
1229
- }
1230
- this.state = 257;
1231
- this.expression(10);
1232
- break;
1233
-
1234
- case 3:
1235
- localctx = new BinaryExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
1236
- this.pushNewRecursionContext(localctx, _startState, BrettParser.RULE_expression);
1237
- this.state = 258;
1238
- if (!( this.precpred(this._ctx, 8))) {
1239
- throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 8)");
1240
- }
1241
- this.state = 259;
1242
- localctx.op = this._input.LT(1);
1243
- _la = this._input.LA(1);
1244
- if(!(((((_la - 34)) & ~0x1f) === 0 && ((1 << (_la - 34)) & 15) !== 0))) {
1245
- localctx.op = this._errHandler.recoverInline(this);
1246
- }
1247
- else {
1248
- this._errHandler.reportMatch(this);
1249
- this.consume();
1250
- }
1251
- this.state = 260;
1252
- this.expression(9);
1253
- break;
1254
-
1255
- case 4:
1256
- localctx = new BinaryExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
1257
- this.pushNewRecursionContext(localctx, _startState, BrettParser.RULE_expression);
1258
- this.state = 261;
1259
- if (!( this.precpred(this._ctx, 7))) {
1260
- throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 7)");
1261
- }
1262
- this.state = 262;
1263
- localctx.op = this._input.LT(1);
1264
- _la = this._input.LA(1);
1265
- if(!(_la===32 || _la===33)) {
1266
- localctx.op = this._errHandler.recoverInline(this);
1267
- }
1268
- else {
1269
- this._errHandler.reportMatch(this);
1270
- this.consume();
1271
- }
1272
- this.state = 263;
1273
- this.expression(8);
1274
- break;
1275
-
1276
- case 5:
1277
- localctx = new IndexExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
1278
- this.pushNewRecursionContext(localctx, _startState, BrettParser.RULE_expression);
1279
- this.state = 264;
1280
- if (!( this.precpred(this._ctx, 5))) {
1281
- throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 5)");
1282
- }
1283
- this.state = 265;
1284
- this.match(BrettParser.LBRACK);
1285
- this.state = 266;
1286
- this.expression(0);
1287
- this.state = 267;
1288
- this.match(BrettParser.RBRACK);
1289
- break;
1290
-
1291
- case 6:
1292
- localctx = new MemberExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
1293
- this.pushNewRecursionContext(localctx, _startState, BrettParser.RULE_expression);
1294
- this.state = 269;
1295
- if (!( this.precpred(this._ctx, 4))) {
1296
- throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 4)");
1297
- }
1298
- this.state = 270;
1299
- this.match(BrettParser.DOT);
1300
- this.state = 271;
1301
- this.match(BrettParser.IDENTIFIER);
1302
- break;
1303
-
1304
- case 7:
1305
- localctx = new PostIncrementDecrementContext(this, new ExpressionContext(this, _parentctx, _parentState));
1306
- this.pushNewRecursionContext(localctx, _startState, BrettParser.RULE_expression);
1307
- this.state = 272;
1308
- if (!( this.precpred(this._ctx, 2))) {
1309
- throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 2)");
1310
- }
1311
- this.state = 273;
1312
- _la = this._input.LA(1);
1313
- if(!(_la===6 || _la===7)) {
1314
- this._errHandler.recoverInline(this);
1315
- }
1316
- else {
1317
- this._errHandler.reportMatch(this);
1318
- this.consume();
1319
- }
1320
- break;
1321
-
1322
- }
1323
- }
1324
- this.state = 278;
1325
- this._errHandler.sync(this);
1326
- _alt = this._interp.adaptivePredict(this._input,23,this._ctx);
1327
- }
1328
-
1329
- } catch( error) {
1330
- if(error instanceof antlr4.error.RecognitionException) {
1331
- localctx.exception = error;
1332
- this._errHandler.reportError(this, error);
1333
- this._errHandler.recover(this, error);
1334
- } else {
1335
- throw error;
1336
- }
1337
- } finally {
1338
- this.unrollRecursionContexts(_parentctx)
1339
- }
1340
- return localctx;
1341
- }
1342
-
1343
-
1344
-
1345
- primary() {
1346
- let localctx = new PrimaryContext(this, this._ctx, this.state);
1347
- this.enterRule(localctx, 44, BrettParser.RULE_primary);
1348
- var _la = 0;
1349
- try {
1350
- this.state = 297;
1351
- this._errHandler.sync(this);
1352
- var la_ = this._interp.adaptivePredict(this._input,25,this._ctx);
1353
- switch(la_) {
1354
- case 1:
1355
- localctx = new LiteralExpressionContext(this, localctx);
1356
- this.enterOuterAlt(localctx, 1);
1357
- this.state = 279;
1358
- this.match(BrettParser.NUMBER);
1359
- break;
1360
-
1361
- case 2:
1362
- localctx = new LiteralExpressionContext(this, localctx);
1363
- this.enterOuterAlt(localctx, 2);
1364
- this.state = 280;
1365
- this.match(BrettParser.STRING);
1366
- break;
1367
-
1368
- case 3:
1369
- localctx = new LiteralExpressionContext(this, localctx);
1370
- this.enterOuterAlt(localctx, 3);
1371
- this.state = 281;
1372
- this.match(BrettParser.T__7);
1373
- break;
1374
-
1375
- case 4:
1376
- localctx = new LiteralExpressionContext(this, localctx);
1377
- this.enterOuterAlt(localctx, 4);
1378
- this.state = 282;
1379
- this.match(BrettParser.T__8);
1380
- break;
1381
-
1382
- case 5:
1383
- localctx = new LiteralExpressionContext(this, localctx);
1384
- this.enterOuterAlt(localctx, 5);
1385
- this.state = 283;
1386
- this.match(BrettParser.T__9);
1387
- break;
1388
-
1389
- case 6:
1390
- localctx = new IdentifierExpressionContext(this, localctx);
1391
- this.enterOuterAlt(localctx, 6);
1392
- this.state = 284;
1393
- this.match(BrettParser.IDENTIFIER);
1394
- break;
1395
-
1396
- case 7:
1397
- localctx = new ParenthesizedExpressionContext(this, localctx);
1398
- this.enterOuterAlt(localctx, 7);
1399
- this.state = 285;
1400
- this.match(BrettParser.LPAREN);
1401
- this.state = 286;
1402
- this.expression(0);
1403
- this.state = 287;
1404
- this.match(BrettParser.RPAREN);
1405
- break;
1406
-
1407
- case 8:
1408
- localctx = new FunctionCallExpressionContext(this, localctx);
1409
- this.enterOuterAlt(localctx, 8);
1410
- this.state = 289;
1411
- this.match(BrettParser.IDENTIFIER);
1412
- this.state = 290;
1413
- this.match(BrettParser.LPAREN);
1414
- this.state = 292;
1415
- this._errHandler.sync(this);
1416
- _la = this._input.LA(1);
1417
- if((((_la) & ~0x1f) === 0 && ((1 << _la) & 3238004672) !== 0) || ((((_la - 47)) & ~0x1f) === 0 && ((1 << (_la - 47)) & 149) !== 0)) {
1418
- this.state = 291;
1419
- this.argList();
1420
- }
1421
-
1422
- this.state = 294;
1423
- this.match(BrettParser.RPAREN);
1424
- break;
1425
-
1426
- case 9:
1427
- localctx = new ArrayLiteralExpressionContext(this, localctx);
1428
- this.enterOuterAlt(localctx, 9);
1429
- this.state = 295;
1430
- this.arrayLiteral();
1431
- break;
1432
-
1433
- case 10:
1434
- localctx = new ObjectLiteralExpressionContext(this, localctx);
1435
- this.enterOuterAlt(localctx, 10);
1436
- this.state = 296;
1437
- this.objectLiteral();
1438
- break;
1439
-
1440
- }
1441
- } catch (re) {
1442
- if(re instanceof antlr4.error.RecognitionException) {
1443
- localctx.exception = re;
1444
- this._errHandler.reportError(this, re);
1445
- this._errHandler.recover(this, re);
1446
- } else {
1447
- throw re;
1448
- }
1449
- } finally {
1450
- this.exitRule();
1451
- }
1452
- return localctx;
1453
- }
1454
-
1455
-
1456
-
1457
- arrayLiteral() {
1458
- let localctx = new ArrayLiteralContext(this, this._ctx, this.state);
1459
- this.enterRule(localctx, 46, BrettParser.RULE_arrayLiteral);
1460
- var _la = 0;
1461
- try {
1462
- this.enterOuterAlt(localctx, 1);
1463
- this.state = 299;
1464
- this.match(BrettParser.LBRACK);
1465
- this.state = 308;
1466
- this._errHandler.sync(this);
1467
- _la = this._input.LA(1);
1468
- if((((_la) & ~0x1f) === 0 && ((1 << _la) & 3238004672) !== 0) || ((((_la - 47)) & ~0x1f) === 0 && ((1 << (_la - 47)) & 149) !== 0)) {
1469
- this.state = 300;
1470
- this.expression(0);
1471
- this.state = 305;
1472
- this._errHandler.sync(this);
1473
- _la = this._input.LA(1);
1474
- while(_la===45) {
1475
- this.state = 301;
1476
- this.match(BrettParser.COMMA);
1477
- this.state = 302;
1478
- this.expression(0);
1479
- this.state = 307;
1480
- this._errHandler.sync(this);
1481
- _la = this._input.LA(1);
1482
- }
1483
- }
1484
-
1485
- this.state = 310;
1486
- this.match(BrettParser.RBRACK);
1487
- } catch (re) {
1488
- if(re instanceof antlr4.error.RecognitionException) {
1489
- localctx.exception = re;
1490
- this._errHandler.reportError(this, re);
1491
- this._errHandler.recover(this, re);
1492
- } else {
1493
- throw re;
1494
- }
1495
- } finally {
1496
- this.exitRule();
1497
- }
1498
- return localctx;
1499
- }
1500
-
1501
-
1502
-
1503
- objectLiteral() {
1504
- let localctx = new ObjectLiteralContext(this, this._ctx, this.state);
1505
- this.enterRule(localctx, 48, BrettParser.RULE_objectLiteral);
1506
- var _la = 0;
1507
- try {
1508
- this.enterOuterAlt(localctx, 1);
1509
- this.state = 312;
1510
- this.match(BrettParser.LBRACE);
1511
- this.state = 321;
1512
- this._errHandler.sync(this);
1513
- _la = this._input.LA(1);
1514
- if(_la===31 || _la===54) {
1515
- this.state = 313;
1516
- this.property();
1517
- this.state = 318;
1518
- this._errHandler.sync(this);
1519
- _la = this._input.LA(1);
1520
- while(_la===45) {
1521
- this.state = 314;
1522
- this.match(BrettParser.COMMA);
1523
- this.state = 315;
1524
- this.property();
1525
- this.state = 320;
1526
- this._errHandler.sync(this);
1527
- _la = this._input.LA(1);
1528
- }
1529
- }
1530
-
1531
- this.state = 323;
1532
- this.match(BrettParser.RBRACE);
1533
- } catch (re) {
1534
- if(re instanceof antlr4.error.RecognitionException) {
1535
- localctx.exception = re;
1536
- this._errHandler.reportError(this, re);
1537
- this._errHandler.recover(this, re);
1538
- } else {
1539
- throw re;
1540
- }
1541
- } finally {
1542
- this.exitRule();
1543
- }
1544
- return localctx;
1545
- }
1546
-
1547
-
1548
-
1549
- property() {
1550
- let localctx = new PropertyContext(this, this._ctx, this.state);
1551
- this.enterRule(localctx, 50, BrettParser.RULE_property);
1552
- try {
1553
- this.state = 331;
1554
- this._errHandler.sync(this);
1555
- switch(this._input.LA(1)) {
1556
- case 54:
1557
- this.enterOuterAlt(localctx, 1);
1558
- this.state = 325;
1559
- this.match(BrettParser.IDENTIFIER);
1560
- this.state = 326;
1561
- this.match(BrettParser.COLON);
1562
- this.state = 327;
1563
- this.expression(0);
1564
- break;
1565
- case 31:
1566
- this.enterOuterAlt(localctx, 2);
1567
- this.state = 328;
1568
- this.match(BrettParser.STRING);
1569
- this.state = 329;
1570
- this.match(BrettParser.COLON);
1571
- this.state = 330;
1572
- this.expression(0);
1573
- break;
1574
- default:
1575
- throw new antlr4.error.NoViableAltException(this);
1576
- }
1577
- } catch (re) {
1578
- if(re instanceof antlr4.error.RecognitionException) {
1579
- localctx.exception = re;
1580
- this._errHandler.reportError(this, re);
1581
- this._errHandler.recover(this, re);
1582
- } else {
1583
- throw re;
1584
- }
1585
- } finally {
1586
- this.exitRule();
1587
- }
1588
- return localctx;
1589
- }
1590
-
1591
-
1592
-
1593
- argList() {
1594
- let localctx = new ArgListContext(this, this._ctx, this.state);
1595
- this.enterRule(localctx, 52, BrettParser.RULE_argList);
1596
- var _la = 0;
1597
- try {
1598
- this.enterOuterAlt(localctx, 1);
1599
- this.state = 333;
1600
- this.expression(0);
1601
- this.state = 338;
1602
- this._errHandler.sync(this);
1603
- _la = this._input.LA(1);
1604
- while(_la===45) {
1605
- this.state = 334;
1606
- this.match(BrettParser.COMMA);
1607
- this.state = 335;
1608
- this.expression(0);
1609
- this.state = 340;
1610
- this._errHandler.sync(this);
1611
- _la = this._input.LA(1);
1612
- }
1613
- } catch (re) {
1614
- if(re instanceof antlr4.error.RecognitionException) {
1615
- localctx.exception = re;
1616
- this._errHandler.reportError(this, re);
1617
- this._errHandler.recover(this, re);
1618
- } else {
1619
- throw re;
1620
- }
1621
- } finally {
1622
- this.exitRule();
1623
- }
1624
- return localctx;
1625
- }
1626
-
1627
-
1628
- }
1629
-
1630
- BrettParser.EOF = antlr4.Token.EOF;
1631
- BrettParser.T__0 = 1;
1632
- BrettParser.T__1 = 2;
1633
- BrettParser.T__2 = 3;
1634
- BrettParser.T__3 = 4;
1635
- BrettParser.T__4 = 5;
1636
- BrettParser.T__5 = 6;
1637
- BrettParser.T__6 = 7;
1638
- BrettParser.T__7 = 8;
1639
- BrettParser.T__8 = 9;
1640
- BrettParser.T__9 = 10;
1641
- BrettParser.LET = 11;
1642
- BrettParser.CONST = 12;
1643
- BrettParser.DEF = 13;
1644
- BrettParser.IF = 14;
1645
- BrettParser.ELSE = 15;
1646
- BrettParser.WHILE = 16;
1647
- BrettParser.FOR = 17;
1648
- BrettParser.DO = 18;
1649
- BrettParser.TRY = 19;
1650
- BrettParser.CATCH = 20;
1651
- BrettParser.FINALLY = 21;
1652
- BrettParser.BREAK = 22;
1653
- BrettParser.CONTINUE = 23;
1654
- BrettParser.NEW = 24;
1655
- BrettParser.VOID = 25;
1656
- BrettParser.SWITCH = 26;
1657
- BrettParser.CASE = 27;
1658
- BrettParser.DEFAULT = 28;
1659
- BrettParser.RETURN = 29;
1660
- BrettParser.NUMBER = 30;
1661
- BrettParser.STRING = 31;
1662
- BrettParser.EQ = 32;
1663
- BrettParser.NEQ = 33;
1664
- BrettParser.LE = 34;
1665
- BrettParser.GE = 35;
1666
- BrettParser.LT = 36;
1667
- BrettParser.GT = 37;
1668
- BrettParser.PLUS = 38;
1669
- BrettParser.MINUS = 39;
1670
- BrettParser.STAR = 40;
1671
- BrettParser.SLASH = 41;
1672
- BrettParser.ASSIGN = 42;
1673
- BrettParser.SEMI = 43;
1674
- BrettParser.COLON = 44;
1675
- BrettParser.COMMA = 45;
1676
- BrettParser.DOT = 46;
1677
- BrettParser.LPAREN = 47;
1678
- BrettParser.RPAREN = 48;
1679
- BrettParser.LBRACE = 49;
1680
- BrettParser.RBRACE = 50;
1681
- BrettParser.LBRACK = 51;
1682
- BrettParser.RBRACK = 52;
1683
- BrettParser.ARROW = 53;
1684
- BrettParser.IDENTIFIER = 54;
1685
- BrettParser.WS = 55;
1686
- BrettParser.LINE_COMMENT = 56;
1687
- BrettParser.BLOCK_COMMENT = 57;
1688
-
1689
- BrettParser.RULE_program = 0;
1690
- BrettParser.RULE_statement = 1;
1691
- BrettParser.RULE_block = 2;
1692
- BrettParser.RULE_variableDeclaration = 3;
1693
- BrettParser.RULE_ifStatement = 4;
1694
- BrettParser.RULE_whileStatement = 5;
1695
- BrettParser.RULE_doWhileStatement = 6;
1696
- BrettParser.RULE_forStatement = 7;
1697
- BrettParser.RULE_switchStatement = 8;
1698
- BrettParser.RULE_switchCase = 9;
1699
- BrettParser.RULE_defaultCase = 10;
1700
- BrettParser.RULE_returnStatement = 11;
1701
- BrettParser.RULE_breakStatement = 12;
1702
- BrettParser.RULE_continueStatement = 13;
1703
- BrettParser.RULE_expressionStatement = 14;
1704
- BrettParser.RULE_functionDeclaration = 15;
1705
- BrettParser.RULE_parameterList = 16;
1706
- BrettParser.RULE_parameter = 17;
1707
- BrettParser.RULE_type = 18;
1708
- BrettParser.RULE_baseType = 19;
1709
- BrettParser.RULE_tryCatchStatement = 20;
1710
- BrettParser.RULE_expression = 21;
1711
- BrettParser.RULE_primary = 22;
1712
- BrettParser.RULE_arrayLiteral = 23;
1713
- BrettParser.RULE_objectLiteral = 24;
1714
- BrettParser.RULE_property = 25;
1715
- BrettParser.RULE_argList = 26;
1716
-
1717
- class ProgramContext extends antlr4.ParserRuleContext {
1718
-
1719
- constructor(parser, parent, invokingState) {
1720
- if(parent===undefined) {
1721
- parent = null;
1722
- }
1723
- if(invokingState===undefined || invokingState===null) {
1724
- invokingState = -1;
1725
- }
1726
- super(parent, invokingState);
1727
- this.parser = parser;
1728
- this.ruleIndex = BrettParser.RULE_program;
1729
- }
1730
-
1731
- EOF() {
1732
- return this.getToken(BrettParser.EOF, 0);
1733
- };
1734
-
1735
- statement = function(i) {
1736
- if(i===undefined) {
1737
- i = null;
1738
- }
1739
- if(i===null) {
1740
- return this.getTypedRuleContexts(StatementContext);
1741
- } else {
1742
- return this.getTypedRuleContext(StatementContext,i);
1743
- }
1744
- };
1745
-
1746
- enterRule(listener) {
1747
- if(listener instanceof BrettListener ) {
1748
- listener.enterProgram(this);
1749
- }
1750
- }
1751
-
1752
- exitRule(listener) {
1753
- if(listener instanceof BrettListener ) {
1754
- listener.exitProgram(this);
1755
- }
1756
- }
1757
-
1758
- accept(visitor) {
1759
- if ( visitor instanceof BrettVisitor ) {
1760
- return visitor.visitProgram(this);
1761
- } else {
1762
- return visitor.visitChildren(this);
1763
- }
1764
- }
1765
-
1766
-
1767
- }
1768
-
1769
-
1770
-
1771
- class StatementContext extends antlr4.ParserRuleContext {
1772
-
1773
- constructor(parser, parent, invokingState) {
1774
- if(parent===undefined) {
1775
- parent = null;
1776
- }
1777
- if(invokingState===undefined || invokingState===null) {
1778
- invokingState = -1;
1779
- }
1780
- super(parent, invokingState);
1781
- this.parser = parser;
1782
- this.ruleIndex = BrettParser.RULE_statement;
1783
- }
1784
-
1785
- variableDeclaration() {
1786
- return this.getTypedRuleContext(VariableDeclarationContext,0);
1787
- };
1788
-
1789
- functionDeclaration() {
1790
- return this.getTypedRuleContext(FunctionDeclarationContext,0);
1791
- };
1792
-
1793
- ifStatement() {
1794
- return this.getTypedRuleContext(IfStatementContext,0);
1795
- };
1796
-
1797
- whileStatement() {
1798
- return this.getTypedRuleContext(WhileStatementContext,0);
1799
- };
1800
-
1801
- forStatement() {
1802
- return this.getTypedRuleContext(ForStatementContext,0);
1803
- };
1804
-
1805
- switchStatement() {
1806
- return this.getTypedRuleContext(SwitchStatementContext,0);
1807
- };
1808
-
1809
- returnStatement() {
1810
- return this.getTypedRuleContext(ReturnStatementContext,0);
1811
- };
1812
-
1813
- expressionStatement() {
1814
- return this.getTypedRuleContext(ExpressionStatementContext,0);
1815
- };
1816
-
1817
- block() {
1818
- return this.getTypedRuleContext(BlockContext,0);
1819
- };
1820
-
1821
- breakStatement() {
1822
- return this.getTypedRuleContext(BreakStatementContext,0);
1823
- };
1824
-
1825
- continueStatement() {
1826
- return this.getTypedRuleContext(ContinueStatementContext,0);
1827
- };
1828
-
1829
- doWhileStatement() {
1830
- return this.getTypedRuleContext(DoWhileStatementContext,0);
1831
- };
1832
-
1833
- tryCatchStatement() {
1834
- return this.getTypedRuleContext(TryCatchStatementContext,0);
1835
- };
1836
-
1837
- enterRule(listener) {
1838
- if(listener instanceof BrettListener ) {
1839
- listener.enterStatement(this);
1840
- }
1841
- }
1842
-
1843
- exitRule(listener) {
1844
- if(listener instanceof BrettListener ) {
1845
- listener.exitStatement(this);
1846
- }
1847
- }
1848
-
1849
- accept(visitor) {
1850
- if ( visitor instanceof BrettVisitor ) {
1851
- return visitor.visitStatement(this);
1852
- } else {
1853
- return visitor.visitChildren(this);
1854
- }
1855
- }
1856
-
1857
-
1858
- }
1859
-
1860
-
1861
-
1862
- class BlockContext extends antlr4.ParserRuleContext {
1863
-
1864
- constructor(parser, parent, invokingState) {
1865
- if(parent===undefined) {
1866
- parent = null;
1867
- }
1868
- if(invokingState===undefined || invokingState===null) {
1869
- invokingState = -1;
1870
- }
1871
- super(parent, invokingState);
1872
- this.parser = parser;
1873
- this.ruleIndex = BrettParser.RULE_block;
1874
- }
1875
-
1876
- LBRACE() {
1877
- return this.getToken(BrettParser.LBRACE, 0);
1878
- };
1879
-
1880
- RBRACE() {
1881
- return this.getToken(BrettParser.RBRACE, 0);
1882
- };
1883
-
1884
- statement = function(i) {
1885
- if(i===undefined) {
1886
- i = null;
1887
- }
1888
- if(i===null) {
1889
- return this.getTypedRuleContexts(StatementContext);
1890
- } else {
1891
- return this.getTypedRuleContext(StatementContext,i);
1892
- }
1893
- };
1894
-
1895
- enterRule(listener) {
1896
- if(listener instanceof BrettListener ) {
1897
- listener.enterBlock(this);
1898
- }
1899
- }
1900
-
1901
- exitRule(listener) {
1902
- if(listener instanceof BrettListener ) {
1903
- listener.exitBlock(this);
1904
- }
1905
- }
1906
-
1907
- accept(visitor) {
1908
- if ( visitor instanceof BrettVisitor ) {
1909
- return visitor.visitBlock(this);
1910
- } else {
1911
- return visitor.visitChildren(this);
1912
- }
1913
- }
1914
-
1915
-
1916
- }
1917
-
1918
-
1919
-
1920
- class VariableDeclarationContext extends antlr4.ParserRuleContext {
1921
-
1922
- constructor(parser, parent, invokingState) {
1923
- if(parent===undefined) {
1924
- parent = null;
1925
- }
1926
- if(invokingState===undefined || invokingState===null) {
1927
- invokingState = -1;
1928
- }
1929
- super(parent, invokingState);
1930
- this.parser = parser;
1931
- this.ruleIndex = BrettParser.RULE_variableDeclaration;
1932
- }
1933
-
1934
- LET() {
1935
- return this.getToken(BrettParser.LET, 0);
1936
- };
1937
-
1938
- IDENTIFIER() {
1939
- return this.getToken(BrettParser.IDENTIFIER, 0);
1940
- };
1941
-
1942
- SEMI() {
1943
- return this.getToken(BrettParser.SEMI, 0);
1944
- };
1945
-
1946
- COLON() {
1947
- return this.getToken(BrettParser.COLON, 0);
1948
- };
1949
-
1950
- type() {
1951
- return this.getTypedRuleContext(TypeContext,0);
1952
- };
1953
-
1954
- ASSIGN() {
1955
- return this.getToken(BrettParser.ASSIGN, 0);
1956
- };
1957
-
1958
- expression() {
1959
- return this.getTypedRuleContext(ExpressionContext,0);
1960
- };
1961
-
1962
- CONST() {
1963
- return this.getToken(BrettParser.CONST, 0);
1964
- };
1965
-
1966
- enterRule(listener) {
1967
- if(listener instanceof BrettListener ) {
1968
- listener.enterVariableDeclaration(this);
1969
- }
1970
- }
1971
-
1972
- exitRule(listener) {
1973
- if(listener instanceof BrettListener ) {
1974
- listener.exitVariableDeclaration(this);
1975
- }
1976
- }
1977
-
1978
- accept(visitor) {
1979
- if ( visitor instanceof BrettVisitor ) {
1980
- return visitor.visitVariableDeclaration(this);
1981
- } else {
1982
- return visitor.visitChildren(this);
1983
- }
1984
- }
1985
-
1986
-
1987
- }
1988
-
1989
-
1990
-
1991
- class IfStatementContext extends antlr4.ParserRuleContext {
1992
-
1993
- constructor(parser, parent, invokingState) {
1994
- if(parent===undefined) {
1995
- parent = null;
1996
- }
1997
- if(invokingState===undefined || invokingState===null) {
1998
- invokingState = -1;
1999
- }
2000
- super(parent, invokingState);
2001
- this.parser = parser;
2002
- this.ruleIndex = BrettParser.RULE_ifStatement;
2003
- }
2004
-
2005
- IF() {
2006
- return this.getToken(BrettParser.IF, 0);
2007
- };
2008
-
2009
- LPAREN() {
2010
- return this.getToken(BrettParser.LPAREN, 0);
2011
- };
2012
-
2013
- expression() {
2014
- return this.getTypedRuleContext(ExpressionContext,0);
2015
- };
2016
-
2017
- RPAREN() {
2018
- return this.getToken(BrettParser.RPAREN, 0);
2019
- };
2020
-
2021
- block = function(i) {
2022
- if(i===undefined) {
2023
- i = null;
2024
- }
2025
- if(i===null) {
2026
- return this.getTypedRuleContexts(BlockContext);
2027
- } else {
2028
- return this.getTypedRuleContext(BlockContext,i);
2029
- }
2030
- };
2031
-
2032
- ELSE() {
2033
- return this.getToken(BrettParser.ELSE, 0);
2034
- };
2035
-
2036
- enterRule(listener) {
2037
- if(listener instanceof BrettListener ) {
2038
- listener.enterIfStatement(this);
2039
- }
2040
- }
2041
-
2042
- exitRule(listener) {
2043
- if(listener instanceof BrettListener ) {
2044
- listener.exitIfStatement(this);
2045
- }
2046
- }
2047
-
2048
- accept(visitor) {
2049
- if ( visitor instanceof BrettVisitor ) {
2050
- return visitor.visitIfStatement(this);
2051
- } else {
2052
- return visitor.visitChildren(this);
2053
- }
2054
- }
2055
-
2056
-
2057
- }
2058
-
2059
-
2060
-
2061
- class WhileStatementContext extends antlr4.ParserRuleContext {
2062
-
2063
- constructor(parser, parent, invokingState) {
2064
- if(parent===undefined) {
2065
- parent = null;
2066
- }
2067
- if(invokingState===undefined || invokingState===null) {
2068
- invokingState = -1;
2069
- }
2070
- super(parent, invokingState);
2071
- this.parser = parser;
2072
- this.ruleIndex = BrettParser.RULE_whileStatement;
2073
- }
2074
-
2075
- WHILE() {
2076
- return this.getToken(BrettParser.WHILE, 0);
2077
- };
2078
-
2079
- LPAREN() {
2080
- return this.getToken(BrettParser.LPAREN, 0);
2081
- };
2082
-
2083
- expression() {
2084
- return this.getTypedRuleContext(ExpressionContext,0);
2085
- };
2086
-
2087
- RPAREN() {
2088
- return this.getToken(BrettParser.RPAREN, 0);
2089
- };
2090
-
2091
- block() {
2092
- return this.getTypedRuleContext(BlockContext,0);
2093
- };
2094
-
2095
- enterRule(listener) {
2096
- if(listener instanceof BrettListener ) {
2097
- listener.enterWhileStatement(this);
2098
- }
2099
- }
2100
-
2101
- exitRule(listener) {
2102
- if(listener instanceof BrettListener ) {
2103
- listener.exitWhileStatement(this);
2104
- }
2105
- }
2106
-
2107
- accept(visitor) {
2108
- if ( visitor instanceof BrettVisitor ) {
2109
- return visitor.visitWhileStatement(this);
2110
- } else {
2111
- return visitor.visitChildren(this);
2112
- }
2113
- }
2114
-
2115
-
2116
- }
2117
-
2118
-
2119
-
2120
- class DoWhileStatementContext extends antlr4.ParserRuleContext {
2121
-
2122
- constructor(parser, parent, invokingState) {
2123
- if(parent===undefined) {
2124
- parent = null;
2125
- }
2126
- if(invokingState===undefined || invokingState===null) {
2127
- invokingState = -1;
2128
- }
2129
- super(parent, invokingState);
2130
- this.parser = parser;
2131
- this.ruleIndex = BrettParser.RULE_doWhileStatement;
2132
- }
2133
-
2134
- DO() {
2135
- return this.getToken(BrettParser.DO, 0);
2136
- };
2137
-
2138
- block() {
2139
- return this.getTypedRuleContext(BlockContext,0);
2140
- };
2141
-
2142
- WHILE() {
2143
- return this.getToken(BrettParser.WHILE, 0);
2144
- };
2145
-
2146
- LPAREN() {
2147
- return this.getToken(BrettParser.LPAREN, 0);
2148
- };
2149
-
2150
- expression() {
2151
- return this.getTypedRuleContext(ExpressionContext,0);
2152
- };
2153
-
2154
- RPAREN() {
2155
- return this.getToken(BrettParser.RPAREN, 0);
2156
- };
2157
-
2158
- SEMI() {
2159
- return this.getToken(BrettParser.SEMI, 0);
2160
- };
2161
-
2162
- enterRule(listener) {
2163
- if(listener instanceof BrettListener ) {
2164
- listener.enterDoWhileStatement(this);
2165
- }
2166
- }
2167
-
2168
- exitRule(listener) {
2169
- if(listener instanceof BrettListener ) {
2170
- listener.exitDoWhileStatement(this);
2171
- }
2172
- }
2173
-
2174
- accept(visitor) {
2175
- if ( visitor instanceof BrettVisitor ) {
2176
- return visitor.visitDoWhileStatement(this);
2177
- } else {
2178
- return visitor.visitChildren(this);
2179
- }
2180
- }
2181
-
2182
-
2183
- }
2184
-
2185
-
2186
-
2187
- class ForStatementContext extends antlr4.ParserRuleContext {
2188
-
2189
- constructor(parser, parent, invokingState) {
2190
- if(parent===undefined) {
2191
- parent = null;
2192
- }
2193
- if(invokingState===undefined || invokingState===null) {
2194
- invokingState = -1;
2195
- }
2196
- super(parent, invokingState);
2197
- this.parser = parser;
2198
- this.ruleIndex = BrettParser.RULE_forStatement;
2199
- }
2200
-
2201
- FOR() {
2202
- return this.getToken(BrettParser.FOR, 0);
2203
- };
2204
-
2205
- LPAREN() {
2206
- return this.getToken(BrettParser.LPAREN, 0);
2207
- };
2208
-
2209
- SEMI() {
2210
- return this.getToken(BrettParser.SEMI, 0);
2211
- };
2212
-
2213
- RPAREN() {
2214
- return this.getToken(BrettParser.RPAREN, 0);
2215
- };
2216
-
2217
- block() {
2218
- return this.getTypedRuleContext(BlockContext,0);
2219
- };
2220
-
2221
- variableDeclaration() {
2222
- return this.getTypedRuleContext(VariableDeclarationContext,0);
2223
- };
2224
-
2225
- expressionStatement() {
2226
- return this.getTypedRuleContext(ExpressionStatementContext,0);
2227
- };
2228
-
2229
- expression = function(i) {
2230
- if(i===undefined) {
2231
- i = null;
2232
- }
2233
- if(i===null) {
2234
- return this.getTypedRuleContexts(ExpressionContext);
2235
- } else {
2236
- return this.getTypedRuleContext(ExpressionContext,i);
2237
- }
2238
- };
2239
-
2240
- enterRule(listener) {
2241
- if(listener instanceof BrettListener ) {
2242
- listener.enterForStatement(this);
2243
- }
2244
- }
2245
-
2246
- exitRule(listener) {
2247
- if(listener instanceof BrettListener ) {
2248
- listener.exitForStatement(this);
2249
- }
2250
- }
2251
-
2252
- accept(visitor) {
2253
- if ( visitor instanceof BrettVisitor ) {
2254
- return visitor.visitForStatement(this);
2255
- } else {
2256
- return visitor.visitChildren(this);
2257
- }
2258
- }
2259
-
2260
-
2261
- }
2262
-
2263
-
2264
-
2265
- class SwitchStatementContext extends antlr4.ParserRuleContext {
2266
-
2267
- constructor(parser, parent, invokingState) {
2268
- if(parent===undefined) {
2269
- parent = null;
2270
- }
2271
- if(invokingState===undefined || invokingState===null) {
2272
- invokingState = -1;
2273
- }
2274
- super(parent, invokingState);
2275
- this.parser = parser;
2276
- this.ruleIndex = BrettParser.RULE_switchStatement;
2277
- }
2278
-
2279
- SWITCH() {
2280
- return this.getToken(BrettParser.SWITCH, 0);
2281
- };
2282
-
2283
- LBRACE() {
2284
- return this.getToken(BrettParser.LBRACE, 0);
2285
- };
2286
-
2287
- RBRACE() {
2288
- return this.getToken(BrettParser.RBRACE, 0);
2289
- };
2290
-
2291
- switchCase = function(i) {
2292
- if(i===undefined) {
2293
- i = null;
2294
- }
2295
- if(i===null) {
2296
- return this.getTypedRuleContexts(SwitchCaseContext);
2297
- } else {
2298
- return this.getTypedRuleContext(SwitchCaseContext,i);
2299
- }
2300
- };
2301
-
2302
- defaultCase() {
2303
- return this.getTypedRuleContext(DefaultCaseContext,0);
2304
- };
2305
-
2306
- enterRule(listener) {
2307
- if(listener instanceof BrettListener ) {
2308
- listener.enterSwitchStatement(this);
2309
- }
2310
- }
2311
-
2312
- exitRule(listener) {
2313
- if(listener instanceof BrettListener ) {
2314
- listener.exitSwitchStatement(this);
2315
- }
2316
- }
2317
-
2318
- accept(visitor) {
2319
- if ( visitor instanceof BrettVisitor ) {
2320
- return visitor.visitSwitchStatement(this);
2321
- } else {
2322
- return visitor.visitChildren(this);
2323
- }
2324
- }
2325
-
2326
-
2327
- }
2328
-
2329
-
2330
-
2331
- class SwitchCaseContext extends antlr4.ParserRuleContext {
2332
-
2333
- constructor(parser, parent, invokingState) {
2334
- if(parent===undefined) {
2335
- parent = null;
2336
- }
2337
- if(invokingState===undefined || invokingState===null) {
2338
- invokingState = -1;
2339
- }
2340
- super(parent, invokingState);
2341
- this.parser = parser;
2342
- this.ruleIndex = BrettParser.RULE_switchCase;
2343
- }
2344
-
2345
- CASE() {
2346
- return this.getToken(BrettParser.CASE, 0);
2347
- };
2348
-
2349
- expression() {
2350
- return this.getTypedRuleContext(ExpressionContext,0);
2351
- };
2352
-
2353
- ARROW() {
2354
- return this.getToken(BrettParser.ARROW, 0);
2355
- };
2356
-
2357
- block() {
2358
- return this.getTypedRuleContext(BlockContext,0);
2359
- };
2360
-
2361
- enterRule(listener) {
2362
- if(listener instanceof BrettListener ) {
2363
- listener.enterSwitchCase(this);
2364
- }
2365
- }
2366
-
2367
- exitRule(listener) {
2368
- if(listener instanceof BrettListener ) {
2369
- listener.exitSwitchCase(this);
2370
- }
2371
- }
2372
-
2373
- accept(visitor) {
2374
- if ( visitor instanceof BrettVisitor ) {
2375
- return visitor.visitSwitchCase(this);
2376
- } else {
2377
- return visitor.visitChildren(this);
2378
- }
2379
- }
2380
-
2381
-
2382
- }
2383
-
2384
-
2385
-
2386
- class DefaultCaseContext extends antlr4.ParserRuleContext {
2387
-
2388
- constructor(parser, parent, invokingState) {
2389
- if(parent===undefined) {
2390
- parent = null;
2391
- }
2392
- if(invokingState===undefined || invokingState===null) {
2393
- invokingState = -1;
2394
- }
2395
- super(parent, invokingState);
2396
- this.parser = parser;
2397
- this.ruleIndex = BrettParser.RULE_defaultCase;
2398
- }
2399
-
2400
- DEFAULT() {
2401
- return this.getToken(BrettParser.DEFAULT, 0);
2402
- };
2403
-
2404
- ARROW() {
2405
- return this.getToken(BrettParser.ARROW, 0);
2406
- };
2407
-
2408
- block() {
2409
- return this.getTypedRuleContext(BlockContext,0);
2410
- };
2411
-
2412
- enterRule(listener) {
2413
- if(listener instanceof BrettListener ) {
2414
- listener.enterDefaultCase(this);
2415
- }
2416
- }
2417
-
2418
- exitRule(listener) {
2419
- if(listener instanceof BrettListener ) {
2420
- listener.exitDefaultCase(this);
2421
- }
2422
- }
2423
-
2424
- accept(visitor) {
2425
- if ( visitor instanceof BrettVisitor ) {
2426
- return visitor.visitDefaultCase(this);
2427
- } else {
2428
- return visitor.visitChildren(this);
2429
- }
2430
- }
2431
-
2432
-
2433
- }
2434
-
2435
-
2436
-
2437
- class ReturnStatementContext extends antlr4.ParserRuleContext {
2438
-
2439
- constructor(parser, parent, invokingState) {
2440
- if(parent===undefined) {
2441
- parent = null;
2442
- }
2443
- if(invokingState===undefined || invokingState===null) {
2444
- invokingState = -1;
2445
- }
2446
- super(parent, invokingState);
2447
- this.parser = parser;
2448
- this.ruleIndex = BrettParser.RULE_returnStatement;
2449
- }
2450
-
2451
- RETURN() {
2452
- return this.getToken(BrettParser.RETURN, 0);
2453
- };
2454
-
2455
- SEMI() {
2456
- return this.getToken(BrettParser.SEMI, 0);
2457
- };
2458
-
2459
- expression() {
2460
- return this.getTypedRuleContext(ExpressionContext,0);
2461
- };
2462
-
2463
- enterRule(listener) {
2464
- if(listener instanceof BrettListener ) {
2465
- listener.enterReturnStatement(this);
2466
- }
2467
- }
2468
-
2469
- exitRule(listener) {
2470
- if(listener instanceof BrettListener ) {
2471
- listener.exitReturnStatement(this);
2472
- }
2473
- }
2474
-
2475
- accept(visitor) {
2476
- if ( visitor instanceof BrettVisitor ) {
2477
- return visitor.visitReturnStatement(this);
2478
- } else {
2479
- return visitor.visitChildren(this);
2480
- }
2481
- }
2482
-
2483
-
2484
- }
2485
-
2486
-
2487
-
2488
- class BreakStatementContext extends antlr4.ParserRuleContext {
2489
-
2490
- constructor(parser, parent, invokingState) {
2491
- if(parent===undefined) {
2492
- parent = null;
2493
- }
2494
- if(invokingState===undefined || invokingState===null) {
2495
- invokingState = -1;
2496
- }
2497
- super(parent, invokingState);
2498
- this.parser = parser;
2499
- this.ruleIndex = BrettParser.RULE_breakStatement;
2500
- }
2501
-
2502
- BREAK() {
2503
- return this.getToken(BrettParser.BREAK, 0);
2504
- };
2505
-
2506
- SEMI() {
2507
- return this.getToken(BrettParser.SEMI, 0);
2508
- };
2509
-
2510
- enterRule(listener) {
2511
- if(listener instanceof BrettListener ) {
2512
- listener.enterBreakStatement(this);
2513
- }
2514
- }
2515
-
2516
- exitRule(listener) {
2517
- if(listener instanceof BrettListener ) {
2518
- listener.exitBreakStatement(this);
2519
- }
2520
- }
2521
-
2522
- accept(visitor) {
2523
- if ( visitor instanceof BrettVisitor ) {
2524
- return visitor.visitBreakStatement(this);
2525
- } else {
2526
- return visitor.visitChildren(this);
2527
- }
2528
- }
2529
-
2530
-
2531
- }
2532
-
2533
-
2534
-
2535
- class ContinueStatementContext extends antlr4.ParserRuleContext {
2536
-
2537
- constructor(parser, parent, invokingState) {
2538
- if(parent===undefined) {
2539
- parent = null;
2540
- }
2541
- if(invokingState===undefined || invokingState===null) {
2542
- invokingState = -1;
2543
- }
2544
- super(parent, invokingState);
2545
- this.parser = parser;
2546
- this.ruleIndex = BrettParser.RULE_continueStatement;
2547
- }
2548
-
2549
- CONTINUE() {
2550
- return this.getToken(BrettParser.CONTINUE, 0);
2551
- };
2552
-
2553
- SEMI() {
2554
- return this.getToken(BrettParser.SEMI, 0);
2555
- };
2556
-
2557
- enterRule(listener) {
2558
- if(listener instanceof BrettListener ) {
2559
- listener.enterContinueStatement(this);
2560
- }
2561
- }
2562
-
2563
- exitRule(listener) {
2564
- if(listener instanceof BrettListener ) {
2565
- listener.exitContinueStatement(this);
2566
- }
2567
- }
2568
-
2569
- accept(visitor) {
2570
- if ( visitor instanceof BrettVisitor ) {
2571
- return visitor.visitContinueStatement(this);
2572
- } else {
2573
- return visitor.visitChildren(this);
2574
- }
2575
- }
2576
-
2577
-
2578
- }
2579
-
2580
-
2581
-
2582
- class ExpressionStatementContext extends antlr4.ParserRuleContext {
2583
-
2584
- constructor(parser, parent, invokingState) {
2585
- if(parent===undefined) {
2586
- parent = null;
2587
- }
2588
- if(invokingState===undefined || invokingState===null) {
2589
- invokingState = -1;
2590
- }
2591
- super(parent, invokingState);
2592
- this.parser = parser;
2593
- this.ruleIndex = BrettParser.RULE_expressionStatement;
2594
- }
2595
-
2596
- expression() {
2597
- return this.getTypedRuleContext(ExpressionContext,0);
2598
- };
2599
-
2600
- SEMI() {
2601
- return this.getToken(BrettParser.SEMI, 0);
2602
- };
2603
-
2604
- enterRule(listener) {
2605
- if(listener instanceof BrettListener ) {
2606
- listener.enterExpressionStatement(this);
2607
- }
2608
- }
2609
-
2610
- exitRule(listener) {
2611
- if(listener instanceof BrettListener ) {
2612
- listener.exitExpressionStatement(this);
2613
- }
2614
- }
2615
-
2616
- accept(visitor) {
2617
- if ( visitor instanceof BrettVisitor ) {
2618
- return visitor.visitExpressionStatement(this);
2619
- } else {
2620
- return visitor.visitChildren(this);
2621
- }
2622
- }
2623
-
2624
-
2625
- }
2626
-
2627
-
2628
-
2629
- class FunctionDeclarationContext extends antlr4.ParserRuleContext {
2630
-
2631
- constructor(parser, parent, invokingState) {
2632
- if(parent===undefined) {
2633
- parent = null;
2634
- }
2635
- if(invokingState===undefined || invokingState===null) {
2636
- invokingState = -1;
2637
- }
2638
- super(parent, invokingState);
2639
- this.parser = parser;
2640
- this.ruleIndex = BrettParser.RULE_functionDeclaration;
2641
- }
2642
-
2643
- DEF() {
2644
- return this.getToken(BrettParser.DEF, 0);
2645
- };
2646
-
2647
- IDENTIFIER() {
2648
- return this.getToken(BrettParser.IDENTIFIER, 0);
2649
- };
2650
-
2651
- LPAREN() {
2652
- return this.getToken(BrettParser.LPAREN, 0);
2653
- };
2654
-
2655
- RPAREN() {
2656
- return this.getToken(BrettParser.RPAREN, 0);
2657
- };
2658
-
2659
- block() {
2660
- return this.getTypedRuleContext(BlockContext,0);
2661
- };
2662
-
2663
- parameterList() {
2664
- return this.getTypedRuleContext(ParameterListContext,0);
2665
- };
2666
-
2667
- COLON() {
2668
- return this.getToken(BrettParser.COLON, 0);
2669
- };
2670
-
2671
- type() {
2672
- return this.getTypedRuleContext(TypeContext,0);
2673
- };
2674
-
2675
- enterRule(listener) {
2676
- if(listener instanceof BrettListener ) {
2677
- listener.enterFunctionDeclaration(this);
2678
- }
2679
- }
2680
-
2681
- exitRule(listener) {
2682
- if(listener instanceof BrettListener ) {
2683
- listener.exitFunctionDeclaration(this);
2684
- }
2685
- }
2686
-
2687
- accept(visitor) {
2688
- if ( visitor instanceof BrettVisitor ) {
2689
- return visitor.visitFunctionDeclaration(this);
2690
- } else {
2691
- return visitor.visitChildren(this);
2692
- }
2693
- }
2694
-
2695
-
2696
- }
2697
-
2698
-
2699
-
2700
- class ParameterListContext extends antlr4.ParserRuleContext {
2701
-
2702
- constructor(parser, parent, invokingState) {
2703
- if(parent===undefined) {
2704
- parent = null;
2705
- }
2706
- if(invokingState===undefined || invokingState===null) {
2707
- invokingState = -1;
2708
- }
2709
- super(parent, invokingState);
2710
- this.parser = parser;
2711
- this.ruleIndex = BrettParser.RULE_parameterList;
2712
- }
2713
-
2714
- parameter = function(i) {
2715
- if(i===undefined) {
2716
- i = null;
2717
- }
2718
- if(i===null) {
2719
- return this.getTypedRuleContexts(ParameterContext);
2720
- } else {
2721
- return this.getTypedRuleContext(ParameterContext,i);
2722
- }
2723
- };
2724
-
2725
- COMMA = function(i) {
2726
- if(i===undefined) {
2727
- i = null;
2728
- }
2729
- if(i===null) {
2730
- return this.getTokens(BrettParser.COMMA);
2731
- } else {
2732
- return this.getToken(BrettParser.COMMA, i);
2733
- }
2734
- };
2735
-
2736
-
2737
- enterRule(listener) {
2738
- if(listener instanceof BrettListener ) {
2739
- listener.enterParameterList(this);
2740
- }
2741
- }
2742
-
2743
- exitRule(listener) {
2744
- if(listener instanceof BrettListener ) {
2745
- listener.exitParameterList(this);
2746
- }
2747
- }
2748
-
2749
- accept(visitor) {
2750
- if ( visitor instanceof BrettVisitor ) {
2751
- return visitor.visitParameterList(this);
2752
- } else {
2753
- return visitor.visitChildren(this);
2754
- }
2755
- }
2756
-
2757
-
2758
- }
2759
-
2760
-
2761
-
2762
- class ParameterContext extends antlr4.ParserRuleContext {
2763
-
2764
- constructor(parser, parent, invokingState) {
2765
- if(parent===undefined) {
2766
- parent = null;
2767
- }
2768
- if(invokingState===undefined || invokingState===null) {
2769
- invokingState = -1;
2770
- }
2771
- super(parent, invokingState);
2772
- this.parser = parser;
2773
- this.ruleIndex = BrettParser.RULE_parameter;
2774
- }
2775
-
2776
- IDENTIFIER() {
2777
- return this.getToken(BrettParser.IDENTIFIER, 0);
2778
- };
2779
-
2780
- COLON() {
2781
- return this.getToken(BrettParser.COLON, 0);
2782
- };
2783
-
2784
- type() {
2785
- return this.getTypedRuleContext(TypeContext,0);
2786
- };
2787
-
2788
- enterRule(listener) {
2789
- if(listener instanceof BrettListener ) {
2790
- listener.enterParameter(this);
2791
- }
2792
- }
2793
-
2794
- exitRule(listener) {
2795
- if(listener instanceof BrettListener ) {
2796
- listener.exitParameter(this);
2797
- }
2798
- }
2799
-
2800
- accept(visitor) {
2801
- if ( visitor instanceof BrettVisitor ) {
2802
- return visitor.visitParameter(this);
2803
- } else {
2804
- return visitor.visitChildren(this);
2805
- }
2806
- }
2807
-
2808
-
2809
- }
2810
-
2811
-
2812
-
2813
- class TypeContext extends antlr4.ParserRuleContext {
2814
-
2815
- constructor(parser, parent, invokingState) {
2816
- if(parent===undefined) {
2817
- parent = null;
2818
- }
2819
- if(invokingState===undefined || invokingState===null) {
2820
- invokingState = -1;
2821
- }
2822
- super(parent, invokingState);
2823
- this.parser = parser;
2824
- this.ruleIndex = BrettParser.RULE_type;
2825
- }
2826
-
2827
-
2828
-
2829
- copyFrom(ctx) {
2830
- super.copyFrom(ctx);
2831
- }
2832
-
2833
- }
2834
-
2835
-
2836
- class ArrayTypeContext extends TypeContext {
2837
-
2838
- constructor(parser, ctx) {
2839
- super(parser);
2840
- super.copyFrom(ctx);
2841
- }
2842
-
2843
- type() {
2844
- return this.getTypedRuleContext(TypeContext,0);
2845
- };
2846
-
2847
- enterRule(listener) {
2848
- if(listener instanceof BrettListener ) {
2849
- listener.enterArrayType(this);
2850
- }
2851
- }
2852
-
2853
- exitRule(listener) {
2854
- if(listener instanceof BrettListener ) {
2855
- listener.exitArrayType(this);
2856
- }
2857
- }
2858
-
2859
- accept(visitor) {
2860
- if ( visitor instanceof BrettVisitor ) {
2861
- return visitor.visitArrayType(this);
2862
- } else {
2863
- return visitor.visitChildren(this);
2864
- }
2865
- }
2866
-
2867
-
2868
- }
2869
-
2870
- BrettParser.ArrayTypeContext = ArrayTypeContext;
2871
-
2872
- class SimpleTypeContext extends TypeContext {
2873
-
2874
- constructor(parser, ctx) {
2875
- super(parser);
2876
- super.copyFrom(ctx);
2877
- }
2878
-
2879
- baseType() {
2880
- return this.getTypedRuleContext(BaseTypeContext,0);
2881
- };
2882
-
2883
- enterRule(listener) {
2884
- if(listener instanceof BrettListener ) {
2885
- listener.enterSimpleType(this);
2886
- }
2887
- }
2888
-
2889
- exitRule(listener) {
2890
- if(listener instanceof BrettListener ) {
2891
- listener.exitSimpleType(this);
2892
- }
2893
- }
2894
-
2895
- accept(visitor) {
2896
- if ( visitor instanceof BrettVisitor ) {
2897
- return visitor.visitSimpleType(this);
2898
- } else {
2899
- return visitor.visitChildren(this);
2900
- }
2901
- }
2902
-
2903
-
2904
- }
2905
-
2906
- BrettParser.SimpleTypeContext = SimpleTypeContext;
2907
-
2908
- class BaseTypeContext extends antlr4.ParserRuleContext {
2909
-
2910
- constructor(parser, parent, invokingState) {
2911
- if(parent===undefined) {
2912
- parent = null;
2913
- }
2914
- if(invokingState===undefined || invokingState===null) {
2915
- invokingState = -1;
2916
- }
2917
- super(parent, invokingState);
2918
- this.parser = parser;
2919
- this.ruleIndex = BrettParser.RULE_baseType;
2920
- }
2921
-
2922
- VOID() {
2923
- return this.getToken(BrettParser.VOID, 0);
2924
- };
2925
-
2926
- IDENTIFIER() {
2927
- return this.getToken(BrettParser.IDENTIFIER, 0);
2928
- };
2929
-
2930
- enterRule(listener) {
2931
- if(listener instanceof BrettListener ) {
2932
- listener.enterBaseType(this);
2933
- }
2934
- }
2935
-
2936
- exitRule(listener) {
2937
- if(listener instanceof BrettListener ) {
2938
- listener.exitBaseType(this);
2939
- }
2940
- }
2941
-
2942
- accept(visitor) {
2943
- if ( visitor instanceof BrettVisitor ) {
2944
- return visitor.visitBaseType(this);
2945
- } else {
2946
- return visitor.visitChildren(this);
2947
- }
2948
- }
2949
-
2950
-
2951
- }
2952
-
2953
-
2954
-
2955
- class TryCatchStatementContext extends antlr4.ParserRuleContext {
2956
-
2957
- constructor(parser, parent, invokingState) {
2958
- if(parent===undefined) {
2959
- parent = null;
2960
- }
2961
- if(invokingState===undefined || invokingState===null) {
2962
- invokingState = -1;
2963
- }
2964
- super(parent, invokingState);
2965
- this.parser = parser;
2966
- this.ruleIndex = BrettParser.RULE_tryCatchStatement;
2967
- }
2968
-
2969
- TRY() {
2970
- return this.getToken(BrettParser.TRY, 0);
2971
- };
2972
-
2973
- block = function(i) {
2974
- if(i===undefined) {
2975
- i = null;
2976
- }
2977
- if(i===null) {
2978
- return this.getTypedRuleContexts(BlockContext);
2979
- } else {
2980
- return this.getTypedRuleContext(BlockContext,i);
2981
- }
2982
- };
2983
-
2984
- CATCH() {
2985
- return this.getToken(BrettParser.CATCH, 0);
2986
- };
2987
-
2988
- LPAREN() {
2989
- return this.getToken(BrettParser.LPAREN, 0);
2990
- };
2991
-
2992
- IDENTIFIER() {
2993
- return this.getToken(BrettParser.IDENTIFIER, 0);
2994
- };
2995
-
2996
- RPAREN() {
2997
- return this.getToken(BrettParser.RPAREN, 0);
2998
- };
2999
-
3000
- COLON() {
3001
- return this.getToken(BrettParser.COLON, 0);
3002
- };
3003
-
3004
- type() {
3005
- return this.getTypedRuleContext(TypeContext,0);
3006
- };
3007
-
3008
- FINALLY() {
3009
- return this.getToken(BrettParser.FINALLY, 0);
3010
- };
3011
-
3012
- enterRule(listener) {
3013
- if(listener instanceof BrettListener ) {
3014
- listener.enterTryCatchStatement(this);
3015
- }
3016
- }
3017
-
3018
- exitRule(listener) {
3019
- if(listener instanceof BrettListener ) {
3020
- listener.exitTryCatchStatement(this);
3021
- }
3022
- }
3023
-
3024
- accept(visitor) {
3025
- if ( visitor instanceof BrettVisitor ) {
3026
- return visitor.visitTryCatchStatement(this);
3027
- } else {
3028
- return visitor.visitChildren(this);
3029
- }
3030
- }
3031
-
3032
-
3033
- }
3034
-
3035
-
3036
-
3037
- class ExpressionContext extends antlr4.ParserRuleContext {
3038
-
3039
- constructor(parser, parent, invokingState) {
3040
- if(parent===undefined) {
3041
- parent = null;
3042
- }
3043
- if(invokingState===undefined || invokingState===null) {
3044
- invokingState = -1;
3045
- }
3046
- super(parent, invokingState);
3047
- this.parser = parser;
3048
- this.ruleIndex = BrettParser.RULE_expression;
3049
- }
3050
-
3051
-
3052
-
3053
- copyFrom(ctx) {
3054
- super.copyFrom(ctx);
3055
- }
3056
-
3057
- }
3058
-
3059
-
3060
- class MemberExpressionContext extends ExpressionContext {
3061
-
3062
- constructor(parser, ctx) {
3063
- super(parser);
3064
- super.copyFrom(ctx);
3065
- }
3066
-
3067
- expression() {
3068
- return this.getTypedRuleContext(ExpressionContext,0);
3069
- };
3070
-
3071
- DOT() {
3072
- return this.getToken(BrettParser.DOT, 0);
3073
- };
3074
-
3075
- IDENTIFIER() {
3076
- return this.getToken(BrettParser.IDENTIFIER, 0);
3077
- };
3078
-
3079
- enterRule(listener) {
3080
- if(listener instanceof BrettListener ) {
3081
- listener.enterMemberExpression(this);
3082
- }
3083
- }
3084
-
3085
- exitRule(listener) {
3086
- if(listener instanceof BrettListener ) {
3087
- listener.exitMemberExpression(this);
3088
- }
3089
- }
3090
-
3091
- accept(visitor) {
3092
- if ( visitor instanceof BrettVisitor ) {
3093
- return visitor.visitMemberExpression(this);
3094
- } else {
3095
- return visitor.visitChildren(this);
3096
- }
3097
- }
3098
-
3099
-
3100
- }
3101
-
3102
- BrettParser.MemberExpressionContext = MemberExpressionContext;
3103
-
3104
- class PrimaryExpressionContext extends ExpressionContext {
3105
-
3106
- constructor(parser, ctx) {
3107
- super(parser);
3108
- super.copyFrom(ctx);
3109
- }
3110
-
3111
- primary() {
3112
- return this.getTypedRuleContext(PrimaryContext,0);
3113
- };
3114
-
3115
- enterRule(listener) {
3116
- if(listener instanceof BrettListener ) {
3117
- listener.enterPrimaryExpression(this);
3118
- }
3119
- }
3120
-
3121
- exitRule(listener) {
3122
- if(listener instanceof BrettListener ) {
3123
- listener.exitPrimaryExpression(this);
3124
- }
3125
- }
3126
-
3127
- accept(visitor) {
3128
- if ( visitor instanceof BrettVisitor ) {
3129
- return visitor.visitPrimaryExpression(this);
3130
- } else {
3131
- return visitor.visitChildren(this);
3132
- }
3133
- }
3134
-
3135
-
3136
- }
3137
-
3138
- BrettParser.PrimaryExpressionContext = PrimaryExpressionContext;
3139
-
3140
- class AssignmentExpressionContext extends ExpressionContext {
3141
-
3142
- constructor(parser, ctx) {
3143
- super(parser);
3144
- super.copyFrom(ctx);
3145
- }
3146
-
3147
- IDENTIFIER() {
3148
- return this.getToken(BrettParser.IDENTIFIER, 0);
3149
- };
3150
-
3151
- ASSIGN() {
3152
- return this.getToken(BrettParser.ASSIGN, 0);
3153
- };
3154
-
3155
- expression() {
3156
- return this.getTypedRuleContext(ExpressionContext,0);
3157
- };
3158
-
3159
- enterRule(listener) {
3160
- if(listener instanceof BrettListener ) {
3161
- listener.enterAssignmentExpression(this);
3162
- }
3163
- }
3164
-
3165
- exitRule(listener) {
3166
- if(listener instanceof BrettListener ) {
3167
- listener.exitAssignmentExpression(this);
3168
- }
3169
- }
3170
-
3171
- accept(visitor) {
3172
- if ( visitor instanceof BrettVisitor ) {
3173
- return visitor.visitAssignmentExpression(this);
3174
- } else {
3175
- return visitor.visitChildren(this);
3176
- }
3177
- }
3178
-
3179
-
3180
- }
3181
-
3182
- BrettParser.AssignmentExpressionContext = AssignmentExpressionContext;
3183
-
3184
- class BinaryExpressionContext extends ExpressionContext {
3185
-
3186
- constructor(parser, ctx) {
3187
- super(parser);
3188
- this.op = null;;
3189
- super.copyFrom(ctx);
3190
- }
3191
-
3192
- expression = function(i) {
3193
- if(i===undefined) {
3194
- i = null;
3195
- }
3196
- if(i===null) {
3197
- return this.getTypedRuleContexts(ExpressionContext);
3198
- } else {
3199
- return this.getTypedRuleContext(ExpressionContext,i);
3200
- }
3201
- };
3202
-
3203
- STAR() {
3204
- return this.getToken(BrettParser.STAR, 0);
3205
- };
3206
-
3207
- SLASH() {
3208
- return this.getToken(BrettParser.SLASH, 0);
3209
- };
3210
-
3211
- PLUS() {
3212
- return this.getToken(BrettParser.PLUS, 0);
3213
- };
3214
-
3215
- MINUS() {
3216
- return this.getToken(BrettParser.MINUS, 0);
3217
- };
3218
-
3219
- LT() {
3220
- return this.getToken(BrettParser.LT, 0);
3221
- };
3222
-
3223
- LE() {
3224
- return this.getToken(BrettParser.LE, 0);
3225
- };
3226
-
3227
- GT() {
3228
- return this.getToken(BrettParser.GT, 0);
3229
- };
3230
-
3231
- GE() {
3232
- return this.getToken(BrettParser.GE, 0);
3233
- };
3234
-
3235
- EQ() {
3236
- return this.getToken(BrettParser.EQ, 0);
3237
- };
3238
-
3239
- NEQ() {
3240
- return this.getToken(BrettParser.NEQ, 0);
3241
- };
3242
-
3243
- enterRule(listener) {
3244
- if(listener instanceof BrettListener ) {
3245
- listener.enterBinaryExpression(this);
3246
- }
3247
- }
3248
-
3249
- exitRule(listener) {
3250
- if(listener instanceof BrettListener ) {
3251
- listener.exitBinaryExpression(this);
3252
- }
3253
- }
3254
-
3255
- accept(visitor) {
3256
- if ( visitor instanceof BrettVisitor ) {
3257
- return visitor.visitBinaryExpression(this);
3258
- } else {
3259
- return visitor.visitChildren(this);
3260
- }
3261
- }
3262
-
3263
-
3264
- }
3265
-
3266
- BrettParser.BinaryExpressionContext = BinaryExpressionContext;
3267
-
3268
- class NewExpressionContext extends ExpressionContext {
3269
-
3270
- constructor(parser, ctx) {
3271
- super(parser);
3272
- super.copyFrom(ctx);
3273
- }
3274
-
3275
- NEW() {
3276
- return this.getToken(BrettParser.NEW, 0);
3277
- };
3278
-
3279
- IDENTIFIER() {
3280
- return this.getToken(BrettParser.IDENTIFIER, 0);
3281
- };
3282
-
3283
- LPAREN() {
3284
- return this.getToken(BrettParser.LPAREN, 0);
3285
- };
3286
-
3287
- RPAREN() {
3288
- return this.getToken(BrettParser.RPAREN, 0);
3289
- };
3290
-
3291
- argList() {
3292
- return this.getTypedRuleContext(ArgListContext,0);
3293
- };
3294
-
3295
- enterRule(listener) {
3296
- if(listener instanceof BrettListener ) {
3297
- listener.enterNewExpression(this);
3298
- }
3299
- }
3300
-
3301
- exitRule(listener) {
3302
- if(listener instanceof BrettListener ) {
3303
- listener.exitNewExpression(this);
3304
- }
3305
- }
3306
-
3307
- accept(visitor) {
3308
- if ( visitor instanceof BrettVisitor ) {
3309
- return visitor.visitNewExpression(this);
3310
- } else {
3311
- return visitor.visitChildren(this);
3312
- }
3313
- }
3314
-
3315
-
3316
- }
3317
-
3318
- BrettParser.NewExpressionContext = NewExpressionContext;
3319
-
3320
- class PreIncrementDecrementContext extends ExpressionContext {
3321
-
3322
- constructor(parser, ctx) {
3323
- super(parser);
3324
- super.copyFrom(ctx);
3325
- }
3326
-
3327
- expression() {
3328
- return this.getTypedRuleContext(ExpressionContext,0);
3329
- };
3330
-
3331
- enterRule(listener) {
3332
- if(listener instanceof BrettListener ) {
3333
- listener.enterPreIncrementDecrement(this);
3334
- }
3335
- }
3336
-
3337
- exitRule(listener) {
3338
- if(listener instanceof BrettListener ) {
3339
- listener.exitPreIncrementDecrement(this);
3340
- }
3341
- }
3342
-
3343
- accept(visitor) {
3344
- if ( visitor instanceof BrettVisitor ) {
3345
- return visitor.visitPreIncrementDecrement(this);
3346
- } else {
3347
- return visitor.visitChildren(this);
3348
- }
3349
- }
3350
-
3351
-
3352
- }
3353
-
3354
- BrettParser.PreIncrementDecrementContext = PreIncrementDecrementContext;
3355
-
3356
- class IndexExpressionContext extends ExpressionContext {
3357
-
3358
- constructor(parser, ctx) {
3359
- super(parser);
3360
- super.copyFrom(ctx);
3361
- }
3362
-
3363
- expression = function(i) {
3364
- if(i===undefined) {
3365
- i = null;
3366
- }
3367
- if(i===null) {
3368
- return this.getTypedRuleContexts(ExpressionContext);
3369
- } else {
3370
- return this.getTypedRuleContext(ExpressionContext,i);
3371
- }
3372
- };
3373
-
3374
- LBRACK() {
3375
- return this.getToken(BrettParser.LBRACK, 0);
3376
- };
3377
-
3378
- RBRACK() {
3379
- return this.getToken(BrettParser.RBRACK, 0);
3380
- };
3381
-
3382
- enterRule(listener) {
3383
- if(listener instanceof BrettListener ) {
3384
- listener.enterIndexExpression(this);
3385
- }
3386
- }
3387
-
3388
- exitRule(listener) {
3389
- if(listener instanceof BrettListener ) {
3390
- listener.exitIndexExpression(this);
3391
- }
3392
- }
3393
-
3394
- accept(visitor) {
3395
- if ( visitor instanceof BrettVisitor ) {
3396
- return visitor.visitIndexExpression(this);
3397
- } else {
3398
- return visitor.visitChildren(this);
3399
- }
3400
- }
3401
-
3402
-
3403
- }
3404
-
3405
- BrettParser.IndexExpressionContext = IndexExpressionContext;
3406
-
3407
- class PostIncrementDecrementContext extends ExpressionContext {
3408
-
3409
- constructor(parser, ctx) {
3410
- super(parser);
3411
- super.copyFrom(ctx);
3412
- }
3413
-
3414
- expression() {
3415
- return this.getTypedRuleContext(ExpressionContext,0);
3416
- };
3417
-
3418
- enterRule(listener) {
3419
- if(listener instanceof BrettListener ) {
3420
- listener.enterPostIncrementDecrement(this);
3421
- }
3422
- }
3423
-
3424
- exitRule(listener) {
3425
- if(listener instanceof BrettListener ) {
3426
- listener.exitPostIncrementDecrement(this);
3427
- }
3428
- }
3429
-
3430
- accept(visitor) {
3431
- if ( visitor instanceof BrettVisitor ) {
3432
- return visitor.visitPostIncrementDecrement(this);
3433
- } else {
3434
- return visitor.visitChildren(this);
3435
- }
3436
- }
3437
-
3438
-
3439
- }
3440
-
3441
- BrettParser.PostIncrementDecrementContext = PostIncrementDecrementContext;
3442
-
3443
- class PrimaryContext extends antlr4.ParserRuleContext {
3444
-
3445
- constructor(parser, parent, invokingState) {
3446
- if(parent===undefined) {
3447
- parent = null;
3448
- }
3449
- if(invokingState===undefined || invokingState===null) {
3450
- invokingState = -1;
3451
- }
3452
- super(parent, invokingState);
3453
- this.parser = parser;
3454
- this.ruleIndex = BrettParser.RULE_primary;
3455
- }
3456
-
3457
-
3458
-
3459
- copyFrom(ctx) {
3460
- super.copyFrom(ctx);
3461
- }
3462
-
3463
- }
3464
-
3465
-
3466
- class ParenthesizedExpressionContext extends PrimaryContext {
3467
-
3468
- constructor(parser, ctx) {
3469
- super(parser);
3470
- super.copyFrom(ctx);
3471
- }
3472
-
3473
- LPAREN() {
3474
- return this.getToken(BrettParser.LPAREN, 0);
3475
- };
3476
-
3477
- expression() {
3478
- return this.getTypedRuleContext(ExpressionContext,0);
3479
- };
3480
-
3481
- RPAREN() {
3482
- return this.getToken(BrettParser.RPAREN, 0);
3483
- };
3484
-
3485
- enterRule(listener) {
3486
- if(listener instanceof BrettListener ) {
3487
- listener.enterParenthesizedExpression(this);
3488
- }
3489
- }
3490
-
3491
- exitRule(listener) {
3492
- if(listener instanceof BrettListener ) {
3493
- listener.exitParenthesizedExpression(this);
3494
- }
3495
- }
3496
-
3497
- accept(visitor) {
3498
- if ( visitor instanceof BrettVisitor ) {
3499
- return visitor.visitParenthesizedExpression(this);
3500
- } else {
3501
- return visitor.visitChildren(this);
3502
- }
3503
- }
3504
-
3505
-
3506
- }
3507
-
3508
- BrettParser.ParenthesizedExpressionContext = ParenthesizedExpressionContext;
3509
-
3510
- class ObjectLiteralExpressionContext extends PrimaryContext {
3511
-
3512
- constructor(parser, ctx) {
3513
- super(parser);
3514
- super.copyFrom(ctx);
3515
- }
3516
-
3517
- objectLiteral() {
3518
- return this.getTypedRuleContext(ObjectLiteralContext,0);
3519
- };
3520
-
3521
- enterRule(listener) {
3522
- if(listener instanceof BrettListener ) {
3523
- listener.enterObjectLiteralExpression(this);
3524
- }
3525
- }
3526
-
3527
- exitRule(listener) {
3528
- if(listener instanceof BrettListener ) {
3529
- listener.exitObjectLiteralExpression(this);
3530
- }
3531
- }
3532
-
3533
- accept(visitor) {
3534
- if ( visitor instanceof BrettVisitor ) {
3535
- return visitor.visitObjectLiteralExpression(this);
3536
- } else {
3537
- return visitor.visitChildren(this);
3538
- }
3539
- }
3540
-
3541
-
3542
- }
3543
-
3544
- BrettParser.ObjectLiteralExpressionContext = ObjectLiteralExpressionContext;
3545
-
3546
- class LiteralExpressionContext extends PrimaryContext {
3547
-
3548
- constructor(parser, ctx) {
3549
- super(parser);
3550
- super.copyFrom(ctx);
3551
- }
3552
-
3553
- NUMBER() {
3554
- return this.getToken(BrettParser.NUMBER, 0);
3555
- };
3556
-
3557
- STRING() {
3558
- return this.getToken(BrettParser.STRING, 0);
3559
- };
3560
-
3561
- enterRule(listener) {
3562
- if(listener instanceof BrettListener ) {
3563
- listener.enterLiteralExpression(this);
3564
- }
3565
- }
3566
-
3567
- exitRule(listener) {
3568
- if(listener instanceof BrettListener ) {
3569
- listener.exitLiteralExpression(this);
3570
- }
3571
- }
3572
-
3573
- accept(visitor) {
3574
- if ( visitor instanceof BrettVisitor ) {
3575
- return visitor.visitLiteralExpression(this);
3576
- } else {
3577
- return visitor.visitChildren(this);
3578
- }
3579
- }
3580
-
3581
-
3582
- }
3583
-
3584
- BrettParser.LiteralExpressionContext = LiteralExpressionContext;
3585
-
3586
- class ArrayLiteralExpressionContext extends PrimaryContext {
3587
-
3588
- constructor(parser, ctx) {
3589
- super(parser);
3590
- super.copyFrom(ctx);
3591
- }
3592
-
3593
- arrayLiteral() {
3594
- return this.getTypedRuleContext(ArrayLiteralContext,0);
3595
- };
3596
-
3597
- enterRule(listener) {
3598
- if(listener instanceof BrettListener ) {
3599
- listener.enterArrayLiteralExpression(this);
3600
- }
3601
- }
3602
-
3603
- exitRule(listener) {
3604
- if(listener instanceof BrettListener ) {
3605
- listener.exitArrayLiteralExpression(this);
3606
- }
3607
- }
3608
-
3609
- accept(visitor) {
3610
- if ( visitor instanceof BrettVisitor ) {
3611
- return visitor.visitArrayLiteralExpression(this);
3612
- } else {
3613
- return visitor.visitChildren(this);
3614
- }
3615
- }
3616
-
3617
-
3618
- }
3619
-
3620
- BrettParser.ArrayLiteralExpressionContext = ArrayLiteralExpressionContext;
3621
-
3622
- class FunctionCallExpressionContext extends PrimaryContext {
3623
-
3624
- constructor(parser, ctx) {
3625
- super(parser);
3626
- super.copyFrom(ctx);
3627
- }
3628
-
3629
- IDENTIFIER() {
3630
- return this.getToken(BrettParser.IDENTIFIER, 0);
3631
- };
3632
-
3633
- LPAREN() {
3634
- return this.getToken(BrettParser.LPAREN, 0);
3635
- };
3636
-
3637
- RPAREN() {
3638
- return this.getToken(BrettParser.RPAREN, 0);
3639
- };
3640
-
3641
- argList() {
3642
- return this.getTypedRuleContext(ArgListContext,0);
3643
- };
3644
-
3645
- enterRule(listener) {
3646
- if(listener instanceof BrettListener ) {
3647
- listener.enterFunctionCallExpression(this);
3648
- }
3649
- }
3650
-
3651
- exitRule(listener) {
3652
- if(listener instanceof BrettListener ) {
3653
- listener.exitFunctionCallExpression(this);
3654
- }
3655
- }
3656
-
3657
- accept(visitor) {
3658
- if ( visitor instanceof BrettVisitor ) {
3659
- return visitor.visitFunctionCallExpression(this);
3660
- } else {
3661
- return visitor.visitChildren(this);
3662
- }
3663
- }
3664
-
3665
-
3666
- }
3667
-
3668
- BrettParser.FunctionCallExpressionContext = FunctionCallExpressionContext;
3669
-
3670
- class IdentifierExpressionContext extends PrimaryContext {
3671
-
3672
- constructor(parser, ctx) {
3673
- super(parser);
3674
- super.copyFrom(ctx);
3675
- }
3676
-
3677
- IDENTIFIER() {
3678
- return this.getToken(BrettParser.IDENTIFIER, 0);
3679
- };
3680
-
3681
- enterRule(listener) {
3682
- if(listener instanceof BrettListener ) {
3683
- listener.enterIdentifierExpression(this);
3684
- }
3685
- }
3686
-
3687
- exitRule(listener) {
3688
- if(listener instanceof BrettListener ) {
3689
- listener.exitIdentifierExpression(this);
3690
- }
3691
- }
3692
-
3693
- accept(visitor) {
3694
- if ( visitor instanceof BrettVisitor ) {
3695
- return visitor.visitIdentifierExpression(this);
3696
- } else {
3697
- return visitor.visitChildren(this);
3698
- }
3699
- }
3700
-
3701
-
3702
- }
3703
-
3704
- BrettParser.IdentifierExpressionContext = IdentifierExpressionContext;
3705
-
3706
- class ArrayLiteralContext extends antlr4.ParserRuleContext {
3707
-
3708
- constructor(parser, parent, invokingState) {
3709
- if(parent===undefined) {
3710
- parent = null;
3711
- }
3712
- if(invokingState===undefined || invokingState===null) {
3713
- invokingState = -1;
3714
- }
3715
- super(parent, invokingState);
3716
- this.parser = parser;
3717
- this.ruleIndex = BrettParser.RULE_arrayLiteral;
3718
- }
3719
-
3720
- LBRACK() {
3721
- return this.getToken(BrettParser.LBRACK, 0);
3722
- };
3723
-
3724
- RBRACK() {
3725
- return this.getToken(BrettParser.RBRACK, 0);
3726
- };
3727
-
3728
- expression = function(i) {
3729
- if(i===undefined) {
3730
- i = null;
3731
- }
3732
- if(i===null) {
3733
- return this.getTypedRuleContexts(ExpressionContext);
3734
- } else {
3735
- return this.getTypedRuleContext(ExpressionContext,i);
3736
- }
3737
- };
3738
-
3739
- COMMA = function(i) {
3740
- if(i===undefined) {
3741
- i = null;
3742
- }
3743
- if(i===null) {
3744
- return this.getTokens(BrettParser.COMMA);
3745
- } else {
3746
- return this.getToken(BrettParser.COMMA, i);
3747
- }
3748
- };
3749
-
3750
-
3751
- enterRule(listener) {
3752
- if(listener instanceof BrettListener ) {
3753
- listener.enterArrayLiteral(this);
3754
- }
3755
- }
3756
-
3757
- exitRule(listener) {
3758
- if(listener instanceof BrettListener ) {
3759
- listener.exitArrayLiteral(this);
3760
- }
3761
- }
3762
-
3763
- accept(visitor) {
3764
- if ( visitor instanceof BrettVisitor ) {
3765
- return visitor.visitArrayLiteral(this);
3766
- } else {
3767
- return visitor.visitChildren(this);
3768
- }
3769
- }
3770
-
3771
-
3772
- }
3773
-
3774
-
3775
-
3776
- class ObjectLiteralContext extends antlr4.ParserRuleContext {
3777
-
3778
- constructor(parser, parent, invokingState) {
3779
- if(parent===undefined) {
3780
- parent = null;
3781
- }
3782
- if(invokingState===undefined || invokingState===null) {
3783
- invokingState = -1;
3784
- }
3785
- super(parent, invokingState);
3786
- this.parser = parser;
3787
- this.ruleIndex = BrettParser.RULE_objectLiteral;
3788
- }
3789
-
3790
- LBRACE() {
3791
- return this.getToken(BrettParser.LBRACE, 0);
3792
- };
3793
-
3794
- RBRACE() {
3795
- return this.getToken(BrettParser.RBRACE, 0);
3796
- };
3797
-
3798
- property = function(i) {
3799
- if(i===undefined) {
3800
- i = null;
3801
- }
3802
- if(i===null) {
3803
- return this.getTypedRuleContexts(PropertyContext);
3804
- } else {
3805
- return this.getTypedRuleContext(PropertyContext,i);
3806
- }
3807
- };
3808
-
3809
- COMMA = function(i) {
3810
- if(i===undefined) {
3811
- i = null;
3812
- }
3813
- if(i===null) {
3814
- return this.getTokens(BrettParser.COMMA);
3815
- } else {
3816
- return this.getToken(BrettParser.COMMA, i);
3817
- }
3818
- };
3819
-
3820
-
3821
- enterRule(listener) {
3822
- if(listener instanceof BrettListener ) {
3823
- listener.enterObjectLiteral(this);
3824
- }
3825
- }
3826
-
3827
- exitRule(listener) {
3828
- if(listener instanceof BrettListener ) {
3829
- listener.exitObjectLiteral(this);
3830
- }
3831
- }
3832
-
3833
- accept(visitor) {
3834
- if ( visitor instanceof BrettVisitor ) {
3835
- return visitor.visitObjectLiteral(this);
3836
- } else {
3837
- return visitor.visitChildren(this);
3838
- }
3839
- }
3840
-
3841
-
3842
- }
3843
-
3844
-
3845
-
3846
- class PropertyContext extends antlr4.ParserRuleContext {
3847
-
3848
- constructor(parser, parent, invokingState) {
3849
- if(parent===undefined) {
3850
- parent = null;
3851
- }
3852
- if(invokingState===undefined || invokingState===null) {
3853
- invokingState = -1;
3854
- }
3855
- super(parent, invokingState);
3856
- this.parser = parser;
3857
- this.ruleIndex = BrettParser.RULE_property;
3858
- }
3859
-
3860
- IDENTIFIER() {
3861
- return this.getToken(BrettParser.IDENTIFIER, 0);
3862
- };
3863
-
3864
- COLON() {
3865
- return this.getToken(BrettParser.COLON, 0);
3866
- };
3867
-
3868
- expression() {
3869
- return this.getTypedRuleContext(ExpressionContext,0);
3870
- };
3871
-
3872
- STRING() {
3873
- return this.getToken(BrettParser.STRING, 0);
3874
- };
3875
-
3876
- enterRule(listener) {
3877
- if(listener instanceof BrettListener ) {
3878
- listener.enterProperty(this);
3879
- }
3880
- }
3881
-
3882
- exitRule(listener) {
3883
- if(listener instanceof BrettListener ) {
3884
- listener.exitProperty(this);
3885
- }
3886
- }
3887
-
3888
- accept(visitor) {
3889
- if ( visitor instanceof BrettVisitor ) {
3890
- return visitor.visitProperty(this);
3891
- } else {
3892
- return visitor.visitChildren(this);
3893
- }
3894
- }
3895
-
3896
-
3897
- }
3898
-
3899
-
3900
-
3901
- class ArgListContext extends antlr4.ParserRuleContext {
3902
-
3903
- constructor(parser, parent, invokingState) {
3904
- if(parent===undefined) {
3905
- parent = null;
3906
- }
3907
- if(invokingState===undefined || invokingState===null) {
3908
- invokingState = -1;
3909
- }
3910
- super(parent, invokingState);
3911
- this.parser = parser;
3912
- this.ruleIndex = BrettParser.RULE_argList;
3913
- }
3914
-
3915
- expression = function(i) {
3916
- if(i===undefined) {
3917
- i = null;
3918
- }
3919
- if(i===null) {
3920
- return this.getTypedRuleContexts(ExpressionContext);
3921
- } else {
3922
- return this.getTypedRuleContext(ExpressionContext,i);
3923
- }
3924
- };
3925
-
3926
- COMMA = function(i) {
3927
- if(i===undefined) {
3928
- i = null;
3929
- }
3930
- if(i===null) {
3931
- return this.getTokens(BrettParser.COMMA);
3932
- } else {
3933
- return this.getToken(BrettParser.COMMA, i);
3934
- }
3935
- };
3936
-
3937
-
3938
- enterRule(listener) {
3939
- if(listener instanceof BrettListener ) {
3940
- listener.enterArgList(this);
3941
- }
3942
- }
3943
-
3944
- exitRule(listener) {
3945
- if(listener instanceof BrettListener ) {
3946
- listener.exitArgList(this);
3947
- }
3948
- }
3949
-
3950
- accept(visitor) {
3951
- if ( visitor instanceof BrettVisitor ) {
3952
- return visitor.visitArgList(this);
3953
- } else {
3954
- return visitor.visitChildren(this);
3955
- }
3956
- }
3957
-
3958
-
3959
- }
3960
-
3961
-
3962
-
3963
-
3964
- BrettParser.ProgramContext = ProgramContext;
3965
- BrettParser.StatementContext = StatementContext;
3966
- BrettParser.BlockContext = BlockContext;
3967
- BrettParser.VariableDeclarationContext = VariableDeclarationContext;
3968
- BrettParser.IfStatementContext = IfStatementContext;
3969
- BrettParser.WhileStatementContext = WhileStatementContext;
3970
- BrettParser.DoWhileStatementContext = DoWhileStatementContext;
3971
- BrettParser.ForStatementContext = ForStatementContext;
3972
- BrettParser.SwitchStatementContext = SwitchStatementContext;
3973
- BrettParser.SwitchCaseContext = SwitchCaseContext;
3974
- BrettParser.DefaultCaseContext = DefaultCaseContext;
3975
- BrettParser.ReturnStatementContext = ReturnStatementContext;
3976
- BrettParser.BreakStatementContext = BreakStatementContext;
3977
- BrettParser.ContinueStatementContext = ContinueStatementContext;
3978
- BrettParser.ExpressionStatementContext = ExpressionStatementContext;
3979
- BrettParser.FunctionDeclarationContext = FunctionDeclarationContext;
3980
- BrettParser.ParameterListContext = ParameterListContext;
3981
- BrettParser.ParameterContext = ParameterContext;
3982
- BrettParser.TypeContext = TypeContext;
3983
- BrettParser.BaseTypeContext = BaseTypeContext;
3984
- BrettParser.TryCatchStatementContext = TryCatchStatementContext;
3985
- BrettParser.ExpressionContext = ExpressionContext;
3986
- BrettParser.PrimaryContext = PrimaryContext;
3987
- BrettParser.ArrayLiteralContext = ArrayLiteralContext;
3988
- BrettParser.ObjectLiteralContext = ObjectLiteralContext;
3989
- BrettParser.PropertyContext = PropertyContext;
3990
- BrettParser.ArgListContext = ArgListContext;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("antlr4"),r=require("./BrettListener.js"),o=require("./BrettVisitor.js"),nt=[4,1,57,342,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,1,0,5,0,56,8,0,10,0,12,0,59,9,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,76,8,1,1,2,1,2,5,2,80,8,2,10,2,12,2,83,9,2,1,2,1,2,1,3,1,3,1,3,1,3,3,3,91,8,3,1,3,1,3,3,3,95,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,107,8,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,116,8,4,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,3,7,136,8,7,1,7,3,7,139,8,7,1,7,1,7,3,7,143,8,7,1,7,1,7,1,7,1,8,1,8,1,8,4,8,151,8,8,11,8,12,8,152,1,8,3,8,156,8,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,11,1,11,3,11,171,8,11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,15,1,15,3,15,188,8,15,1,15,1,15,1,15,3,15,193,8,15,1,15,1,15,1,16,1,16,1,16,5,16,200,8,16,10,16,12,16,203,9,16,1,17,1,17,1,17,3,17,208,8,17,1,18,1,18,1,18,1,18,1,18,5,18,215,8,18,10,18,12,18,218,9,18,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,3,20,229,8,20,1,20,1,20,1,20,1,20,3,20,235,8,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,246,8,21,1,21,1,21,1,21,3,21,251,8,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,5,21,275,8,21,10,21,12,21,278,9,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,293,8,22,1,22,1,22,1,22,3,22,298,8,22,1,23,1,23,1,23,1,23,5,23,304,8,23,10,23,12,23,307,9,23,3,23,309,8,23,1,23,1,23,1,24,1,24,1,24,1,24,5,24,317,8,24,10,24,12,24,320,9,24,3,24,322,8,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,3,25,332,8,25,1,26,1,26,1,26,5,26,337,8,26,10,26,12,26,340,9,26,1,26,0,2,36,42,27,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,0,6,3,0,2,5,25,25,54,54,1,0,6,7,1,0,40,41,1,0,38,39,1,0,34,37,1,0,32,33,373,0,57,1,0,0,0,2,75,1,0,0,0,4,77,1,0,0,0,6,106,1,0,0,0,8,108,1,0,0,0,10,117,1,0,0,0,12,123,1,0,0,0,14,131,1,0,0,0,16,147,1,0,0,0,18,159,1,0,0,0,20,164,1,0,0,0,22,168,1,0,0,0,24,174,1,0,0,0,26,177,1,0,0,0,28,180,1,0,0,0,30,183,1,0,0,0,32,196,1,0,0,0,34,204,1,0,0,0,36,209,1,0,0,0,38,219,1,0,0,0,40,221,1,0,0,0,42,250,1,0,0,0,44,297,1,0,0,0,46,299,1,0,0,0,48,312,1,0,0,0,50,331,1,0,0,0,52,333,1,0,0,0,54,56,3,2,1,0,55,54,1,0,0,0,56,59,1,0,0,0,57,55,1,0,0,0,57,58,1,0,0,0,58,60,1,0,0,0,59,57,1,0,0,0,60,61,5,0,0,1,61,1,1,0,0,0,62,76,3,6,3,0,63,76,3,30,15,0,64,76,3,8,4,0,65,76,3,10,5,0,66,76,3,14,7,0,67,76,3,16,8,0,68,76,3,22,11,0,69,76,3,28,14,0,70,76,3,4,2,0,71,76,3,24,12,0,72,76,3,26,13,0,73,76,3,12,6,0,74,76,3,40,20,0,75,62,1,0,0,0,75,63,1,0,0,0,75,64,1,0,0,0,75,65,1,0,0,0,75,66,1,0,0,0,75,67,1,0,0,0,75,68,1,0,0,0,75,69,1,0,0,0,75,70,1,0,0,0,75,71,1,0,0,0,75,72,1,0,0,0,75,73,1,0,0,0,75,74,1,0,0,0,76,3,1,0,0,0,77,81,5,49,0,0,78,80,3,2,1,0,79,78,1,0,0,0,80,83,1,0,0,0,81,79,1,0,0,0,81,82,1,0,0,0,82,84,1,0,0,0,83,81,1,0,0,0,84,85,5,50,0,0,85,5,1,0,0,0,86,87,5,11,0,0,87,90,5,54,0,0,88,89,5,44,0,0,89,91,3,36,18,0,90,88,1,0,0,0,90,91,1,0,0,0,91,94,1,0,0,0,92,93,5,42,0,0,93,95,3,42,21,0,94,92,1,0,0,0,94,95,1,0,0,0,95,96,1,0,0,0,96,107,5,43,0,0,97,98,5,12,0,0,98,99,5,54,0,0,99,100,5,44,0,0,100,101,3,36,18,0,101,102,1,0,0,0,102,103,5,42,0,0,103,104,3,42,21,0,104,105,5,43,0,0,105,107,1,0,0,0,106,86,1,0,0,0,106,97,1,0,0,0,107,7,1,0,0,0,108,109,5,14,0,0,109,110,5,47,0,0,110,111,3,42,21,0,111,112,5,48,0,0,112,115,3,4,2,0,113,114,5,15,0,0,114,116,3,4,2,0,115,113,1,0,0,0,115,116,1,0,0,0,116,9,1,0,0,0,117,118,5,16,0,0,118,119,5,47,0,0,119,120,3,42,21,0,120,121,5,48,0,0,121,122,3,4,2,0,122,11,1,0,0,0,123,124,5,18,0,0,124,125,3,4,2,0,125,126,5,16,0,0,126,127,5,47,0,0,127,128,3,42,21,0,128,129,5,48,0,0,129,130,5,43,0,0,130,13,1,0,0,0,131,132,5,17,0,0,132,135,5,47,0,0,133,136,3,6,3,0,134,136,3,28,14,0,135,133,1,0,0,0,135,134,1,0,0,0,135,136,1,0,0,0,136,138,1,0,0,0,137,139,3,42,21,0,138,137,1,0,0,0,138,139,1,0,0,0,139,140,1,0,0,0,140,142,5,43,0,0,141,143,3,42,21,0,142,141,1,0,0,0,142,143,1,0,0,0,143,144,1,0,0,0,144,145,5,48,0,0,145,146,3,4,2,0,146,15,1,0,0,0,147,148,5,26,0,0,148,150,5,49,0,0,149,151,3,18,9,0,150,149,1,0,0,0,151,152,1,0,0,0,152,150,1,0,0,0,152,153,1,0,0,0,153,155,1,0,0,0,154,156,3,20,10,0,155,154,1,0,0,0,155,156,1,0,0,0,156,157,1,0,0,0,157,158,5,50,0,0,158,17,1,0,0,0,159,160,5,27,0,0,160,161,3,42,21,0,161,162,5,53,0,0,162,163,3,4,2,0,163,19,1,0,0,0,164,165,5,28,0,0,165,166,5,53,0,0,166,167,3,4,2,0,167,21,1,0,0,0,168,170,5,29,0,0,169,171,3,42,21,0,170,169,1,0,0,0,170,171,1,0,0,0,171,172,1,0,0,0,172,173,5,43,0,0,173,23,1,0,0,0,174,175,5,22,0,0,175,176,5,43,0,0,176,25,1,0,0,0,177,178,5,23,0,0,178,179,5,43,0,0,179,27,1,0,0,0,180,181,3,42,21,0,181,182,5,43,0,0,182,29,1,0,0,0,183,184,5,13,0,0,184,185,5,54,0,0,185,187,5,47,0,0,186,188,3,32,16,0,187,186,1,0,0,0,187,188,1,0,0,0,188,189,1,0,0,0,189,192,5,48,0,0,190,191,5,44,0,0,191,193,3,36,18,0,192,190,1,0,0,0,192,193,1,0,0,0,193,194,1,0,0,0,194,195,3,4,2,0,195,31,1,0,0,0,196,201,3,34,17,0,197,198,5,45,0,0,198,200,3,34,17,0,199,197,1,0,0,0,200,203,1,0,0,0,201,199,1,0,0,0,201,202,1,0,0,0,202,33,1,0,0,0,203,201,1,0,0,0,204,207,5,54,0,0,205,206,5,44,0,0,206,208,3,36,18,0,207,205,1,0,0,0,207,208,1,0,0,0,208,35,1,0,0,0,209,210,6,18,-1,0,210,211,3,38,19,0,211,216,1,0,0,0,212,213,10,1,0,0,213,215,5,1,0,0,214,212,1,0,0,0,215,218,1,0,0,0,216,214,1,0,0,0,216,217,1,0,0,0,217,37,1,0,0,0,218,216,1,0,0,0,219,220,7,0,0,0,220,39,1,0,0,0,221,222,5,19,0,0,222,223,3,4,2,0,223,224,5,20,0,0,224,225,5,47,0,0,225,228,5,54,0,0,226,227,5,44,0,0,227,229,3,36,18,0,228,226,1,0,0,0,228,229,1,0,0,0,229,230,1,0,0,0,230,231,5,48,0,0,231,234,3,4,2,0,232,233,5,21,0,0,233,235,3,4,2,0,234,232,1,0,0,0,234,235,1,0,0,0,235,41,1,0,0,0,236,237,6,21,-1,0,237,251,3,44,22,0,238,239,5,54,0,0,239,240,5,42,0,0,240,251,3,42,21,6,241,242,5,24,0,0,242,243,5,54,0,0,243,245,5,47,0,0,244,246,3,52,26,0,245,244,1,0,0,0,245,246,1,0,0,0,246,247,1,0,0,0,247,251,5,48,0,0,248,249,7,1,0,0,249,251,3,42,21,1,250,236,1,0,0,0,250,238,1,0,0,0,250,241,1,0,0,0,250,248,1,0,0,0,251,276,1,0,0,0,252,253,10,10,0,0,253,254,7,2,0,0,254,275,3,42,21,11,255,256,10,9,0,0,256,257,7,3,0,0,257,275,3,42,21,10,258,259,10,8,0,0,259,260,7,4,0,0,260,275,3,42,21,9,261,262,10,7,0,0,262,263,7,5,0,0,263,275,3,42,21,8,264,265,10,5,0,0,265,266,5,51,0,0,266,267,3,42,21,0,267,268,5,52,0,0,268,275,1,0,0,0,269,270,10,4,0,0,270,271,5,46,0,0,271,275,5,54,0,0,272,273,10,2,0,0,273,275,7,1,0,0,274,252,1,0,0,0,274,255,1,0,0,0,274,258,1,0,0,0,274,261,1,0,0,0,274,264,1,0,0,0,274,269,1,0,0,0,274,272,1,0,0,0,275,278,1,0,0,0,276,274,1,0,0,0,276,277,1,0,0,0,277,43,1,0,0,0,278,276,1,0,0,0,279,298,5,30,0,0,280,298,5,31,0,0,281,298,5,8,0,0,282,298,5,9,0,0,283,298,5,10,0,0,284,298,5,54,0,0,285,286,5,47,0,0,286,287,3,42,21,0,287,288,5,48,0,0,288,298,1,0,0,0,289,290,5,54,0,0,290,292,5,47,0,0,291,293,3,52,26,0,292,291,1,0,0,0,292,293,1,0,0,0,293,294,1,0,0,0,294,298,5,48,0,0,295,298,3,46,23,0,296,298,3,48,24,0,297,279,1,0,0,0,297,280,1,0,0,0,297,281,1,0,0,0,297,282,1,0,0,0,297,283,1,0,0,0,297,284,1,0,0,0,297,285,1,0,0,0,297,289,1,0,0,0,297,295,1,0,0,0,297,296,1,0,0,0,298,45,1,0,0,0,299,308,5,51,0,0,300,305,3,42,21,0,301,302,5,45,0,0,302,304,3,42,21,0,303,301,1,0,0,0,304,307,1,0,0,0,305,303,1,0,0,0,305,306,1,0,0,0,306,309,1,0,0,0,307,305,1,0,0,0,308,300,1,0,0,0,308,309,1,0,0,0,309,310,1,0,0,0,310,311,5,52,0,0,311,47,1,0,0,0,312,321,5,49,0,0,313,318,3,50,25,0,314,315,5,45,0,0,315,317,3,50,25,0,316,314,1,0,0,0,317,320,1,0,0,0,318,316,1,0,0,0,318,319,1,0,0,0,319,322,1,0,0,0,320,318,1,0,0,0,321,313,1,0,0,0,321,322,1,0,0,0,322,323,1,0,0,0,323,324,5,50,0,0,324,49,1,0,0,0,325,326,5,54,0,0,326,327,5,44,0,0,327,332,3,42,21,0,328,329,5,31,0,0,329,330,5,44,0,0,330,332,3,42,21,0,331,325,1,0,0,0,331,328,1,0,0,0,332,51,1,0,0,0,333,338,3,42,21,0,334,335,5,45,0,0,335,337,3,42,21,0,336,334,1,0,0,0,337,340,1,0,0,0,338,336,1,0,0,0,338,339,1,0,0,0,339,53,1,0,0,0,340,338,1,0,0,0,32,57,75,81,90,94,106,115,135,138,142,152,155,170,187,192,201,207,216,228,234,245,250,274,276,292,297,305,308,318,321,331,338],K=new n.atn.ATNDeserializer().deserialize(nt),ht=K.decisionToState.map((a,t)=>new n.dfa.DFA(a,t)),at=new n.atn.PredictionContextCache;class e extends n.Parser{static grammarFileName="Brett.g4";static literalNames=[null,"'[]'","'string'","'number'","'bool'","'any'","'++'","'--'","'true'","'false'","'nil'","'let'","'const'","'def'","'if'","'else'","'while'","'for'","'do'","'try'","'catch'","'finally'","'break'","'continue'","'new'","'void'","'switch'","'case'","'default'","'return'",null,null,"'=='","'!='","'<='","'>='","'<'","'>'","'+'","'-'","'*'","'/'","'='","';'","':'","','","'.'","'('","')'","'{'","'}'","'['","']'","'=>'"];static symbolicNames=[null,null,null,null,null,null,null,null,null,null,null,"LET","CONST","DEF","IF","ELSE","WHILE","FOR","DO","TRY","CATCH","FINALLY","BREAK","CONTINUE","NEW","VOID","SWITCH","CASE","DEFAULT","RETURN","NUMBER","STRING","EQ","NEQ","LE","GE","LT","GT","PLUS","MINUS","STAR","SLASH","ASSIGN","SEMI","COLON","COMMA","DOT","LPAREN","RPAREN","LBRACE","RBRACE","LBRACK","RBRACK","ARROW","IDENTIFIER","WS","LINE_COMMENT","BLOCK_COMMENT"];static ruleNames=["program","statement","block","variableDeclaration","ifStatement","whileStatement","doWhileStatement","forStatement","switchStatement","switchCase","defaultCase","returnStatement","breakStatement","continueStatement","expressionStatement","functionDeclaration","parameterList","parameter","type","baseType","tryCatchStatement","expression","primary","arrayLiteral","objectLiteral","property","argList"];constructor(t){super(t),this._interp=new n.atn.ParserATNSimulator(this,K,ht,at),this.ruleNames=e.ruleNames,this.literalNames=e.literalNames,this.symbolicNames=e.symbolicNames}sempred(t,s,i){switch(s){case 18:return this.type_sempred(t,i);case 21:return this.expression_sempred(t,i);default:throw"No predicate with index:"+s}}type_sempred(t,s){if(s===0)return this.precpred(this._ctx,1);throw"No predicate with index:"+s}expression_sempred(t,s){switch(s){case 1:return this.precpred(this._ctx,10);case 2:return this.precpred(this._ctx,9);case 3:return this.precpred(this._ctx,8);case 4:return this.precpred(this._ctx,7);case 5:return this.precpred(this._ctx,5);case 6:return this.precpred(this._ctx,4);case 7:return this.precpred(this._ctx,2);default:throw"No predicate with index:"+s}}program(){let t=new j(this,this._ctx,this.state);this.enterRule(t,0,e.RULE_program);var s=0;try{for(this.enterOuterAlt(t,1),this.state=57,this._errHandler.sync(this),s=this._input.LA(1);(s&-32)===0&&(1<<s&3855581120)!==0||(s-47&-32)===0&&(1<<s-47&149)!==0;)this.state=54,this.statement(),this.state=59,this._errHandler.sync(this),s=this._input.LA(1);this.state=60,this.match(e.EOF)}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}statement(){let t=new L(this,this._ctx,this.state);this.enterRule(t,2,e.RULE_statement);try{this.state=75,this._errHandler.sync(this);var s=this._interp.adaptivePredict(this._input,1,this._ctx);switch(s){case 1:this.enterOuterAlt(t,1),this.state=62,this.variableDeclaration();break;case 2:this.enterOuterAlt(t,2),this.state=63,this.functionDeclaration();break;case 3:this.enterOuterAlt(t,3),this.state=64,this.ifStatement();break;case 4:this.enterOuterAlt(t,4),this.state=65,this.whileStatement();break;case 5:this.enterOuterAlt(t,5),this.state=66,this.forStatement();break;case 6:this.enterOuterAlt(t,6),this.state=67,this.switchStatement();break;case 7:this.enterOuterAlt(t,7),this.state=68,this.returnStatement();break;case 8:this.enterOuterAlt(t,8),this.state=69,this.expressionStatement();break;case 9:this.enterOuterAlt(t,9),this.state=70,this.block();break;case 10:this.enterOuterAlt(t,10),this.state=71,this.breakStatement();break;case 11:this.enterOuterAlt(t,11),this.state=72,this.continueStatement();break;case 12:this.enterOuterAlt(t,12),this.state=73,this.doWhileStatement();break;case 13:this.enterOuterAlt(t,13),this.state=74,this.tryCatchStatement();break}}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}block(){let t=new u(this,this._ctx,this.state);this.enterRule(t,4,e.RULE_block);var s=0;try{for(this.enterOuterAlt(t,1),this.state=77,this.match(e.LBRACE),this.state=81,this._errHandler.sync(this),s=this._input.LA(1);(s&-32)===0&&(1<<s&3855581120)!==0||(s-47&-32)===0&&(1<<s-47&149)!==0;)this.state=78,this.statement(),this.state=83,this._errHandler.sync(this),s=this._input.LA(1);this.state=84,this.match(e.RBRACE)}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}variableDeclaration(){let t=new I(this,this._ctx,this.state);this.enterRule(t,6,e.RULE_variableDeclaration);var s=0;try{switch(this.state=106,this._errHandler.sync(this),this._input.LA(1)){case 11:this.enterOuterAlt(t,1),this.state=86,this.match(e.LET),this.state=87,this.match(e.IDENTIFIER),this.state=90,this._errHandler.sync(this),s=this._input.LA(1),s===44&&(this.state=88,this.match(e.COLON),this.state=89,this.type(0)),this.state=94,this._errHandler.sync(this),s=this._input.LA(1),s===42&&(this.state=92,this.match(e.ASSIGN),this.state=93,this.expression(0)),this.state=96,this.match(e.SEMI);break;case 12:this.enterOuterAlt(t,2),this.state=97,this.match(e.CONST),this.state=98,this.match(e.IDENTIFIER),this.state=99,this.match(e.COLON),this.state=100,this.type(0),this.state=102,this.match(e.ASSIGN),this.state=103,this.expression(0),this.state=104,this.match(e.SEMI);break;default:throw new n.error.NoViableAltException(this)}}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}ifStatement(){let t=new O(this,this._ctx,this.state);this.enterRule(t,8,e.RULE_ifStatement);var s=0;try{this.enterOuterAlt(t,1),this.state=108,this.match(e.IF),this.state=109,this.match(e.LPAREN),this.state=110,this.expression(0),this.state=111,this.match(e.RPAREN),this.state=112,this.block(),this.state=115,this._errHandler.sync(this),s=this._input.LA(1),s===15&&(this.state=113,this.match(e.ELSE),this.state=114,this.block())}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}whileStatement(){let t=new S(this,this._ctx,this.state);this.enterRule(t,10,e.RULE_whileStatement);try{this.enterOuterAlt(t,1),this.state=117,this.match(e.WHILE),this.state=118,this.match(e.LPAREN),this.state=119,this.expression(0),this.state=120,this.match(e.RPAREN),this.state=121,this.block()}catch(s){if(s instanceof n.error.RecognitionException)t.exception=s,this._errHandler.reportError(this,s),this._errHandler.recover(this,s);else throw s}finally{this.exitRule()}return t}doWhileStatement(){let t=new g(this,this._ctx,this.state);this.enterRule(t,12,e.RULE_doWhileStatement);try{this.enterOuterAlt(t,1),this.state=123,this.match(e.DO),this.state=124,this.block(),this.state=125,this.match(e.WHILE),this.state=126,this.match(e.LPAREN),this.state=127,this.expression(0),this.state=128,this.match(e.RPAREN),this.state=129,this.match(e.SEMI)}catch(s){if(s instanceof n.error.RecognitionException)t.exception=s,this._errHandler.reportError(this,s),this._errHandler.recover(this,s);else throw s}finally{this.exitRule()}return t}forStatement(){let t=new H(this,this._ctx,this.state);this.enterRule(t,14,e.RULE_forStatement);var s=0;try{this.enterOuterAlt(t,1),this.state=131,this.match(e.FOR),this.state=132,this.match(e.LPAREN),this.state=135,this._errHandler.sync(this);var i=this._interp.adaptivePredict(this._input,7,this._ctx);i===1?(this.state=133,this.variableDeclaration()):i===2&&(this.state=134,this.expressionStatement()),this.state=138,this._errHandler.sync(this),s=this._input.LA(1),((s&-32)===0&&(1<<s&3238004672)!==0||(s-47&-32)===0&&(1<<s-47&149)!==0)&&(this.state=137,this.expression(0)),this.state=140,this.match(e.SEMI),this.state=142,this._errHandler.sync(this),s=this._input.LA(1),((s&-32)===0&&(1<<s&3238004672)!==0||(s-47&-32)===0&&(1<<s-47&149)!==0)&&(this.state=141,this.expression(0)),this.state=144,this.match(e.RPAREN),this.state=145,this.block()}catch(h){if(h instanceof n.error.RecognitionException)t.exception=h,this._errHandler.reportError(this,h),this._errHandler.recover(this,h);else throw h}finally{this.exitRule()}return t}switchStatement(){let t=new b(this,this._ctx,this.state);this.enterRule(t,16,e.RULE_switchStatement);var s=0;try{this.enterOuterAlt(t,1),this.state=147,this.match(e.SWITCH),this.state=148,this.match(e.LBRACE),this.state=150,this._errHandler.sync(this),s=this._input.LA(1);do this.state=149,this.switchCase(),this.state=152,this._errHandler.sync(this),s=this._input.LA(1);while(s===27);this.state=155,this._errHandler.sync(this),s=this._input.LA(1),s===28&&(this.state=154,this.defaultCase()),this.state=157,this.match(e.RBRACE)}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}switchCase(){let t=new y(this,this._ctx,this.state);this.enterRule(t,18,e.RULE_switchCase);try{this.enterOuterAlt(t,1),this.state=159,this.match(e.CASE),this.state=160,this.expression(0),this.state=161,this.match(e.ARROW),this.state=162,this.block()}catch(s){if(s instanceof n.error.RecognitionException)t.exception=s,this._errHandler.reportError(this,s),this._errHandler.recover(this,s);else throw s}finally{this.exitRule()}return t}defaultCase(){let t=new U(this,this._ctx,this.state);this.enterRule(t,20,e.RULE_defaultCase);try{this.enterOuterAlt(t,1),this.state=164,this.match(e.DEFAULT),this.state=165,this.match(e.ARROW),this.state=166,this.block()}catch(s){if(s instanceof n.error.RecognitionException)t.exception=s,this._errHandler.reportError(this,s),this._errHandler.recover(this,s);else throw s}finally{this.exitRule()}return t}returnStatement(){let t=new F(this,this._ctx,this.state);this.enterRule(t,22,e.RULE_returnStatement);var s=0;try{this.enterOuterAlt(t,1),this.state=168,this.match(e.RETURN),this.state=170,this._errHandler.sync(this),s=this._input.LA(1),((s&-32)===0&&(1<<s&3238004672)!==0||(s-47&-32)===0&&(1<<s-47&149)!==0)&&(this.state=169,this.expression(0)),this.state=172,this.match(e.SEMI)}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}breakStatement(){let t=new D(this,this._ctx,this.state);this.enterRule(t,24,e.RULE_breakStatement);try{this.enterOuterAlt(t,1),this.state=174,this.match(e.BREAK),this.state=175,this.match(e.SEMI)}catch(s){if(s instanceof n.error.RecognitionException)t.exception=s,this._errHandler.reportError(this,s),this._errHandler.recover(this,s);else throw s}finally{this.exitRule()}return t}continueStatement(){let t=new k(this,this._ctx,this.state);this.enterRule(t,26,e.RULE_continueStatement);try{this.enterOuterAlt(t,1),this.state=177,this.match(e.CONTINUE),this.state=178,this.match(e.SEMI)}catch(s){if(s instanceof n.error.RecognitionException)t.exception=s,this._errHandler.reportError(this,s),this._errHandler.recover(this,s);else throw s}finally{this.exitRule()}return t}expressionStatement(){let t=new N(this,this._ctx,this.state);this.enterRule(t,28,e.RULE_expressionStatement);try{this.enterOuterAlt(t,1),this.state=180,this.expression(0),this.state=181,this.match(e.SEMI)}catch(s){if(s instanceof n.error.RecognitionException)t.exception=s,this._errHandler.reportError(this,s),this._errHandler.recover(this,s);else throw s}finally{this.exitRule()}return t}functionDeclaration(){let t=new M(this,this._ctx,this.state);this.enterRule(t,30,e.RULE_functionDeclaration);var s=0;try{this.enterOuterAlt(t,1),this.state=183,this.match(e.DEF),this.state=184,this.match(e.IDENTIFIER),this.state=185,this.match(e.LPAREN),this.state=187,this._errHandler.sync(this),s=this._input.LA(1),s===54&&(this.state=186,this.parameterList()),this.state=189,this.match(e.RPAREN),this.state=192,this._errHandler.sync(this),s=this._input.LA(1),s===44&&(this.state=190,this.match(e.COLON),this.state=191,this.type(0)),this.state=194,this.block()}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}parameterList(){let t=new B(this,this._ctx,this.state);this.enterRule(t,32,e.RULE_parameterList);var s=0;try{for(this.enterOuterAlt(t,1),this.state=196,this.parameter(),this.state=201,this._errHandler.sync(this),s=this._input.LA(1);s===45;)this.state=197,this.match(e.COMMA),this.state=198,this.parameter(),this.state=203,this._errHandler.sync(this),s=this._input.LA(1)}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}parameter(){let t=new A(this,this._ctx,this.state);this.enterRule(t,34,e.RULE_parameter);var s=0;try{this.enterOuterAlt(t,1),this.state=204,this.match(e.IDENTIFIER),this.state=207,this._errHandler.sync(this),s=this._input.LA(1),s===44&&(this.state=205,this.match(e.COLON),this.state=206,this.type(0))}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}type(t){t===void 0&&(t=0);const s=this._ctx,i=this.state;let h=new x(this,this._ctx,i),d=h;const p=36;this.enterRecursionRule(h,36,e.RULE_type,t);try{this.enterOuterAlt(h,1),h=new z(this,h),this._ctx=h,d=h,this.state=210,this.baseType(),this._ctx.stop=this._input.LT(-1),this.state=216,this._errHandler.sync(this);for(var l=this._interp.adaptivePredict(this._input,17,this._ctx);l!=2&&l!=n.atn.ATN.INVALID_ALT_NUMBER;){if(l===1){if(this._parseListeners!==null&&this.triggerExitRuleEvent(),d=h,h=new Y(this,new x(this,s,i)),this.pushNewRecursionContext(h,p,e.RULE_type),this.state=212,!this.precpred(this._ctx,1))throw new n.error.FailedPredicateException(this,"this.precpred(this._ctx, 1)");this.state=213,this.match(e.T__0)}this.state=218,this._errHandler.sync(this),l=this._interp.adaptivePredict(this._input,17,this._ctx)}}catch(f){if(f instanceof n.error.RecognitionException)h.exception=f,this._errHandler.reportError(this,f),this._errHandler.recover(this,f);else throw f}finally{this.unrollRecursionContexts(s)}return h}baseType(){let t=new V(this,this._ctx,this.state);this.enterRule(t,38,e.RULE_baseType);var s=0;try{this.enterOuterAlt(t,1),this.state=219,s=this._input.LA(1),(s&-32)===0&&(1<<s&33554492)!==0||s===54?(this._errHandler.reportMatch(this),this.consume()):this._errHandler.recoverInline(this)}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}tryCatchStatement(){let t=new W(this,this._ctx,this.state);this.enterRule(t,40,e.RULE_tryCatchStatement);var s=0;try{this.enterOuterAlt(t,1),this.state=221,this.match(e.TRY),this.state=222,this.block(),this.state=223,this.match(e.CATCH),this.state=224,this.match(e.LPAREN),this.state=225,this.match(e.IDENTIFIER),this.state=228,this._errHandler.sync(this),s=this._input.LA(1),s===44&&(this.state=226,this.match(e.COLON),this.state=227,this.type(0)),this.state=230,this.match(e.RPAREN),this.state=231,this.block(),this.state=234,this._errHandler.sync(this),s=this._input.LA(1),s===21&&(this.state=232,this.match(e.FINALLY),this.state=233,this.block())}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}expression(t){t===void 0&&(t=0);const s=this._ctx,i=this.state;let h=new c(this,this._ctx,i),d=h;const p=42;this.enterRecursionRule(h,42,e.RULE_expression,t);var l=0;try{this.enterOuterAlt(h,1),this.state=250,this._errHandler.sync(this);var f=this._interp.adaptivePredict(this._input,21,this._ctx);switch(f){case 1:h=new q(this,h),this._ctx=h,d=h,this.state=237,this.primary();break;case 2:h=new v(this,h),this._ctx=h,d=h,this.state=238,this.match(e.IDENTIFIER),this.state=239,this.match(e.ASSIGN),this.state=240,this.expression(6);break;case 3:h=new J(this,h),this._ctx=h,d=h,this.state=241,this.match(e.NEW),this.state=242,this.match(e.IDENTIFIER),this.state=243,this.match(e.LPAREN),this.state=245,this._errHandler.sync(this),l=this._input.LA(1),((l&-32)===0&&(1<<l&3238004672)!==0||(l-47&-32)===0&&(1<<l-47&149)!==0)&&(this.state=244,this.argList()),this.state=247,this.match(e.RPAREN);break;case 4:h=new X(this,h),this._ctx=h,d=h,this.state=248,l=this._input.LA(1),l===6||l===7?(this._errHandler.reportMatch(this),this.consume()):this._errHandler.recoverInline(this),this.state=249,this.expression(1);break}this._ctx.stop=this._input.LT(-1),this.state=276,this._errHandler.sync(this);for(var T=this._interp.adaptivePredict(this._input,23,this._ctx);T!=2&&T!=n.atn.ATN.INVALID_ALT_NUMBER;){if(T===1){this._parseListeners!==null&&this.triggerExitRuleEvent(),d=h,this.state=274,this._errHandler.sync(this);var f=this._interp.adaptivePredict(this._input,22,this._ctx);switch(f){case 1:if(h=new m(this,new c(this,s,i)),this.pushNewRecursionContext(h,p,e.RULE_expression),this.state=252,!this.precpred(this._ctx,10))throw new n.error.FailedPredicateException(this,"this.precpred(this._ctx, 10)");this.state=253,h.op=this._input.LT(1),l=this._input.LA(1),l===40||l===41?(this._errHandler.reportMatch(this),this.consume()):h.op=this._errHandler.recoverInline(this),this.state=254,this.expression(11);break;case 2:if(h=new m(this,new c(this,s,i)),this.pushNewRecursionContext(h,p,e.RULE_expression),this.state=255,!this.precpred(this._ctx,9))throw new n.error.FailedPredicateException(this,"this.precpred(this._ctx, 9)");this.state=256,h.op=this._input.LT(1),l=this._input.LA(1),l===38||l===39?(this._errHandler.reportMatch(this),this.consume()):h.op=this._errHandler.recoverInline(this),this.state=257,this.expression(10);break;case 3:if(h=new m(this,new c(this,s,i)),this.pushNewRecursionContext(h,p,e.RULE_expression),this.state=258,!this.precpred(this._ctx,8))throw new n.error.FailedPredicateException(this,"this.precpred(this._ctx, 8)");this.state=259,h.op=this._input.LT(1),l=this._input.LA(1),(l-34&-32)===0&&(1<<l-34&15)!==0?(this._errHandler.reportMatch(this),this.consume()):h.op=this._errHandler.recoverInline(this),this.state=260,this.expression(9);break;case 4:if(h=new m(this,new c(this,s,i)),this.pushNewRecursionContext(h,p,e.RULE_expression),this.state=261,!this.precpred(this._ctx,7))throw new n.error.FailedPredicateException(this,"this.precpred(this._ctx, 7)");this.state=262,h.op=this._input.LT(1),l=this._input.LA(1),l===32||l===33?(this._errHandler.reportMatch(this),this.consume()):h.op=this._errHandler.recoverInline(this),this.state=263,this.expression(8);break;case 5:if(h=new Z(this,new c(this,s,i)),this.pushNewRecursionContext(h,p,e.RULE_expression),this.state=264,!this.precpred(this._ctx,5))throw new n.error.FailedPredicateException(this,"this.precpred(this._ctx, 5)");this.state=265,this.match(e.LBRACK),this.state=266,this.expression(0),this.state=267,this.match(e.RBRACK);break;case 6:if(h=new Q(this,new c(this,s,i)),this.pushNewRecursionContext(h,p,e.RULE_expression),this.state=269,!this.precpred(this._ctx,4))throw new n.error.FailedPredicateException(this,"this.precpred(this._ctx, 4)");this.state=270,this.match(e.DOT),this.state=271,this.match(e.IDENTIFIER);break;case 7:if(h=new $(this,new c(this,s,i)),this.pushNewRecursionContext(h,p,e.RULE_expression),this.state=272,!this.precpred(this._ctx,2))throw new n.error.FailedPredicateException(this,"this.precpred(this._ctx, 2)");this.state=273,l=this._input.LA(1),l===6||l===7?(this._errHandler.reportMatch(this),this.consume()):this._errHandler.recoverInline(this);break}}this.state=278,this._errHandler.sync(this),T=this._interp.adaptivePredict(this._input,23,this._ctx)}}catch(C){if(C instanceof n.error.RecognitionException)h.exception=C,this._errHandler.reportError(this,C),this._errHandler.recover(this,C);else throw C}finally{this.unrollRecursionContexts(s)}return h}primary(){let t=new R(this,this._ctx,this.state);this.enterRule(t,44,e.RULE_primary);var s=0;try{this.state=297,this._errHandler.sync(this);var i=this._interp.adaptivePredict(this._input,25,this._ctx);switch(i){case 1:t=new E(this,t),this.enterOuterAlt(t,1),this.state=279,this.match(e.NUMBER);break;case 2:t=new E(this,t),this.enterOuterAlt(t,2),this.state=280,this.match(e.STRING);break;case 3:t=new E(this,t),this.enterOuterAlt(t,3),this.state=281,this.match(e.T__7);break;case 4:t=new E(this,t),this.enterOuterAlt(t,4),this.state=282,this.match(e.T__8);break;case 5:t=new E(this,t),this.enterOuterAlt(t,5),this.state=283,this.match(e.T__9);break;case 6:t=new rt(this,t),this.enterOuterAlt(t,6),this.state=284,this.match(e.IDENTIFIER);break;case 7:t=new tt(this,t),this.enterOuterAlt(t,7),this.state=285,this.match(e.LPAREN),this.state=286,this.expression(0),this.state=287,this.match(e.RPAREN);break;case 8:t=new it(this,t),this.enterOuterAlt(t,8),this.state=289,this.match(e.IDENTIFIER),this.state=290,this.match(e.LPAREN),this.state=292,this._errHandler.sync(this),s=this._input.LA(1),((s&-32)===0&&(1<<s&3238004672)!==0||(s-47&-32)===0&&(1<<s-47&149)!==0)&&(this.state=291,this.argList()),this.state=294,this.match(e.RPAREN);break;case 9:t=new st(this,t),this.enterOuterAlt(t,9),this.state=295,this.arrayLiteral();break;case 10:t=new et(this,t),this.enterOuterAlt(t,10),this.state=296,this.objectLiteral();break}}catch(h){if(h instanceof n.error.RecognitionException)t.exception=h,this._errHandler.reportError(this,h),this._errHandler.recover(this,h);else throw h}finally{this.exitRule()}return t}arrayLiteral(){let t=new G(this,this._ctx,this.state);this.enterRule(t,46,e.RULE_arrayLiteral);var s=0;try{if(this.enterOuterAlt(t,1),this.state=299,this.match(e.LBRACK),this.state=308,this._errHandler.sync(this),s=this._input.LA(1),(s&-32)===0&&(1<<s&3238004672)!==0||(s-47&-32)===0&&(1<<s-47&149)!==0)for(this.state=300,this.expression(0),this.state=305,this._errHandler.sync(this),s=this._input.LA(1);s===45;)this.state=301,this.match(e.COMMA),this.state=302,this.expression(0),this.state=307,this._errHandler.sync(this),s=this._input.LA(1);this.state=310,this.match(e.RBRACK)}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}objectLiteral(){let t=new P(this,this._ctx,this.state);this.enterRule(t,48,e.RULE_objectLiteral);var s=0;try{if(this.enterOuterAlt(t,1),this.state=312,this.match(e.LBRACE),this.state=321,this._errHandler.sync(this),s=this._input.LA(1),s===31||s===54)for(this.state=313,this.property(),this.state=318,this._errHandler.sync(this),s=this._input.LA(1);s===45;)this.state=314,this.match(e.COMMA),this.state=315,this.property(),this.state=320,this._errHandler.sync(this),s=this._input.LA(1);this.state=323,this.match(e.RBRACE)}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}property(){let t=new _(this,this._ctx,this.state);this.enterRule(t,50,e.RULE_property);try{switch(this.state=331,this._errHandler.sync(this),this._input.LA(1)){case 54:this.enterOuterAlt(t,1),this.state=325,this.match(e.IDENTIFIER),this.state=326,this.match(e.COLON),this.state=327,this.expression(0);break;case 31:this.enterOuterAlt(t,2),this.state=328,this.match(e.STRING),this.state=329,this.match(e.COLON),this.state=330,this.expression(0);break;default:throw new n.error.NoViableAltException(this)}}catch(s){if(s instanceof n.error.RecognitionException)t.exception=s,this._errHandler.reportError(this,s),this._errHandler.recover(this,s);else throw s}finally{this.exitRule()}return t}argList(){let t=new w(this,this._ctx,this.state);this.enterRule(t,52,e.RULE_argList);var s=0;try{for(this.enterOuterAlt(t,1),this.state=333,this.expression(0),this.state=338,this._errHandler.sync(this),s=this._input.LA(1);s===45;)this.state=334,this.match(e.COMMA),this.state=335,this.expression(0),this.state=340,this._errHandler.sync(this),s=this._input.LA(1)}catch(i){if(i instanceof n.error.RecognitionException)t.exception=i,this._errHandler.reportError(this,i),this._errHandler.recover(this,i);else throw i}finally{this.exitRule()}return t}}e.EOF=n.Token.EOF;e.T__0=1;e.T__1=2;e.T__2=3;e.T__3=4;e.T__4=5;e.T__5=6;e.T__6=7;e.T__7=8;e.T__8=9;e.T__9=10;e.LET=11;e.CONST=12;e.DEF=13;e.IF=14;e.ELSE=15;e.WHILE=16;e.FOR=17;e.DO=18;e.TRY=19;e.CATCH=20;e.FINALLY=21;e.BREAK=22;e.CONTINUE=23;e.NEW=24;e.VOID=25;e.SWITCH=26;e.CASE=27;e.DEFAULT=28;e.RETURN=29;e.NUMBER=30;e.STRING=31;e.EQ=32;e.NEQ=33;e.LE=34;e.GE=35;e.LT=36;e.GT=37;e.PLUS=38;e.MINUS=39;e.STAR=40;e.SLASH=41;e.ASSIGN=42;e.SEMI=43;e.COLON=44;e.COMMA=45;e.DOT=46;e.LPAREN=47;e.RPAREN=48;e.LBRACE=49;e.RBRACE=50;e.LBRACK=51;e.RBRACK=52;e.ARROW=53;e.IDENTIFIER=54;e.WS=55;e.LINE_COMMENT=56;e.BLOCK_COMMENT=57;e.RULE_program=0;e.RULE_statement=1;e.RULE_block=2;e.RULE_variableDeclaration=3;e.RULE_ifStatement=4;e.RULE_whileStatement=5;e.RULE_doWhileStatement=6;e.RULE_forStatement=7;e.RULE_switchStatement=8;e.RULE_switchCase=9;e.RULE_defaultCase=10;e.RULE_returnStatement=11;e.RULE_breakStatement=12;e.RULE_continueStatement=13;e.RULE_expressionStatement=14;e.RULE_functionDeclaration=15;e.RULE_parameterList=16;e.RULE_parameter=17;e.RULE_type=18;e.RULE_baseType=19;e.RULE_tryCatchStatement=20;e.RULE_expression=21;e.RULE_primary=22;e.RULE_arrayLiteral=23;e.RULE_objectLiteral=24;e.RULE_property=25;e.RULE_argList=26;class j extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_program}EOF(){return this.getToken(e.EOF,0)}statement=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(L):this.getTypedRuleContext(L,t)};enterRule(t){t instanceof r.BrettListener&&t.enterProgram(this)}exitRule(t){t instanceof r.BrettListener&&t.exitProgram(this)}accept(t){return t instanceof o.BrettVisitor?t.visitProgram(this):t.visitChildren(this)}}class L extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_statement}variableDeclaration(){return this.getTypedRuleContext(I,0)}functionDeclaration(){return this.getTypedRuleContext(M,0)}ifStatement(){return this.getTypedRuleContext(O,0)}whileStatement(){return this.getTypedRuleContext(S,0)}forStatement(){return this.getTypedRuleContext(H,0)}switchStatement(){return this.getTypedRuleContext(b,0)}returnStatement(){return this.getTypedRuleContext(F,0)}expressionStatement(){return this.getTypedRuleContext(N,0)}block(){return this.getTypedRuleContext(u,0)}breakStatement(){return this.getTypedRuleContext(D,0)}continueStatement(){return this.getTypedRuleContext(k,0)}doWhileStatement(){return this.getTypedRuleContext(g,0)}tryCatchStatement(){return this.getTypedRuleContext(W,0)}enterRule(t){t instanceof r.BrettListener&&t.enterStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitStatement(this):t.visitChildren(this)}}class u extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_block}LBRACE(){return this.getToken(e.LBRACE,0)}RBRACE(){return this.getToken(e.RBRACE,0)}statement=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(L):this.getTypedRuleContext(L,t)};enterRule(t){t instanceof r.BrettListener&&t.enterBlock(this)}exitRule(t){t instanceof r.BrettListener&&t.exitBlock(this)}accept(t){return t instanceof o.BrettVisitor?t.visitBlock(this):t.visitChildren(this)}}class I extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_variableDeclaration}LET(){return this.getToken(e.LET,0)}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}SEMI(){return this.getToken(e.SEMI,0)}COLON(){return this.getToken(e.COLON,0)}type(){return this.getTypedRuleContext(x,0)}ASSIGN(){return this.getToken(e.ASSIGN,0)}expression(){return this.getTypedRuleContext(c,0)}CONST(){return this.getToken(e.CONST,0)}enterRule(t){t instanceof r.BrettListener&&t.enterVariableDeclaration(this)}exitRule(t){t instanceof r.BrettListener&&t.exitVariableDeclaration(this)}accept(t){return t instanceof o.BrettVisitor?t.visitVariableDeclaration(this):t.visitChildren(this)}}class O extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_ifStatement}IF(){return this.getToken(e.IF,0)}LPAREN(){return this.getToken(e.LPAREN,0)}expression(){return this.getTypedRuleContext(c,0)}RPAREN(){return this.getToken(e.RPAREN,0)}block=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(u):this.getTypedRuleContext(u,t)};ELSE(){return this.getToken(e.ELSE,0)}enterRule(t){t instanceof r.BrettListener&&t.enterIfStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitIfStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitIfStatement(this):t.visitChildren(this)}}class S extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_whileStatement}WHILE(){return this.getToken(e.WHILE,0)}LPAREN(){return this.getToken(e.LPAREN,0)}expression(){return this.getTypedRuleContext(c,0)}RPAREN(){return this.getToken(e.RPAREN,0)}block(){return this.getTypedRuleContext(u,0)}enterRule(t){t instanceof r.BrettListener&&t.enterWhileStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitWhileStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitWhileStatement(this):t.visitChildren(this)}}class g extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_doWhileStatement}DO(){return this.getToken(e.DO,0)}block(){return this.getTypedRuleContext(u,0)}WHILE(){return this.getToken(e.WHILE,0)}LPAREN(){return this.getToken(e.LPAREN,0)}expression(){return this.getTypedRuleContext(c,0)}RPAREN(){return this.getToken(e.RPAREN,0)}SEMI(){return this.getToken(e.SEMI,0)}enterRule(t){t instanceof r.BrettListener&&t.enterDoWhileStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitDoWhileStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitDoWhileStatement(this):t.visitChildren(this)}}class H extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_forStatement}FOR(){return this.getToken(e.FOR,0)}LPAREN(){return this.getToken(e.LPAREN,0)}SEMI(){return this.getToken(e.SEMI,0)}RPAREN(){return this.getToken(e.RPAREN,0)}block(){return this.getTypedRuleContext(u,0)}variableDeclaration(){return this.getTypedRuleContext(I,0)}expressionStatement(){return this.getTypedRuleContext(N,0)}expression=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(c):this.getTypedRuleContext(c,t)};enterRule(t){t instanceof r.BrettListener&&t.enterForStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitForStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitForStatement(this):t.visitChildren(this)}}class b extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_switchStatement}SWITCH(){return this.getToken(e.SWITCH,0)}LBRACE(){return this.getToken(e.LBRACE,0)}RBRACE(){return this.getToken(e.RBRACE,0)}switchCase=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(y):this.getTypedRuleContext(y,t)};defaultCase(){return this.getTypedRuleContext(U,0)}enterRule(t){t instanceof r.BrettListener&&t.enterSwitchStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitSwitchStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitSwitchStatement(this):t.visitChildren(this)}}class y extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_switchCase}CASE(){return this.getToken(e.CASE,0)}expression(){return this.getTypedRuleContext(c,0)}ARROW(){return this.getToken(e.ARROW,0)}block(){return this.getTypedRuleContext(u,0)}enterRule(t){t instanceof r.BrettListener&&t.enterSwitchCase(this)}exitRule(t){t instanceof r.BrettListener&&t.exitSwitchCase(this)}accept(t){return t instanceof o.BrettVisitor?t.visitSwitchCase(this):t.visitChildren(this)}}class U extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_defaultCase}DEFAULT(){return this.getToken(e.DEFAULT,0)}ARROW(){return this.getToken(e.ARROW,0)}block(){return this.getTypedRuleContext(u,0)}enterRule(t){t instanceof r.BrettListener&&t.enterDefaultCase(this)}exitRule(t){t instanceof r.BrettListener&&t.exitDefaultCase(this)}accept(t){return t instanceof o.BrettVisitor?t.visitDefaultCase(this):t.visitChildren(this)}}class F extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_returnStatement}RETURN(){return this.getToken(e.RETURN,0)}SEMI(){return this.getToken(e.SEMI,0)}expression(){return this.getTypedRuleContext(c,0)}enterRule(t){t instanceof r.BrettListener&&t.enterReturnStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitReturnStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitReturnStatement(this):t.visitChildren(this)}}class D extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_breakStatement}BREAK(){return this.getToken(e.BREAK,0)}SEMI(){return this.getToken(e.SEMI,0)}enterRule(t){t instanceof r.BrettListener&&t.enterBreakStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitBreakStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitBreakStatement(this):t.visitChildren(this)}}class k extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_continueStatement}CONTINUE(){return this.getToken(e.CONTINUE,0)}SEMI(){return this.getToken(e.SEMI,0)}enterRule(t){t instanceof r.BrettListener&&t.enterContinueStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitContinueStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitContinueStatement(this):t.visitChildren(this)}}class N extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_expressionStatement}expression(){return this.getTypedRuleContext(c,0)}SEMI(){return this.getToken(e.SEMI,0)}enterRule(t){t instanceof r.BrettListener&&t.enterExpressionStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitExpressionStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitExpressionStatement(this):t.visitChildren(this)}}class M extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_functionDeclaration}DEF(){return this.getToken(e.DEF,0)}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}LPAREN(){return this.getToken(e.LPAREN,0)}RPAREN(){return this.getToken(e.RPAREN,0)}block(){return this.getTypedRuleContext(u,0)}parameterList(){return this.getTypedRuleContext(B,0)}COLON(){return this.getToken(e.COLON,0)}type(){return this.getTypedRuleContext(x,0)}enterRule(t){t instanceof r.BrettListener&&t.enterFunctionDeclaration(this)}exitRule(t){t instanceof r.BrettListener&&t.exitFunctionDeclaration(this)}accept(t){return t instanceof o.BrettVisitor?t.visitFunctionDeclaration(this):t.visitChildren(this)}}class B extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_parameterList}parameter=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(A):this.getTypedRuleContext(A,t)};COMMA=function(t){return t===void 0&&(t=null),t===null?this.getTokens(e.COMMA):this.getToken(e.COMMA,t)};enterRule(t){t instanceof r.BrettListener&&t.enterParameterList(this)}exitRule(t){t instanceof r.BrettListener&&t.exitParameterList(this)}accept(t){return t instanceof o.BrettVisitor?t.visitParameterList(this):t.visitChildren(this)}}class A extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_parameter}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}COLON(){return this.getToken(e.COLON,0)}type(){return this.getTypedRuleContext(x,0)}enterRule(t){t instanceof r.BrettListener&&t.enterParameter(this)}exitRule(t){t instanceof r.BrettListener&&t.exitParameter(this)}accept(t){return t instanceof o.BrettVisitor?t.visitParameter(this):t.visitChildren(this)}}class x extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_type}copyFrom(t){super.copyFrom(t)}}class Y extends x{constructor(t,s){super(t),super.copyFrom(s)}type(){return this.getTypedRuleContext(x,0)}enterRule(t){t instanceof r.BrettListener&&t.enterArrayType(this)}exitRule(t){t instanceof r.BrettListener&&t.exitArrayType(this)}accept(t){return t instanceof o.BrettVisitor?t.visitArrayType(this):t.visitChildren(this)}}e.ArrayTypeContext=Y;class z extends x{constructor(t,s){super(t),super.copyFrom(s)}baseType(){return this.getTypedRuleContext(V,0)}enterRule(t){t instanceof r.BrettListener&&t.enterSimpleType(this)}exitRule(t){t instanceof r.BrettListener&&t.exitSimpleType(this)}accept(t){return t instanceof o.BrettVisitor?t.visitSimpleType(this):t.visitChildren(this)}}e.SimpleTypeContext=z;class V extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_baseType}VOID(){return this.getToken(e.VOID,0)}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}enterRule(t){t instanceof r.BrettListener&&t.enterBaseType(this)}exitRule(t){t instanceof r.BrettListener&&t.exitBaseType(this)}accept(t){return t instanceof o.BrettVisitor?t.visitBaseType(this):t.visitChildren(this)}}class W extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_tryCatchStatement}TRY(){return this.getToken(e.TRY,0)}block=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(u):this.getTypedRuleContext(u,t)};CATCH(){return this.getToken(e.CATCH,0)}LPAREN(){return this.getToken(e.LPAREN,0)}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}RPAREN(){return this.getToken(e.RPAREN,0)}COLON(){return this.getToken(e.COLON,0)}type(){return this.getTypedRuleContext(x,0)}FINALLY(){return this.getToken(e.FINALLY,0)}enterRule(t){t instanceof r.BrettListener&&t.enterTryCatchStatement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitTryCatchStatement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitTryCatchStatement(this):t.visitChildren(this)}}class c extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_expression}copyFrom(t){super.copyFrom(t)}}class Q extends c{constructor(t,s){super(t),super.copyFrom(s)}expression(){return this.getTypedRuleContext(c,0)}DOT(){return this.getToken(e.DOT,0)}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}enterRule(t){t instanceof r.BrettListener&&t.enterMemberExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitMemberExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitMemberExpression(this):t.visitChildren(this)}}e.MemberExpressionContext=Q;class q extends c{constructor(t,s){super(t),super.copyFrom(s)}primary(){return this.getTypedRuleContext(R,0)}enterRule(t){t instanceof r.BrettListener&&t.enterPrimaryExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitPrimaryExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitPrimaryExpression(this):t.visitChildren(this)}}e.PrimaryExpressionContext=q;class v extends c{constructor(t,s){super(t),super.copyFrom(s)}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}ASSIGN(){return this.getToken(e.ASSIGN,0)}expression(){return this.getTypedRuleContext(c,0)}enterRule(t){t instanceof r.BrettListener&&t.enterAssignmentExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitAssignmentExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitAssignmentExpression(this):t.visitChildren(this)}}e.AssignmentExpressionContext=v;class m extends c{constructor(t,s){super(t),this.op=null,super.copyFrom(s)}expression=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(c):this.getTypedRuleContext(c,t)};STAR(){return this.getToken(e.STAR,0)}SLASH(){return this.getToken(e.SLASH,0)}PLUS(){return this.getToken(e.PLUS,0)}MINUS(){return this.getToken(e.MINUS,0)}LT(){return this.getToken(e.LT,0)}LE(){return this.getToken(e.LE,0)}GT(){return this.getToken(e.GT,0)}GE(){return this.getToken(e.GE,0)}EQ(){return this.getToken(e.EQ,0)}NEQ(){return this.getToken(e.NEQ,0)}enterRule(t){t instanceof r.BrettListener&&t.enterBinaryExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitBinaryExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitBinaryExpression(this):t.visitChildren(this)}}e.BinaryExpressionContext=m;class J extends c{constructor(t,s){super(t),super.copyFrom(s)}NEW(){return this.getToken(e.NEW,0)}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}LPAREN(){return this.getToken(e.LPAREN,0)}RPAREN(){return this.getToken(e.RPAREN,0)}argList(){return this.getTypedRuleContext(w,0)}enterRule(t){t instanceof r.BrettListener&&t.enterNewExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitNewExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitNewExpression(this):t.visitChildren(this)}}e.NewExpressionContext=J;class X extends c{constructor(t,s){super(t),super.copyFrom(s)}expression(){return this.getTypedRuleContext(c,0)}enterRule(t){t instanceof r.BrettListener&&t.enterPreIncrementDecrement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitPreIncrementDecrement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitPreIncrementDecrement(this):t.visitChildren(this)}}e.PreIncrementDecrementContext=X;class Z extends c{constructor(t,s){super(t),super.copyFrom(s)}expression=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(c):this.getTypedRuleContext(c,t)};LBRACK(){return this.getToken(e.LBRACK,0)}RBRACK(){return this.getToken(e.RBRACK,0)}enterRule(t){t instanceof r.BrettListener&&t.enterIndexExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitIndexExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitIndexExpression(this):t.visitChildren(this)}}e.IndexExpressionContext=Z;class $ extends c{constructor(t,s){super(t),super.copyFrom(s)}expression(){return this.getTypedRuleContext(c,0)}enterRule(t){t instanceof r.BrettListener&&t.enterPostIncrementDecrement(this)}exitRule(t){t instanceof r.BrettListener&&t.exitPostIncrementDecrement(this)}accept(t){return t instanceof o.BrettVisitor?t.visitPostIncrementDecrement(this):t.visitChildren(this)}}e.PostIncrementDecrementContext=$;class R extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_primary}copyFrom(t){super.copyFrom(t)}}class tt extends R{constructor(t,s){super(t),super.copyFrom(s)}LPAREN(){return this.getToken(e.LPAREN,0)}expression(){return this.getTypedRuleContext(c,0)}RPAREN(){return this.getToken(e.RPAREN,0)}enterRule(t){t instanceof r.BrettListener&&t.enterParenthesizedExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitParenthesizedExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitParenthesizedExpression(this):t.visitChildren(this)}}e.ParenthesizedExpressionContext=tt;class et extends R{constructor(t,s){super(t),super.copyFrom(s)}objectLiteral(){return this.getTypedRuleContext(P,0)}enterRule(t){t instanceof r.BrettListener&&t.enterObjectLiteralExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitObjectLiteralExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitObjectLiteralExpression(this):t.visitChildren(this)}}e.ObjectLiteralExpressionContext=et;class E extends R{constructor(t,s){super(t),super.copyFrom(s)}NUMBER(){return this.getToken(e.NUMBER,0)}STRING(){return this.getToken(e.STRING,0)}enterRule(t){t instanceof r.BrettListener&&t.enterLiteralExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitLiteralExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitLiteralExpression(this):t.visitChildren(this)}}e.LiteralExpressionContext=E;class st extends R{constructor(t,s){super(t),super.copyFrom(s)}arrayLiteral(){return this.getTypedRuleContext(G,0)}enterRule(t){t instanceof r.BrettListener&&t.enterArrayLiteralExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitArrayLiteralExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitArrayLiteralExpression(this):t.visitChildren(this)}}e.ArrayLiteralExpressionContext=st;class it extends R{constructor(t,s){super(t),super.copyFrom(s)}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}LPAREN(){return this.getToken(e.LPAREN,0)}RPAREN(){return this.getToken(e.RPAREN,0)}argList(){return this.getTypedRuleContext(w,0)}enterRule(t){t instanceof r.BrettListener&&t.enterFunctionCallExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitFunctionCallExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitFunctionCallExpression(this):t.visitChildren(this)}}e.FunctionCallExpressionContext=it;class rt extends R{constructor(t,s){super(t),super.copyFrom(s)}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}enterRule(t){t instanceof r.BrettListener&&t.enterIdentifierExpression(this)}exitRule(t){t instanceof r.BrettListener&&t.exitIdentifierExpression(this)}accept(t){return t instanceof o.BrettVisitor?t.visitIdentifierExpression(this):t.visitChildren(this)}}e.IdentifierExpressionContext=rt;class G extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_arrayLiteral}LBRACK(){return this.getToken(e.LBRACK,0)}RBRACK(){return this.getToken(e.RBRACK,0)}expression=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(c):this.getTypedRuleContext(c,t)};COMMA=function(t){return t===void 0&&(t=null),t===null?this.getTokens(e.COMMA):this.getToken(e.COMMA,t)};enterRule(t){t instanceof r.BrettListener&&t.enterArrayLiteral(this)}exitRule(t){t instanceof r.BrettListener&&t.exitArrayLiteral(this)}accept(t){return t instanceof o.BrettVisitor?t.visitArrayLiteral(this):t.visitChildren(this)}}class P extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_objectLiteral}LBRACE(){return this.getToken(e.LBRACE,0)}RBRACE(){return this.getToken(e.RBRACE,0)}property=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(_):this.getTypedRuleContext(_,t)};COMMA=function(t){return t===void 0&&(t=null),t===null?this.getTokens(e.COMMA):this.getToken(e.COMMA,t)};enterRule(t){t instanceof r.BrettListener&&t.enterObjectLiteral(this)}exitRule(t){t instanceof r.BrettListener&&t.exitObjectLiteral(this)}accept(t){return t instanceof o.BrettVisitor?t.visitObjectLiteral(this):t.visitChildren(this)}}class _ extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_property}IDENTIFIER(){return this.getToken(e.IDENTIFIER,0)}COLON(){return this.getToken(e.COLON,0)}expression(){return this.getTypedRuleContext(c,0)}STRING(){return this.getToken(e.STRING,0)}enterRule(t){t instanceof r.BrettListener&&t.enterProperty(this)}exitRule(t){t instanceof r.BrettListener&&t.exitProperty(this)}accept(t){return t instanceof o.BrettVisitor?t.visitProperty(this):t.visitChildren(this)}}class w extends n.ParserRuleContext{constructor(t,s,i){s===void 0&&(s=null),i==null&&(i=-1),super(s,i),this.parser=t,this.ruleIndex=e.RULE_argList}expression=function(t){return t===void 0&&(t=null),t===null?this.getTypedRuleContexts(c):this.getTypedRuleContext(c,t)};COMMA=function(t){return t===void 0&&(t=null),t===null?this.getTokens(e.COMMA):this.getToken(e.COMMA,t)};enterRule(t){t instanceof r.BrettListener&&t.enterArgList(this)}exitRule(t){t instanceof r.BrettListener&&t.exitArgList(this)}accept(t){return t instanceof o.BrettVisitor?t.visitArgList(this):t.visitChildren(this)}}e.ProgramContext=j;e.StatementContext=L;e.BlockContext=u;e.VariableDeclarationContext=I;e.IfStatementContext=O;e.WhileStatementContext=S;e.DoWhileStatementContext=g;e.ForStatementContext=H;e.SwitchStatementContext=b;e.SwitchCaseContext=y;e.DefaultCaseContext=U;e.ReturnStatementContext=F;e.BreakStatementContext=D;e.ContinueStatementContext=k;e.ExpressionStatementContext=N;e.FunctionDeclarationContext=M;e.ParameterListContext=B;e.ParameterContext=A;e.TypeContext=x;e.BaseTypeContext=V;e.TryCatchStatementContext=W;e.ExpressionContext=c;e.PrimaryContext=R;e.ArrayLiteralContext=G;e.ObjectLiteralContext=P;e.PropertyContext=_;e.ArgListContext=w;exports.BrettParser=e;