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, INT_LIT = 58, DECIMAL_LIT = 59, STRING_LIT = 60, BOOL_LIT = 61,
\r
25 NAME = 62, WS = 63, NEWLINE = 64
\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, RuleStmt = 19, RuleIfStmt = 20,
\r
34 RuleElseIfStmt = 21, RuleElseStmt = 22, RuleSwitchStmt = 23, RuleSwitchBody = 24,
\r
35 RuleSwitchCase = 25, RuleForStmt = 26, RuleWhileStmt = 27, RuleAssignStmt = 28,
\r
36 RuleReturnStmt = 29, RuleExpr = 30, RuleLiteral = 31, RuleFuncName = 32,
\r
37 RuleVarName = 33, RuleTypeName = 34, RuleStructName = 35, RulePostfix_op = 36,
\r
38 RulePrefix_op = 37, RuleBinary_op = 38
\r
41 explicit TocParser(antlr4::TokenStream *input);
\r
44 virtual std::string getGrammarFileName() const override;
\r
45 virtual const antlr4::atn::ATN& getATN() const override { return _atn; };
\r
46 virtual const std::vector<std::string>& getTokenNames() const override { return _tokenNames; }; // deprecated: use vocabulary instead.
\r
47 virtual const std::vector<std::string>& getRuleNames() const override;
\r
48 virtual antlr4::dfa::Vocabulary& getVocabulary() const override;
\r
53 class NamespaceDeclContext;
\r
54 class VarDeclContext;
\r
56 class VarInitContext;
\r
58 class TypeModifierContext;
\r
59 class NamespaceSpecifierContext;
\r
60 class FuncDeclContext;
\r
62 class ParameterContext;
\r
64 class StructDeclContext;
\r
65 class StructMemberContext;
\r
66 class StructVarContext;
\r
67 class StructMethodContext;
\r
68 class PrivateDeclContext;
\r
69 class GenericDeclContext;
\r
71 class IfStmtContext;
\r
72 class ElseIfStmtContext;
\r
73 class ElseStmtContext;
\r
74 class SwitchStmtContext;
\r
75 class SwitchBodyContext;
\r
76 class SwitchCaseContext;
\r
77 class ForStmtContext;
\r
78 class WhileStmtContext;
\r
79 class AssignStmtContext;
\r
80 class ReturnStmtContext;
\r
82 class LiteralContext;
\r
83 class FuncNameContext;
\r
84 class VarNameContext;
\r
85 class TypeNameContext;
\r
86 class StructNameContext;
\r
87 class Postfix_opContext;
\r
88 class Prefix_opContext;
\r
89 class Binary_opContext;
\r
91 class ProgContext : public antlr4::ParserRuleContext {
\r
93 ProgContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
94 virtual size_t getRuleIndex() const override;
\r
95 antlr4::tree::TerminalNode *EOF();
\r
96 std::vector<DeclContext *> decl();
\r
97 DeclContext* decl(size_t i);
\r
102 ProgContext* prog();
\r
104 class DeclContext : public antlr4::ParserRuleContext {
\r
106 DeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
107 virtual size_t getRuleIndex() const override;
\r
108 VarDeclContext *varDecl();
\r
109 FuncDeclContext *funcDecl();
\r
110 StructDeclContext *structDecl();
\r
111 NamespaceDeclContext *namespaceDecl();
\r
116 DeclContext* decl();
\r
118 class NamespaceDeclContext : public antlr4::ParserRuleContext {
\r
120 NamespaceDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
121 virtual size_t getRuleIndex() const override;
\r
122 TypeNameContext *typeName();
\r
123 std::vector<DeclContext *> decl();
\r
124 DeclContext* decl(size_t i);
\r
129 NamespaceDeclContext* namespaceDecl();
\r
131 class VarDeclContext : public antlr4::ParserRuleContext {
\r
133 VarDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
134 virtual size_t getRuleIndex() const override;
\r
140 VarDeclContext* varDecl();
\r
142 class VarContext : public antlr4::ParserRuleContext {
\r
144 VarContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
145 virtual size_t getRuleIndex() const override;
\r
146 VarNameContext *varName();
\r
147 TypeContext *type();
\r
148 ExprContext *expr();
\r
155 class VarInitContext : public antlr4::ParserRuleContext {
\r
157 VarInitContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
158 virtual size_t getRuleIndex() const override;
\r
159 VarNameContext *varName();
\r
160 TypeContext *type();
\r
161 ExprContext *expr();
\r
166 VarInitContext* varInit();
\r
168 class TypeContext : public antlr4::ParserRuleContext {
\r
170 TypeContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
171 virtual size_t getRuleIndex() const override;
\r
172 TypeNameContext *typeName();
\r
173 std::vector<NamespaceSpecifierContext *> namespaceSpecifier();
\r
174 NamespaceSpecifierContext* namespaceSpecifier(size_t i);
\r
175 std::vector<TypeModifierContext *> typeModifier();
\r
176 TypeModifierContext* typeModifier(size_t i);
\r
181 TypeContext* type();
\r
183 class TypeModifierContext : public antlr4::ParserRuleContext {
\r
185 TypeModifierContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
186 virtual size_t getRuleIndex() const override;
\r
187 antlr4::tree::TerminalNode *INT_LIT();
\r
192 TypeModifierContext* typeModifier();
\r
194 class NamespaceSpecifierContext : public antlr4::ParserRuleContext {
\r
196 NamespaceSpecifierContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
197 virtual size_t getRuleIndex() const override;
\r
198 TypeNameContext *typeName();
\r
203 NamespaceSpecifierContext* namespaceSpecifier();
\r
205 class FuncDeclContext : public antlr4::ParserRuleContext {
\r
207 FuncDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
208 virtual size_t getRuleIndex() const override;
\r
209 FuncContext *func();
\r
214 FuncDeclContext* funcDecl();
\r
216 class FuncContext : public antlr4::ParserRuleContext {
\r
218 FuncContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
219 virtual size_t getRuleIndex() const override;
\r
220 FuncNameContext *funcName();
\r
221 ParameterContext *parameter();
\r
222 BodyContext *body();
\r
223 TypeContext *type();
\r
224 GenericDeclContext *genericDecl();
\r
229 FuncContext* func();
\r
231 class ParameterContext : public antlr4::ParserRuleContext {
\r
233 ParameterContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
234 virtual size_t getRuleIndex() const override;
\r
235 std::vector<VarContext *> var();
\r
236 VarContext* var(size_t i);
\r
241 ParameterContext* parameter();
\r
243 class BodyContext : public antlr4::ParserRuleContext {
\r
245 BodyContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
246 virtual size_t getRuleIndex() const override;
\r
247 std::vector<StmtContext *> stmt();
\r
248 StmtContext* stmt(size_t i);
\r
253 BodyContext* body();
\r
255 class StructDeclContext : public antlr4::ParserRuleContext {
\r
257 StructDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
258 virtual size_t getRuleIndex() const override;
\r
259 StructNameContext *structName();
\r
260 GenericDeclContext *genericDecl();
\r
261 std::vector<StructMemberContext *> structMember();
\r
262 StructMemberContext* structMember(size_t i);
\r
267 StructDeclContext* structDecl();
\r
269 class StructMemberContext : public antlr4::ParserRuleContext {
\r
271 StructMemberContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
272 virtual size_t getRuleIndex() const override;
\r
273 StructVarContext *structVar();
\r
274 PrivateDeclContext *privateDecl();
\r
275 StructMethodContext *structMethod();
\r
280 StructMemberContext* structMember();
\r
282 class StructVarContext : public antlr4::ParserRuleContext {
\r
284 StructVarContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
285 virtual size_t getRuleIndex() const override;
\r
291 StructVarContext* structVar();
\r
293 class StructMethodContext : public antlr4::ParserRuleContext {
\r
295 StructMethodContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
296 virtual size_t getRuleIndex() const override;
\r
297 FuncContext *func();
\r
302 StructMethodContext* structMethod();
\r
304 class PrivateDeclContext : public antlr4::ParserRuleContext {
\r
306 PrivateDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
307 virtual size_t getRuleIndex() const override;
\r
312 PrivateDeclContext* privateDecl();
\r
314 class GenericDeclContext : public antlr4::ParserRuleContext {
\r
316 GenericDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
317 virtual size_t getRuleIndex() const override;
\r
318 std::vector<TypeNameContext *> typeName();
\r
319 TypeNameContext* typeName(size_t i);
\r
324 GenericDeclContext* genericDecl();
\r
326 class StmtContext : public antlr4::ParserRuleContext {
\r
328 StmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
329 virtual size_t getRuleIndex() const override;
\r
330 VarDeclContext *varDecl();
\r
331 IfStmtContext *ifStmt();
\r
332 SwitchStmtContext *switchStmt();
\r
333 ForStmtContext *forStmt();
\r
334 WhileStmtContext *whileStmt();
\r
335 AssignStmtContext *assignStmt();
\r
336 ReturnStmtContext *returnStmt();
\r
337 ExprContext *expr();
\r
342 StmtContext* stmt();
\r
344 class IfStmtContext : public antlr4::ParserRuleContext {
\r
346 IfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
347 virtual size_t getRuleIndex() const override;
\r
348 ExprContext *expr();
\r
349 BodyContext *body();
\r
350 std::vector<ElseIfStmtContext *> elseIfStmt();
\r
351 ElseIfStmtContext* elseIfStmt(size_t i);
\r
352 ElseStmtContext *elseStmt();
\r
357 IfStmtContext* ifStmt();
\r
359 class ElseIfStmtContext : public antlr4::ParserRuleContext {
\r
361 ElseIfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
362 virtual size_t getRuleIndex() const override;
\r
363 ExprContext *expr();
\r
364 BodyContext *body();
\r
369 ElseIfStmtContext* elseIfStmt();
\r
371 class ElseStmtContext : public antlr4::ParserRuleContext {
\r
373 ElseStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
374 virtual size_t getRuleIndex() const override;
\r
375 BodyContext *body();
\r
380 ElseStmtContext* elseStmt();
\r
382 class SwitchStmtContext : public antlr4::ParserRuleContext {
\r
384 SwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
385 virtual size_t getRuleIndex() const override;
\r
386 ExprContext *expr();
\r
387 SwitchBodyContext *switchBody();
\r
392 SwitchStmtContext* switchStmt();
\r
394 class SwitchBodyContext : public antlr4::ParserRuleContext {
\r
396 SwitchBodyContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
397 virtual size_t getRuleIndex() const override;
\r
398 std::vector<SwitchCaseContext *> switchCase();
\r
399 SwitchCaseContext* switchCase(size_t i);
\r
404 SwitchBodyContext* switchBody();
\r
406 class SwitchCaseContext : public antlr4::ParserRuleContext {
\r
408 SwitchCaseContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
409 virtual size_t getRuleIndex() const override;
\r
410 ExprContext *expr();
\r
411 BodyContext *body();
\r
416 SwitchCaseContext* switchCase();
\r
418 class ForStmtContext : public antlr4::ParserRuleContext {
\r
420 ForStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
421 virtual size_t getRuleIndex() const override;
\r
422 std::vector<ExprContext *> expr();
\r
423 ExprContext* expr(size_t i);
\r
424 BodyContext *body();
\r
425 VarInitContext *varInit();
\r
426 AssignStmtContext *assignStmt();
\r
431 ForStmtContext* forStmt();
\r
433 class WhileStmtContext : public antlr4::ParserRuleContext {
\r
435 WhileStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
436 virtual size_t getRuleIndex() const override;
\r
437 ExprContext *expr();
\r
438 BodyContext *body();
\r
443 WhileStmtContext* whileStmt();
\r
445 class AssignStmtContext : public antlr4::ParserRuleContext {
\r
447 AssignStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
448 virtual size_t getRuleIndex() const override;
\r
449 std::vector<ExprContext *> expr();
\r
450 ExprContext* expr(size_t i);
\r
455 AssignStmtContext* assignStmt();
\r
457 class ReturnStmtContext : public antlr4::ParserRuleContext {
\r
459 ReturnStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
460 virtual size_t getRuleIndex() const override;
\r
461 ExprContext *expr();
\r
466 ReturnStmtContext* returnStmt();
\r
468 class ExprContext : public antlr4::ParserRuleContext {
\r
470 ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
472 ExprContext() = default;
\r
473 void copyFrom(ExprContext *context);
\r
474 using antlr4::ParserRuleContext::copyFrom;
\r
476 virtual size_t getRuleIndex() const override;
\r
481 class DotExprContext : public ExprContext {
\r
483 DotExprContext(ExprContext *ctx);
\r
485 ExprContext *expr();
\r
486 VarNameContext *varName();
\r
489 class FuncExprContext : public ExprContext {
\r
491 FuncExprContext(ExprContext *ctx);
\r
493 FuncNameContext *funcName();
\r
494 std::vector<NamespaceSpecifierContext *> namespaceSpecifier();
\r
495 NamespaceSpecifierContext* namespaceSpecifier(size_t i);
\r
496 std::vector<ExprContext *> expr();
\r
497 ExprContext* expr(size_t i);
\r
500 class BracketExprContext : public ExprContext {
\r
502 BracketExprContext(ExprContext *ctx);
\r
504 std::vector<ExprContext *> expr();
\r
505 ExprContext* expr(size_t i);
\r
508 class PrefixOpExprContext : public ExprContext {
\r
510 PrefixOpExprContext(ExprContext *ctx);
\r
512 Prefix_opContext *prefix_op();
\r
513 ExprContext *expr();
\r
516 class MethodExprContext : public ExprContext {
\r
518 MethodExprContext(ExprContext *ctx);
\r
520 std::vector<ExprContext *> expr();
\r
521 ExprContext* expr(size_t i);
\r
522 FuncNameContext *funcName();
\r
525 class PostfixOpExprContext : public ExprContext {
\r
527 PostfixOpExprContext(ExprContext *ctx);
\r
529 ExprContext *expr();
\r
530 Postfix_opContext *postfix_op();
\r
533 class BinaryOpExprContext : public ExprContext {
\r
535 BinaryOpExprContext(ExprContext *ctx);
\r
537 std::vector<ExprContext *> expr();
\r
538 ExprContext* expr(size_t i);
\r
539 Binary_opContext *binary_op();
\r
542 class TernaryOpExprContext : public ExprContext {
\r
544 TernaryOpExprContext(ExprContext *ctx);
\r
546 std::vector<ExprContext *> expr();
\r
547 ExprContext* expr(size_t i);
\r
550 class LitExprContext : public ExprContext {
\r
552 LitExprContext(ExprContext *ctx);
\r
554 LiteralContext *literal();
\r
557 class ParenExprContext : public ExprContext {
\r
559 ParenExprContext(ExprContext *ctx);
\r
561 ExprContext *expr();
\r
564 class IdentifierExprContext : public ExprContext {
\r
566 IdentifierExprContext(ExprContext *ctx);
\r
568 VarNameContext *varName();
\r
569 std::vector<NamespaceSpecifierContext *> namespaceSpecifier();
\r
570 NamespaceSpecifierContext* namespaceSpecifier(size_t i);
\r
573 ExprContext* expr();
\r
574 ExprContext* expr(int precedence);
\r
575 class LiteralContext : public antlr4::ParserRuleContext {
\r
577 LiteralContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
578 virtual size_t getRuleIndex() const override;
\r
579 antlr4::tree::TerminalNode *INT_LIT();
\r
580 antlr4::tree::TerminalNode *DECIMAL_LIT();
\r
581 antlr4::tree::TerminalNode *STRING_LIT();
\r
582 antlr4::tree::TerminalNode *BOOL_LIT();
\r
587 LiteralContext* literal();
\r
589 class FuncNameContext : public antlr4::ParserRuleContext {
\r
591 FuncNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
592 virtual size_t getRuleIndex() const override;
\r
593 antlr4::tree::TerminalNode *NAME();
\r
598 FuncNameContext* funcName();
\r
600 class VarNameContext : public antlr4::ParserRuleContext {
\r
602 VarNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
603 virtual size_t getRuleIndex() const override;
\r
604 antlr4::tree::TerminalNode *NAME();
\r
609 VarNameContext* varName();
\r
611 class TypeNameContext : public antlr4::ParserRuleContext {
\r
613 TypeNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
614 virtual size_t getRuleIndex() const override;
\r
615 antlr4::tree::TerminalNode *NAME();
\r
620 TypeNameContext* typeName();
\r
622 class StructNameContext : public antlr4::ParserRuleContext {
\r
624 StructNameContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
625 virtual size_t getRuleIndex() const override;
\r
626 antlr4::tree::TerminalNode *NAME();
\r
631 StructNameContext* structName();
\r
633 class Postfix_opContext : public antlr4::ParserRuleContext {
\r
635 Postfix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
636 virtual size_t getRuleIndex() const override;
\r
641 Postfix_opContext* postfix_op();
\r
643 class Prefix_opContext : public antlr4::ParserRuleContext {
\r
645 Prefix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
646 virtual size_t getRuleIndex() const override;
\r
647 Postfix_opContext *postfix_op();
\r
652 Prefix_opContext* prefix_op();
\r
654 class Binary_opContext : public antlr4::ParserRuleContext {
\r
656 Binary_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);
\r
657 virtual size_t getRuleIndex() const override;
\r
662 Binary_opContext* binary_op();
\r
665 virtual bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override;
\r
666 bool exprSempred(ExprContext *_localctx, size_t predicateIndex);
\r
669 static std::vector<antlr4::dfa::DFA> _decisionToDFA;
\r
670 static antlr4::atn::PredictionContextCache _sharedContextCache;
\r
671 static std::vector<std::string> _ruleNames;
\r
672 static std::vector<std::string> _tokenNames;
\r
674 static std::vector<std::string> _literalNames;
\r
675 static std::vector<std::string> _symbolicNames;
\r
676 static antlr4::dfa::Vocabulary _vocabulary;
\r
677 static antlr4::atn::ATN _atn;
\r
678 static std::vector<uint16_t> _serializedATN;
\r
681 struct Initializer {
\r
684 static Initializer _init;
\r