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, T__16 = 17, T__17 = 18, T__18 = 19, T__19 = 20,
\r
18 T__20 = 21, T__21 = 22, T__22 = 23, T__23 = 24, T__24 = 25, T__25 = 26,
\r
19 T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32,
\r
20 T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38,
\r
21 T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44,
\r
22 T__44 = 45, T__45 = 46, T__46 = 47, T__47 = 48, T__48 = 49, T__49 = 50,
\r
23 T__50 = 51, T__51 = 52, T__52 = 53, T__53 = 54, T__54 = 55, T__55 = 56,
\r
24 T__56 = 57, T__57 = 58, INT_LIT = 59, DECIMAL_LIT = 60, BOOL_LIT = 61,
\r
25 StringLit = 62, NAME = 63, WS = 64, NEWLINE = 65, COMMENT = 66
\r
29 RuleProg = 0, RuleDecl = 1, RuleNamespaceDecl = 2, RuleVarDecl = 3,
\r
30 RuleVar = 4, RuleVarInit = 5, RuleType = 6, RuleTypeModifier = 7, RuleNamespaceSpecifier = 8,
\r
31 RuleFuncDecl = 9, RuleFunc = 10, RuleParameter = 11, RuleBody = 12,
\r
32 RuleStructDecl = 13, RuleStructMember = 14, RuleStructVar = 15, RuleStructMethod = 16,
\r
33 RulePrivateDecl = 17, RuleGenericDecl = 18, RuleGenericInstantiation = 19,
\r
34 RuleStmt = 20, RuleIfStmt = 21, RuleElseIfStmt = 22, RuleElseStmt = 23,
\r
35 RuleSwitchStmt = 24, RuleSwitchBody = 25, RuleSwitchCase = 26, RuleForStmt = 27,
\r
36 RuleWhileStmt = 28, RuleAssignStmt = 29, RuleReturnStmt = 30, RuleExpr = 31,
\r
37 RuleDot = 32, RuleArrow = 33, RuleLiteral = 34, RuleFuncName = 35, RuleVarName = 36,
\r
38 RuleTypeName = 37, RuleStructName = 38, RulePostfix_op = 39, RulePrefix_op = 40,
\r
42 explicit TocParser(antlr4::TokenStream *input);
\r
45 virtual std::string getGrammarFileName() const override;
\r
46 virtual const antlr4::atn::ATN& getATN() const override { return _atn; };
\r
47 virtual const std::vector<std::string>& getTokenNames() const override { return _tokenNames; }; // deprecated: use vocabulary instead.
\r
48 virtual const std::vector<std::string>& getRuleNames() const override;
\r
49 virtual antlr4::dfa::Vocabulary& getVocabulary() const override;
\r
54 class NamespaceDeclContext;
\r
55 class VarDeclContext;
\r
57 class VarInitContext;
\r
59 class TypeModifierContext;
\r
60 class NamespaceSpecifierContext;
\r
61 class FuncDeclContext;
\r
63 class ParameterContext;
\r
65 class StructDeclContext;
\r
66 class StructMemberContext;
\r
67 class StructVarContext;
\r
68 class StructMethodContext;
\r
69 class PrivateDeclContext;
\r
70 class GenericDeclContext;
\r
71 class GenericInstantiationContext;
\r
73 class IfStmtContext;
\r
74 class ElseIfStmtContext;
\r
75 class ElseStmtContext;
\r
76 class SwitchStmtContext;
\r
77 class SwitchBodyContext;
\r
78 class SwitchCaseContext;
\r
79 class ForStmtContext;
\r
80 class WhileStmtContext;
\r
81 class AssignStmtContext;
\r
82 class ReturnStmtContext;
\r
86 class LiteralContext;
\r
87 class FuncNameContext;
\r
88 class VarNameContext;
\r
89 class TypeNameContext;
\r
90 class StructNameContext;
\r
91 class Postfix_opContext;
\r
92 class Prefix_opContext;
\r
93 class Binary_opContext;
\r
95 class ProgContext : public antlr4::ParserRuleContext {
\r
97 ProgContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
98 virtual size_t getRuleIndex() const override;
\r
99 antlr4::tree::TerminalNode *EOF();
\r
100 std::vector<DeclContext *> decl();
\r
101 DeclContext* decl(size_t i);
\r
106 ProgContext* prog();
\r
108 class DeclContext : public antlr4::ParserRuleContext {
\r
110 DeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
111 virtual size_t getRuleIndex() const override;
\r
112 VarDeclContext *varDecl();
\r
113 FuncDeclContext *funcDecl();
\r
114 StructDeclContext *structDecl();
\r
115 NamespaceDeclContext *namespaceDecl();
\r
120 DeclContext* decl();
\r
122 class NamespaceDeclContext : public antlr4::ParserRuleContext {
\r
124 NamespaceDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
125 virtual size_t getRuleIndex() const override;
\r
126 TypeNameContext *typeName();
\r
127 std::vector<DeclContext *> decl();
\r
128 DeclContext* decl(size_t i);
\r
133 NamespaceDeclContext* namespaceDecl();
\r
135 class VarDeclContext : public antlr4::ParserRuleContext {
\r
137 VarDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
138 virtual size_t getRuleIndex() const override;
\r
144 VarDeclContext* varDecl();
\r
146 class VarContext : public antlr4::ParserRuleContext {
\r
148 VarContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
149 virtual size_t getRuleIndex() const override;
\r
150 VarNameContext *varName();
\r
151 TypeContext *type();
\r
152 ExprContext *expr();
\r
159 class VarInitContext : public antlr4::ParserRuleContext {
\r
161 VarInitContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
162 virtual size_t getRuleIndex() const override;
\r
163 VarNameContext *varName();
\r
164 TypeContext *type();
\r
165 ExprContext *expr();
\r
170 VarInitContext* varInit();
\r
172 class TypeContext : public antlr4::ParserRuleContext {
\r
174 TypeContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
175 virtual size_t getRuleIndex() const override;
\r
176 TypeNameContext *typeName();
\r
177 std::vector<NamespaceSpecifierContext *> namespaceSpecifier();
\r
178 NamespaceSpecifierContext* namespaceSpecifier(size_t i);
\r
179 GenericInstantiationContext *genericInstantiation();
\r
180 std::vector<TypeModifierContext *> typeModifier();
\r
181 TypeModifierContext* typeModifier(size_t i);
\r
186 TypeContext* type();
\r
188 class TypeModifierContext : public antlr4::ParserRuleContext {
\r
190 TypeModifierContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
191 virtual size_t getRuleIndex() const override;
\r
192 antlr4::tree::TerminalNode *INT_LIT();
\r
197 TypeModifierContext* typeModifier();
\r
199 class NamespaceSpecifierContext : public antlr4::ParserRuleContext {
\r
201 NamespaceSpecifierContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
202 virtual size_t getRuleIndex() const override;
\r
203 TypeNameContext *typeName();
\r
208 NamespaceSpecifierContext* namespaceSpecifier();
\r
210 class FuncDeclContext : public antlr4::ParserRuleContext {
\r
212 FuncDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
213 virtual size_t getRuleIndex() const override;
\r
214 FuncContext *func();
\r
219 FuncDeclContext* funcDecl();
\r
221 class FuncContext : public antlr4::ParserRuleContext {
\r
223 FuncContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
224 virtual size_t getRuleIndex() const override;
\r
225 FuncNameContext *funcName();
\r
226 ParameterContext *parameter();
\r
227 TypeContext *type();
\r
228 BodyContext *body();
\r
229 GenericDeclContext *genericDecl();
\r
234 FuncContext* func();
\r
236 class ParameterContext : public antlr4::ParserRuleContext {
\r
238 ParameterContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
239 virtual size_t getRuleIndex() const override;
\r
240 std::vector<VarContext *> var();
\r
241 VarContext* var(size_t i);
\r
246 ParameterContext* parameter();
\r
248 class BodyContext : public antlr4::ParserRuleContext {
\r
250 BodyContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
251 virtual size_t getRuleIndex() const override;
\r
252 std::vector<StmtContext *> stmt();
\r
253 StmtContext* stmt(size_t i);
\r
258 BodyContext* body();
\r
260 class StructDeclContext : public antlr4::ParserRuleContext {
\r
262 StructDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
263 virtual size_t getRuleIndex() const override;
\r
264 StructNameContext *structName();
\r
265 GenericDeclContext *genericDecl();
\r
266 std::vector<StructMemberContext *> structMember();
\r
267 StructMemberContext* structMember(size_t i);
\r
272 StructDeclContext* structDecl();
\r
274 class StructMemberContext : public antlr4::ParserRuleContext {
\r
276 StructMemberContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
277 virtual size_t getRuleIndex() const override;
\r
278 StructVarContext *structVar();
\r
279 PrivateDeclContext *privateDecl();
\r
280 StructMethodContext *structMethod();
\r
285 StructMemberContext* structMember();
\r
287 class StructVarContext : public antlr4::ParserRuleContext {
\r
289 StructVarContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
290 virtual size_t getRuleIndex() const override;
\r
296 StructVarContext* structVar();
\r
298 class StructMethodContext : public antlr4::ParserRuleContext {
\r
300 StructMethodContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
301 virtual size_t getRuleIndex() const override;
\r
302 FuncContext *func();
\r
307 StructMethodContext* structMethod();
\r
309 class PrivateDeclContext : public antlr4::ParserRuleContext {
\r
311 PrivateDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
312 virtual size_t getRuleIndex() const override;
\r
317 PrivateDeclContext* privateDecl();
\r
319 class GenericDeclContext : public antlr4::ParserRuleContext {
\r
321 GenericDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
322 virtual size_t getRuleIndex() const override;
\r
323 std::vector<TypeNameContext *> typeName();
\r
324 TypeNameContext* typeName(size_t i);
\r
329 GenericDeclContext* genericDecl();
\r
331 class GenericInstantiationContext : public antlr4::ParserRuleContext {
\r
333 GenericInstantiationContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
334 virtual size_t getRuleIndex() const override;
\r
335 std::vector<TypeContext *> type();
\r
336 TypeContext* type(size_t i);
\r
341 GenericInstantiationContext* genericInstantiation();
\r
343 class StmtContext : public antlr4::ParserRuleContext {
\r
345 StmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
346 virtual size_t getRuleIndex() const override;
\r
347 VarDeclContext *varDecl();
\r
348 IfStmtContext *ifStmt();
\r
349 SwitchStmtContext *switchStmt();
\r
350 ForStmtContext *forStmt();
\r
351 WhileStmtContext *whileStmt();
\r
352 AssignStmtContext *assignStmt();
\r
353 ReturnStmtContext *returnStmt();
\r
354 ExprContext *expr();
\r
359 StmtContext* stmt();
\r
361 class IfStmtContext : public antlr4::ParserRuleContext {
\r
363 IfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
364 virtual size_t getRuleIndex() const override;
\r
365 ExprContext *expr();
\r
366 BodyContext *body();
\r
367 std::vector<ElseIfStmtContext *> elseIfStmt();
\r
368 ElseIfStmtContext* elseIfStmt(size_t i);
\r
369 ElseStmtContext *elseStmt();
\r
374 IfStmtContext* ifStmt();
\r
376 class ElseIfStmtContext : public antlr4::ParserRuleContext {
\r
378 ElseIfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
379 virtual size_t getRuleIndex() const override;
\r
380 ExprContext *expr();
\r
381 BodyContext *body();
\r
386 ElseIfStmtContext* elseIfStmt();
\r
388 class ElseStmtContext : public antlr4::ParserRuleContext {
\r
390 ElseStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
391 virtual size_t getRuleIndex() const override;
\r
392 BodyContext *body();
\r
397 ElseStmtContext* elseStmt();
\r
399 class SwitchStmtContext : public antlr4::ParserRuleContext {
\r
401 SwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
402 virtual size_t getRuleIndex() const override;
\r
403 ExprContext *expr();
\r
404 SwitchBodyContext *switchBody();
\r
409 SwitchStmtContext* switchStmt();
\r
411 class SwitchBodyContext : public antlr4::ParserRuleContext {
\r
413 SwitchBodyContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
414 virtual size_t getRuleIndex() const override;
\r
415 std::vector<SwitchCaseContext *> switchCase();
\r
416 SwitchCaseContext* switchCase(size_t i);
\r
421 SwitchBodyContext* switchBody();
\r
423 class SwitchCaseContext : public antlr4::ParserRuleContext {
\r
425 SwitchCaseContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
426 virtual size_t getRuleIndex() const override;
\r
427 ExprContext *expr();
\r
428 BodyContext *body();
\r
433 SwitchCaseContext* switchCase();
\r
435 class ForStmtContext : public antlr4::ParserRuleContext {
\r
437 ForStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
438 virtual size_t getRuleIndex() const override;
\r
439 VarInitContext *varInit();
\r
440 std::vector<ExprContext *> expr();
\r
441 ExprContext* expr(size_t i);
\r
442 BodyContext *body();
\r
447 ForStmtContext* forStmt();
\r
449 class WhileStmtContext : public antlr4::ParserRuleContext {
\r
451 WhileStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
452 virtual size_t getRuleIndex() const override;
\r
453 ExprContext *expr();
\r
454 BodyContext *body();
\r
459 WhileStmtContext* whileStmt();
\r
461 class AssignStmtContext : public antlr4::ParserRuleContext {
\r
463 AssignStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
464 virtual size_t getRuleIndex() const override;
\r
465 std::vector<ExprContext *> expr();
\r
466 ExprContext* expr(size_t i);
\r
471 AssignStmtContext* assignStmt();
\r
473 class ReturnStmtContext : public antlr4::ParserRuleContext {
\r
475 ReturnStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
476 virtual size_t getRuleIndex() const override;
\r
477 ExprContext *expr();
\r
482 ReturnStmtContext* returnStmt();
\r
484 class ExprContext : public antlr4::ParserRuleContext {
\r
486 ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
488 ExprContext() = default;
\r
489 void copyFrom(ExprContext *context);
\r
490 using antlr4::ParserRuleContext::copyFrom;
\r
492 virtual size_t getRuleIndex() const override;
\r
497 class DotExprContext : public ExprContext {
\r
499 DotExprContext(ExprContext *ctx);
\r
501 ExprContext *expr();
\r
502 VarNameContext *varName();
\r
504 ArrowContext *arrow();
\r
507 class FuncExprContext : public ExprContext {
\r
509 FuncExprContext(ExprContext *ctx);
\r
511 FuncNameContext *funcName();
\r
512 std::vector<NamespaceSpecifierContext *> namespaceSpecifier();
\r
513 NamespaceSpecifierContext* namespaceSpecifier(size_t i);
\r
514 GenericInstantiationContext *genericInstantiation();
\r
515 std::vector<ExprContext *> expr();
\r
516 ExprContext* expr(size_t i);
\r
519 class BracketExprContext : public ExprContext {
\r
521 BracketExprContext(ExprContext *ctx);
\r
523 std::vector<ExprContext *> expr();
\r
524 ExprContext* expr(size_t i);
\r
527 class PrefixOpExprContext : public ExprContext {
\r
529 PrefixOpExprContext(ExprContext *ctx);
\r
531 Prefix_opContext *prefix_op();
\r
532 ExprContext *expr();
\r
535 class MethodExprContext : public ExprContext {
\r
537 MethodExprContext(ExprContext *ctx);
\r
539 std::vector<ExprContext *> expr();
\r
540 ExprContext* expr(size_t i);
\r
541 FuncNameContext *funcName();
\r
542 GenericInstantiationContext *genericInstantiation();
\r
545 class PostfixOpExprContext : public ExprContext {
\r
547 PostfixOpExprContext(ExprContext *ctx);
\r
549 ExprContext *expr();
\r
550 Postfix_opContext *postfix_op();
\r
553 class BinaryOpExprContext : public ExprContext {
\r
555 BinaryOpExprContext(ExprContext *ctx);
\r
557 std::vector<ExprContext *> expr();
\r
558 ExprContext* expr(size_t i);
\r
559 Binary_opContext *binary_op();
\r
562 class TernaryOpExprContext : public ExprContext {
\r
564 TernaryOpExprContext(ExprContext *ctx);
\r
566 std::vector<ExprContext *> expr();
\r
567 ExprContext* expr(size_t i);
\r
570 class LitExprContext : public ExprContext {
\r
572 LitExprContext(ExprContext *ctx);
\r
574 LiteralContext *literal();
\r
577 class ParenExprContext : public ExprContext {
\r
579 ParenExprContext(ExprContext *ctx);
\r
581 ExprContext *expr();
\r
584 class IdentifierExprContext : public ExprContext {
\r
586 IdentifierExprContext(ExprContext *ctx);
\r
588 VarNameContext *varName();
\r
589 std::vector<NamespaceSpecifierContext *> namespaceSpecifier();
\r
590 NamespaceSpecifierContext* namespaceSpecifier(size_t i);
\r
593 ExprContext* expr();
\r
594 ExprContext* expr(int precedence);
\r
595 class DotContext : public antlr4::ParserRuleContext {
\r
597 DotContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
598 virtual size_t getRuleIndex() const override;
\r
605 class ArrowContext : public antlr4::ParserRuleContext {
\r
607 ArrowContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
608 virtual size_t getRuleIndex() const override;
\r
613 ArrowContext* arrow();
\r
615 class LiteralContext : public antlr4::ParserRuleContext {
\r
617 LiteralContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
618 virtual size_t getRuleIndex() const override;
\r
619 antlr4::tree::TerminalNode *INT_LIT();
\r
620 antlr4::tree::TerminalNode *DECIMAL_LIT();
\r
621 antlr4::tree::TerminalNode *StringLit();
\r
622 antlr4::tree::TerminalNode *BOOL_LIT();
\r
627 LiteralContext* literal();
\r
629 class FuncNameContext : public antlr4::ParserRuleContext {
\r
631 FuncNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
632 virtual size_t getRuleIndex() const override;
\r
633 antlr4::tree::TerminalNode *NAME();
\r
638 FuncNameContext* funcName();
\r
640 class VarNameContext : public antlr4::ParserRuleContext {
\r
642 VarNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
643 virtual size_t getRuleIndex() const override;
\r
644 antlr4::tree::TerminalNode *NAME();
\r
649 VarNameContext* varName();
\r
651 class TypeNameContext : public antlr4::ParserRuleContext {
\r
653 TypeNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
654 virtual size_t getRuleIndex() const override;
\r
655 antlr4::tree::TerminalNode *NAME();
\r
660 TypeNameContext* typeName();
\r
662 class StructNameContext : public antlr4::ParserRuleContext {
\r
664 StructNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
665 virtual size_t getRuleIndex() const override;
\r
666 antlr4::tree::TerminalNode *NAME();
\r
671 StructNameContext* structName();
\r
673 class Postfix_opContext : public antlr4::ParserRuleContext {
\r
675 Postfix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
676 virtual size_t getRuleIndex() const override;
\r
681 Postfix_opContext* postfix_op();
\r
683 class Prefix_opContext : public antlr4::ParserRuleContext {
\r
685 Prefix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
686 virtual size_t getRuleIndex() const override;
\r
687 Postfix_opContext *postfix_op();
\r
692 Prefix_opContext* prefix_op();
\r
694 class Binary_opContext : public antlr4::ParserRuleContext {
\r
696 Binary_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
697 virtual size_t getRuleIndex() const override;
\r
702 Binary_opContext* binary_op();
\r
705 virtual bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override;
\r
706 bool exprSempred(ExprContext *_localctx, size_t predicateIndex);
\r
709 static std::vector<antlr4::dfa::DFA> _decisionToDFA;
\r
710 static antlr4::atn::PredictionContextCache _sharedContextCache;
\r
711 static std::vector<std::string> _ruleNames;
\r
712 static std::vector<std::string> _tokenNames;
\r
714 static std::vector<std::string> _literalNames;
\r
715 static std::vector<std::string> _symbolicNames;
\r
716 static antlr4::dfa::Vocabulary _vocabulary;
\r
717 static antlr4::atn::ATN _atn;
\r
718 static std::vector<uint16_t> _serializedATN;
\r
721 struct Initializer {
\r
724 static Initializer _init;
\r