T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, \r
T__7 = 8, T__8 = 9, T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14, \r
T__14 = 15, T__15 = 16, T__16 = 17, T__17 = 18, T__18 = 19, T__19 = 20, \r
- T__20 = 21, T__21 = 22, T__22 = 23, POSTFIX_OP = 24, PREFIX_OP = 25, \r
- BINARY_OP = 26, INT_LIT = 27, DECIMAL_LIT = 28, STRING_LIT = 29, BOOL_LIT = 30, \r
- NAME = 31, WS = 32, NEWLINE = 33, NUMBER = 34\r
+ T__20 = 21, T__21 = 22, T__22 = 23, T__23 = 24, T__24 = 25, T__25 = 26, \r
+ T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32, \r
+ T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, \r
+ T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, \r
+ T__44 = 45, T__45 = 46, T__46 = 47, T__47 = 48, T__48 = 49, T__49 = 50, \r
+ T__50 = 51, T__51 = 52, T__52 = 53, T__53 = 54, INT_LIT = 55, DECIMAL_LIT = 56, \r
+ STRING_LIT = 57, BOOL_LIT = 58, NAME = 59, WS = 60, NEWLINE = 61, NUMBER = 62\r
};\r
\r
enum {\r
RuleType = 5, RuleTypeModifier = 6, RuleFuncDecl = 7, RuleFunc = 8, \r
RuleParameter = 9, RuleBody = 10, RuleStructDecl = 11, RuleStructMember = 12, \r
RuleStructVar = 13, RuleStructMethod = 14, RuleStmt = 15, RuleIfStmt = 16, \r
- RuleSwitchStmt = 17, RuleSwitchBody = 18, RuleForStmt = 19, RuleWhileStmt = 20, \r
- RuleAssignStmt = 21, RuleReturnStmt = 22, RuleExpr = 23, RuleNonOpExpr = 24, \r
- RuleNonAccessExpr = 25, RuleFuncExpr = 26, RuleOpExpr = 27, RuleBinaryOp = 28, \r
- RulePrefixOp = 29, RulePostfixOp = 30, RuleTernaryOp = 31, RuleIdentifierExpr = 32, \r
- RuleLitExpr = 33, RuleAccessExpr = 34, RuleParenExpr = 35, RuleFuncName = 36, \r
- RuleVarName = 37, RuleTypeName = 38, RuleStructName = 39\r
+ RuleElseIfStmt = 17, RuleElseStmt = 18, RuleSwitchStmt = 19, RuleSwitchBody = 20, \r
+ RuleSwitchCase = 21, RuleForStmt = 22, RuleWhileStmt = 23, RuleAssignStmt = 24, \r
+ RuleReturnStmt = 25, RuleExpr = 26, RuleNonOpExpr = 27, RuleNonAccessExpr = 28, \r
+ RuleFuncExpr = 29, RuleOpExpr = 30, RuleBinaryOp = 31, RulePrefixOp = 32, \r
+ RulePostfixOp = 33, RuleTernaryOp = 34, RuleIdentifierExpr = 35, RuleLitExpr = 36, \r
+ RuleAccessExpr = 37, RuleAccessSubExpr = 38, RuleAccessMember = 39, \r
+ RuleAccessBrackets = 40, RuleParenExpr = 41, RuleFuncName = 42, RuleVarName = 43, \r
+ RuleTypeName = 44, RuleStructName = 45, RulePostfix_op = 46, RulePrefix_op = 47, \r
+ RuleBinary_op = 48\r
};\r
\r
explicit TocParser(antlr4::TokenStream *input);\r
class StructMethodContext;\r
class StmtContext;\r
class IfStmtContext;\r
+ class ElseIfStmtContext;\r
+ class ElseStmtContext;\r
class SwitchStmtContext;\r
class SwitchBodyContext;\r
+ class SwitchCaseContext;\r
class ForStmtContext;\r
class WhileStmtContext;\r
class AssignStmtContext;\r
class IdentifierExprContext;\r
class LitExprContext;\r
class AccessExprContext;\r
+ class AccessSubExprContext;\r
+ class AccessMemberContext;\r
+ class AccessBracketsContext;\r
class ParenExprContext;\r
class FuncNameContext;\r
class VarNameContext;\r
class TypeNameContext;\r
- class StructNameContext; \r
+ class StructNameContext;\r
+ class Postfix_opContext;\r
+ class Prefix_opContext;\r
+ class Binary_opContext; \r
\r
class ProgContext : public antlr4::ParserRuleContext {\r
public:\r
public:\r
IfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- std::vector<ExprContext *> expr();\r
- ExprContext* expr(size_t i);\r
- std::vector<BodyContext *> body();\r
- BodyContext* body(size_t i);\r
+ ExprContext *expr();\r
+ BodyContext *body();\r
+ std::vector<ElseIfStmtContext *> elseIfStmt();\r
+ ElseIfStmtContext* elseIfStmt(size_t i);\r
+ ElseStmtContext *elseStmt();\r
\r
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
IfStmtContext* ifStmt();\r
\r
+ class ElseIfStmtContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ ElseIfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ ExprContext *expr();\r
+ BodyContext *body();\r
+\r
+ virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ \r
+ };\r
+\r
+ ElseIfStmtContext* elseIfStmt();\r
+\r
+ class ElseStmtContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ ElseStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ BodyContext *body();\r
+\r
+ virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ \r
+ };\r
+\r
+ ElseStmtContext* elseStmt();\r
+\r
class SwitchStmtContext : public antlr4::ParserRuleContext {\r
public:\r
SwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
public:\r
SwitchBodyContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- std::vector<ExprContext *> expr();\r
- ExprContext* expr(size_t i);\r
- std::vector<BodyContext *> body();\r
- BodyContext* body(size_t i);\r
+ std::vector<SwitchCaseContext *> switchCase();\r
+ SwitchCaseContext* switchCase(size_t i);\r
\r
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
SwitchBodyContext* switchBody();\r
\r
+ class SwitchCaseContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ SwitchCaseContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ ExprContext *expr();\r
+ BodyContext *body();\r
+\r
+ virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ \r
+ };\r
+\r
+ SwitchCaseContext* switchCase();\r
+\r
class ForStmtContext : public antlr4::ParserRuleContext {\r
public:\r
ForStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
std::vector<NonOpExprContext *> nonOpExpr();\r
NonOpExprContext* nonOpExpr(size_t i);\r
- std::vector<antlr4::tree::TerminalNode *> BINARY_OP();\r
- antlr4::tree::TerminalNode* BINARY_OP(size_t i);\r
+ std::vector<Binary_opContext *> binary_op();\r
+ Binary_opContext* binary_op(size_t i);\r
\r
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
public:\r
PrefixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- antlr4::tree::TerminalNode *PREFIX_OP();\r
+ Prefix_opContext *prefix_op();\r
NonOpExprContext *nonOpExpr();\r
\r
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
PostfixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
NonOpExprContext *nonOpExpr();\r
- antlr4::tree::TerminalNode *POSTFIX_OP();\r
+ Postfix_opContext *postfix_op();\r
\r
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
AccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
NonAccessExprContext *nonAccessExpr();\r
- std::vector<IdentifierExprContext *> identifierExpr();\r
- IdentifierExprContext* identifierExpr(size_t i);\r
- std::vector<ExprContext *> expr();\r
- ExprContext* expr(size_t i);\r
+ std::vector<AccessSubExprContext *> accessSubExpr();\r
+ AccessSubExprContext* accessSubExpr(size_t i);\r
\r
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
AccessExprContext* accessExpr();\r
\r
+ class AccessSubExprContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ AccessSubExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ AccessMemberContext *accessMember();\r
+ AccessBracketsContext *accessBrackets();\r
+\r
+ virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ \r
+ };\r
+\r
+ AccessSubExprContext* accessSubExpr();\r
+\r
+ class AccessMemberContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ AccessMemberContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ IdentifierExprContext *identifierExpr();\r
+\r
+ virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ \r
+ };\r
+\r
+ AccessMemberContext* accessMember();\r
+\r
+ class AccessBracketsContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ AccessBracketsContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ ExprContext *expr();\r
+\r
+ virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ \r
+ };\r
+\r
+ AccessBracketsContext* accessBrackets();\r
+\r
class ParenExprContext : public antlr4::ParserRuleContext {\r
public:\r
ParenExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
\r
StructNameContext* structName();\r
\r
+ class Postfix_opContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ Postfix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+\r
+ virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ \r
+ };\r
+\r
+ Postfix_opContext* postfix_op();\r
+\r
+ class Prefix_opContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ Prefix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ Postfix_opContext *postfix_op();\r
+\r
+ virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ \r
+ };\r
+\r
+ Prefix_opContext* prefix_op();\r
+\r
+ class Binary_opContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ Binary_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+\r
+ virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
+ \r
+ };\r
+\r
+ Binary_opContext* binary_op();\r
+\r
\r
private:\r
static std::vector<antlr4::dfa::DFA> _decisionToDFA;\r