2 // Generated from Toc.g4 by ANTLR 4.9.2
\r
7 #include "antlr4-runtime.h"
\r
12 class TocParser : public antlr4::Parser {
\r
15 T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7,
\r
16 T__7 = 8, T__8 = 9, T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14,
\r
17 T__14 = 15, T__15 = 16, BINARY_OPERATOR = 17, INTLIT = 18, NAME = 19,
\r
18 WS = 20, NEWLINE = 21
\r
22 RuleProg = 0, RuleDecl = 1, RuleVarDecl = 2, RuleVar = 3, RuleType = 4,
\r
23 RuleFuncDecl = 5, RuleFunc = 6, RuleParameter = 7, RuleFirstParameter = 8,
\r
24 RuleAdditionalParameter = 9, RuleBody = 10, RuleStructDecl = 11, RuleStructMember = 12,
\r
25 RuleStructVar = 13, RuleStructMethod = 14, RuleStmt = 15, RuleConditional = 16,
\r
26 RuleIfCond = 17, RuleLoop = 18, RuleWhileLoop = 19, RuleAssignment = 20,
\r
27 RuleReturnStmt = 21, RuleExpr = 22, RuleNonOpExpr = 23, RuleNonSubscriptExpr = 24,
\r
28 RuleFuncCall = 25, RuleOperatorExpr = 26, RuleBinaryOperator = 27, RuleIdentifier = 28,
\r
29 RuleLiteral = 29, RuleSubscript = 30, RuleMemberAccess = 31, RuleParenExpr = 32,
\r
30 RuleFuncName = 33, RuleVarName = 34, RuleTypeName = 35, RuleStructName = 36
\r
33 explicit TocParser(antlr4::TokenStream *input);
\r
36 virtual std::string getGrammarFileName() const override;
\r
37 virtual const antlr4::atn::ATN& getATN() const override { return _atn; };
\r
38 virtual const std::vector<std::string>& getTokenNames() const override { return _tokenNames; }; // deprecated: use vocabulary instead.
\r
39 virtual const std::vector<std::string>& getRuleNames() const override;
\r
40 virtual antlr4::dfa::Vocabulary& getVocabulary() const override;
\r
45 class VarDeclContext;
\r
48 class FuncDeclContext;
\r
50 class ParameterContext;
\r
51 class FirstParameterContext;
\r
52 class AdditionalParameterContext;
\r
54 class StructDeclContext;
\r
55 class StructMemberContext;
\r
56 class StructVarContext;
\r
57 class StructMethodContext;
\r
59 class ConditionalContext;
\r
60 class IfCondContext;
\r
62 class WhileLoopContext;
\r
63 class AssignmentContext;
\r
64 class ReturnStmtContext;
\r
66 class NonOpExprContext;
\r
67 class NonSubscriptExprContext;
\r
68 class FuncCallContext;
\r
69 class OperatorExprContext;
\r
70 class BinaryOperatorContext;
\r
71 class IdentifierContext;
\r
72 class LiteralContext;
\r
73 class SubscriptContext;
\r
74 class MemberAccessContext;
\r
75 class ParenExprContext;
\r
76 class FuncNameContext;
\r
77 class VarNameContext;
\r
78 class TypeNameContext;
\r
79 class StructNameContext;
\r
81 class ProgContext : public antlr4::ParserRuleContext {
\r
83 ProgContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
84 virtual size_t getRuleIndex() const override;
\r
85 antlr4::tree::TerminalNode *EOF();
\r
86 std::vector<DeclContext *> decl();
\r
87 DeclContext* decl(size_t i);
\r
89 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
90 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
94 ProgContext* prog();
\r
96 class DeclContext : public antlr4::ParserRuleContext {
\r
98 DeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
99 virtual size_t getRuleIndex() const override;
\r
100 VarDeclContext *varDecl();
\r
101 FuncDeclContext *funcDecl();
\r
102 StructDeclContext *structDecl();
\r
104 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
105 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
109 DeclContext* decl();
\r
111 class VarDeclContext : public antlr4::ParserRuleContext {
\r
113 VarDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
114 virtual size_t getRuleIndex() const override;
\r
117 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
118 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
122 VarDeclContext* varDecl();
\r
124 class VarContext : public antlr4::ParserRuleContext {
\r
126 VarContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
127 virtual size_t getRuleIndex() const override;
\r
128 VarNameContext *varName();
\r
129 TypeContext *type();
\r
130 ExprContext *expr();
\r
132 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
133 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
139 class TypeContext : public antlr4::ParserRuleContext {
\r
141 TypeContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
142 virtual size_t getRuleIndex() const override;
\r
143 TypeNameContext *typeName();
\r
145 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
146 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
150 TypeContext* type();
\r
152 class FuncDeclContext : public antlr4::ParserRuleContext {
\r
154 FuncDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
155 virtual size_t getRuleIndex() const override;
\r
156 FuncContext *func();
\r
158 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
159 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
163 FuncDeclContext* funcDecl();
\r
165 class FuncContext : public antlr4::ParserRuleContext {
\r
167 FuncContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
168 virtual size_t getRuleIndex() const override;
\r
169 FuncNameContext *funcName();
\r
170 ParameterContext *parameter();
\r
171 BodyContext *body();
\r
172 TypeContext *type();
\r
174 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
175 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
179 FuncContext* func();
\r
181 class ParameterContext : public antlr4::ParserRuleContext {
\r
183 ParameterContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
184 virtual size_t getRuleIndex() const override;
\r
185 FirstParameterContext *firstParameter();
\r
186 std::vector<AdditionalParameterContext *> additionalParameter();
\r
187 AdditionalParameterContext* additionalParameter(size_t i);
\r
189 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
190 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
194 ParameterContext* parameter();
\r
196 class FirstParameterContext : public antlr4::ParserRuleContext {
\r
198 FirstParameterContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
199 virtual size_t getRuleIndex() const override;
\r
202 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
203 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
207 FirstParameterContext* firstParameter();
\r
209 class AdditionalParameterContext : public antlr4::ParserRuleContext {
\r
211 AdditionalParameterContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
212 virtual size_t getRuleIndex() const override;
\r
215 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
216 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
220 AdditionalParameterContext* additionalParameter();
\r
222 class BodyContext : public antlr4::ParserRuleContext {
\r
224 BodyContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
225 virtual size_t getRuleIndex() const override;
\r
226 std::vector<StmtContext *> stmt();
\r
227 StmtContext* stmt(size_t i);
\r
229 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
230 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
234 BodyContext* body();
\r
236 class StructDeclContext : public antlr4::ParserRuleContext {
\r
238 StructDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
239 virtual size_t getRuleIndex() const override;
\r
240 StructNameContext *structName();
\r
241 std::vector<StructMemberContext *> structMember();
\r
242 StructMemberContext* structMember(size_t i);
\r
244 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
245 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
249 StructDeclContext* structDecl();
\r
251 class StructMemberContext : public antlr4::ParserRuleContext {
\r
253 StructMemberContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
254 virtual size_t getRuleIndex() const override;
\r
255 StructVarContext *structVar();
\r
256 StructMethodContext *structMethod();
\r
258 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
259 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
263 StructMemberContext* structMember();
\r
265 class StructVarContext : public antlr4::ParserRuleContext {
\r
267 StructVarContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
268 virtual size_t getRuleIndex() const override;
\r
271 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
272 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
276 StructVarContext* structVar();
\r
278 class StructMethodContext : public antlr4::ParserRuleContext {
\r
280 StructMethodContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
281 virtual size_t getRuleIndex() const override;
\r
282 FuncContext *func();
\r
284 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
285 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
289 StructMethodContext* structMethod();
\r
291 class StmtContext : public antlr4::ParserRuleContext {
\r
293 StmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
294 virtual size_t getRuleIndex() const override;
\r
295 VarDeclContext *varDecl();
\r
296 ConditionalContext *conditional();
\r
297 LoopContext *loop();
\r
298 AssignmentContext *assignment();
\r
299 ReturnStmtContext *returnStmt();
\r
300 ExprContext *expr();
\r
302 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
303 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
307 StmtContext* stmt();
\r
309 class ConditionalContext : public antlr4::ParserRuleContext {
\r
311 ConditionalContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
312 virtual size_t getRuleIndex() const override;
\r
313 IfCondContext *ifCond();
\r
315 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
316 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
320 ConditionalContext* conditional();
\r
322 class IfCondContext : public antlr4::ParserRuleContext {
\r
324 IfCondContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
325 virtual size_t getRuleIndex() const override;
\r
326 ExprContext *expr();
\r
327 BodyContext *body();
\r
329 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
330 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
334 IfCondContext* ifCond();
\r
336 class LoopContext : public antlr4::ParserRuleContext {
\r
338 LoopContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
339 virtual size_t getRuleIndex() const override;
\r
340 WhileLoopContext *whileLoop();
\r
342 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
343 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
347 LoopContext* loop();
\r
349 class WhileLoopContext : public antlr4::ParserRuleContext {
\r
351 WhileLoopContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
352 virtual size_t getRuleIndex() const override;
\r
353 ExprContext *expr();
\r
354 BodyContext *body();
\r
356 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
357 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
361 WhileLoopContext* whileLoop();
\r
363 class AssignmentContext : public antlr4::ParserRuleContext {
\r
365 AssignmentContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
366 virtual size_t getRuleIndex() const override;
\r
367 IdentifierContext *identifier();
\r
368 ExprContext *expr();
\r
370 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
371 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
375 AssignmentContext* assignment();
\r
377 class ReturnStmtContext : public antlr4::ParserRuleContext {
\r
379 ReturnStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
380 virtual size_t getRuleIndex() const override;
\r
381 ExprContext *expr();
\r
383 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
384 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
388 ReturnStmtContext* returnStmt();
\r
390 class ExprContext : public antlr4::ParserRuleContext {
\r
392 ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
393 virtual size_t getRuleIndex() const override;
\r
394 FuncCallContext *funcCall();
\r
395 LiteralContext *literal();
\r
396 IdentifierContext *identifier();
\r
397 SubscriptContext *subscript();
\r
398 MemberAccessContext *memberAccess();
\r
399 ParenExprContext *parenExpr();
\r
400 OperatorExprContext *operatorExpr();
\r
402 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
403 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
407 ExprContext* expr();
\r
409 class NonOpExprContext : public antlr4::ParserRuleContext {
\r
411 NonOpExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
412 virtual size_t getRuleIndex() const override;
\r
413 FuncCallContext *funcCall();
\r
414 LiteralContext *literal();
\r
415 IdentifierContext *identifier();
\r
416 SubscriptContext *subscript();
\r
417 MemberAccessContext *memberAccess();
\r
418 ParenExprContext *parenExpr();
\r
420 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
421 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
425 NonOpExprContext* nonOpExpr();
\r
427 class NonSubscriptExprContext : public antlr4::ParserRuleContext {
\r
429 NonSubscriptExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
430 virtual size_t getRuleIndex() const override;
\r
431 FuncCallContext *funcCall();
\r
432 IdentifierContext *identifier();
\r
433 MemberAccessContext *memberAccess();
\r
434 ParenExprContext *parenExpr();
\r
436 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
437 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
441 NonSubscriptExprContext* nonSubscriptExpr();
\r
443 class FuncCallContext : public antlr4::ParserRuleContext {
\r
445 FuncCallContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
446 virtual size_t getRuleIndex() const override;
\r
447 FuncNameContext *funcName();
\r
448 std::vector<ExprContext *> expr();
\r
449 ExprContext* expr(size_t i);
\r
451 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
452 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
456 FuncCallContext* funcCall();
\r
458 class OperatorExprContext : public antlr4::ParserRuleContext {
\r
460 OperatorExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
461 virtual size_t getRuleIndex() const override;
\r
462 BinaryOperatorContext *binaryOperator();
\r
464 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
465 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
469 OperatorExprContext* operatorExpr();
\r
471 class BinaryOperatorContext : public antlr4::ParserRuleContext {
\r
473 BinaryOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
474 virtual size_t getRuleIndex() const override;
\r
475 std::vector<NonOpExprContext *> nonOpExpr();
\r
476 NonOpExprContext* nonOpExpr(size_t i);
\r
477 std::vector<antlr4::tree::TerminalNode *> BINARY_OPERATOR();
\r
478 antlr4::tree::TerminalNode* BINARY_OPERATOR(size_t i);
\r
480 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
481 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
485 BinaryOperatorContext* binaryOperator();
\r
487 class IdentifierContext : public antlr4::ParserRuleContext {
\r
489 IdentifierContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
490 virtual size_t getRuleIndex() const override;
\r
491 VarNameContext *varName();
\r
493 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
494 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
498 IdentifierContext* identifier();
\r
500 class LiteralContext : public antlr4::ParserRuleContext {
\r
502 LiteralContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
503 virtual size_t getRuleIndex() const override;
\r
504 antlr4::tree::TerminalNode *INTLIT();
\r
506 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
507 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
511 LiteralContext* literal();
\r
513 class SubscriptContext : public antlr4::ParserRuleContext {
\r
515 SubscriptContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
516 virtual size_t getRuleIndex() const override;
\r
517 NonSubscriptExprContext *nonSubscriptExpr();
\r
518 ExprContext *expr();
\r
520 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
521 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
525 SubscriptContext* subscript();
\r
527 class MemberAccessContext : public antlr4::ParserRuleContext {
\r
529 MemberAccessContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
530 virtual size_t getRuleIndex() const override;
\r
531 std::vector<IdentifierContext *> identifier();
\r
532 IdentifierContext* identifier(size_t i);
\r
534 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
535 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
539 MemberAccessContext* memberAccess();
\r
541 class ParenExprContext : public antlr4::ParserRuleContext {
\r
543 ParenExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
544 virtual size_t getRuleIndex() const override;
\r
545 ExprContext *expr();
\r
547 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
548 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
552 ParenExprContext* parenExpr();
\r
554 class FuncNameContext : public antlr4::ParserRuleContext {
\r
556 FuncNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
557 virtual size_t getRuleIndex() const override;
\r
558 antlr4::tree::TerminalNode *NAME();
\r
560 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
561 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
565 FuncNameContext* funcName();
\r
567 class VarNameContext : public antlr4::ParserRuleContext {
\r
569 VarNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
570 virtual size_t getRuleIndex() const override;
\r
571 antlr4::tree::TerminalNode *NAME();
\r
573 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
574 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
578 VarNameContext* varName();
\r
580 class TypeNameContext : public antlr4::ParserRuleContext {
\r
582 TypeNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
583 virtual size_t getRuleIndex() const override;
\r
584 antlr4::tree::TerminalNode *NAME();
\r
586 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
587 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
591 TypeNameContext* typeName();
\r
593 class StructNameContext : public antlr4::ParserRuleContext {
\r
595 StructNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
596 virtual size_t getRuleIndex() const override;
\r
597 antlr4::tree::TerminalNode *NAME();
\r
599 virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
\r
600 virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
\r
604 StructNameContext* structName();
\r
608 static std::vector<antlr4::dfa::DFA> _decisionToDFA;
\r
609 static antlr4::atn::PredictionContextCache _sharedContextCache;
\r
610 static std::vector<std::string> _ruleNames;
\r
611 static std::vector<std::string> _tokenNames;
\r
613 static std::vector<std::string> _literalNames;
\r
614 static std::vector<std::string> _symbolicNames;
\r
615 static antlr4::dfa::Vocabulary _vocabulary;
\r
616 static antlr4::atn::ATN _atn;
\r
617 static std::vector<uint16_t> _serializedATN;
\r
620 struct Initializer {
\r
623 static Initializer _init;
\r