X-Git-Url: https://gitweb.ps.run/toc/blobdiff_plain/45409c781a9e35df68c43b1e2f028d30bf90c0a0..9f5457a18f551d261e4bd380ea16a52dc5b04cf9:/gen/TocParser.h diff --git a/gen/TocParser.h b/gen/TocParser.h index 6dc941c..0157c9c 100644 --- a/gen/TocParser.h +++ b/gen/TocParser.h @@ -14,20 +14,30 @@ public: enum { T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, T__7 = 8, T__8 = 9, T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14, - T__14 = 15, T__15 = 16, BINARY_OPERATOR = 17, INTLIT = 18, NAME = 19, - WS = 20, NEWLINE = 21 + T__14 = 15, T__15 = 16, T__16 = 17, T__17 = 18, T__18 = 19, T__19 = 20, + T__20 = 21, T__21 = 22, T__22 = 23, T__23 = 24, T__24 = 25, T__25 = 26, + T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32, + T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, + T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, + T__44 = 45, T__45 = 46, T__46 = 47, T__47 = 48, T__48 = 49, T__49 = 50, + T__50 = 51, T__51 = 52, T__52 = 53, T__53 = 54, INT_LIT = 55, DECIMAL_LIT = 56, + STRING_LIT = 57, BOOL_LIT = 58, NAME = 59, WS = 60, NEWLINE = 61, NUMBER = 62 }; enum { - RuleProg = 0, RuleDecl = 1, RuleVarDecl = 2, RuleVar = 3, RuleType = 4, - RuleFuncDecl = 5, RuleFunc = 6, RuleParameter = 7, RuleFirstParameter = 8, - RuleAdditionalParameter = 9, RuleBody = 10, RuleStructDecl = 11, RuleStructMember = 12, - RuleStructVar = 13, RuleStructMethod = 14, RuleStmt = 15, RuleConditional = 16, - RuleIfCond = 17, RuleLoop = 18, RuleWhileLoop = 19, RuleAssignment = 20, - RuleReturnStmt = 21, RuleExpr = 22, RuleNonOpExpr = 23, RuleNonSubscriptExpr = 24, - RuleFuncCall = 25, RuleOperatorExpr = 26, RuleBinaryOperator = 27, RuleIdentifier = 28, - RuleLiteral = 29, RuleSubscript = 30, RuleMemberAccess = 31, RuleParenExpr = 32, - RuleFuncName = 33, RuleVarName = 34, RuleTypeName = 35, RuleStructName = 36 + RuleProg = 0, RuleDecl = 1, RuleVarDecl = 2, RuleVar = 3, RuleVarInit = 4, + RuleType = 5, RuleTypeModifier = 6, RuleFuncDecl = 7, RuleFunc = 8, + RuleParameter = 9, RuleBody = 10, RuleStructDecl = 11, RuleStructMember = 12, + RuleStructVar = 13, RuleStructMethod = 14, RuleStmt = 15, RuleIfStmt = 16, + RuleElseIfStmt = 17, RuleElseStmt = 18, RuleSwitchStmt = 19, RuleSwitchBody = 20, + RuleSwitchCase = 21, RuleForStmt = 22, RuleWhileStmt = 23, RuleAssignStmt = 24, + RuleReturnStmt = 25, RuleExpr = 26, RuleNonOpExpr = 27, RuleNonAccessExpr = 28, + RuleFuncExpr = 29, RuleOpExpr = 30, RuleBinaryOp = 31, RulePrefixOp = 32, + RulePostfixOp = 33, RuleTernaryOp = 34, RuleIdentifierExpr = 35, RuleLitExpr = 36, + RuleAccessExpr = 37, RuleAccessSubExpr = 38, RuleAccessMember = 39, + RuleAccessBrackets = 40, RuleParenExpr = 41, RuleFuncName = 42, RuleVarName = 43, + RuleTypeName = 44, RuleStructName = 45, RulePostfix_op = 46, RulePrefix_op = 47, + RuleBinary_op = 48 }; explicit TocParser(antlr4::TokenStream *input); @@ -44,39 +54,51 @@ public: class DeclContext; class VarDeclContext; class VarContext; + class VarInitContext; class TypeContext; + class TypeModifierContext; class FuncDeclContext; class FuncContext; class ParameterContext; - class FirstParameterContext; - class AdditionalParameterContext; class BodyContext; class StructDeclContext; class StructMemberContext; class StructVarContext; class StructMethodContext; class StmtContext; - class ConditionalContext; - class IfCondContext; - class LoopContext; - class WhileLoopContext; - class AssignmentContext; + class IfStmtContext; + class ElseIfStmtContext; + class ElseStmtContext; + class SwitchStmtContext; + class SwitchBodyContext; + class SwitchCaseContext; + class ForStmtContext; + class WhileStmtContext; + class AssignStmtContext; class ReturnStmtContext; class ExprContext; class NonOpExprContext; - class NonSubscriptExprContext; - class FuncCallContext; - class OperatorExprContext; - class BinaryOperatorContext; - class IdentifierContext; - class LiteralContext; - class SubscriptContext; - class MemberAccessContext; + class NonAccessExprContext; + class FuncExprContext; + class OpExprContext; + class BinaryOpContext; + class PrefixOpContext; + class PostfixOpContext; + class TernaryOpContext; + class IdentifierExprContext; + class LitExprContext; + class AccessExprContext; + class AccessSubExprContext; + class AccessMemberContext; + class AccessBracketsContext; class ParenExprContext; class FuncNameContext; class VarNameContext; class TypeNameContext; - class StructNameContext; + class StructNameContext; + class Postfix_opContext; + class Prefix_opContext; + class Binary_opContext; class ProgContext : public antlr4::ParserRuleContext { public: @@ -136,88 +158,91 @@ public: VarContext* var(); - class TypeContext : public antlr4::ParserRuleContext { + class VarInitContext : public antlr4::ParserRuleContext { public: - TypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + VarInitContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - TypeNameContext *typeName(); + VarNameContext *varName(); + TypeContext *type(); + ExprContext *expr(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - TypeContext* type(); + VarInitContext* varInit(); - class FuncDeclContext : public antlr4::ParserRuleContext { + class TypeContext : public antlr4::ParserRuleContext { public: - FuncDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + TypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncContext *func(); + TypeNameContext *typeName(); + std::vector typeModifier(); + TypeModifierContext* typeModifier(size_t i); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - FuncDeclContext* funcDecl(); + TypeContext* type(); - class FuncContext : public antlr4::ParserRuleContext { + class TypeModifierContext : public antlr4::ParserRuleContext { public: - FuncContext(antlr4::ParserRuleContext *parent, size_t invokingState); + TypeModifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncNameContext *funcName(); - ParameterContext *parameter(); - BodyContext *body(); - TypeContext *type(); + antlr4::tree::TerminalNode *NUMBER(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - FuncContext* func(); + TypeModifierContext* typeModifier(); - class ParameterContext : public antlr4::ParserRuleContext { + class FuncDeclContext : public antlr4::ParserRuleContext { public: - ParameterContext(antlr4::ParserRuleContext *parent, size_t invokingState); + FuncDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FirstParameterContext *firstParameter(); - std::vector additionalParameter(); - AdditionalParameterContext* additionalParameter(size_t i); + FuncContext *func(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - ParameterContext* parameter(); + FuncDeclContext* funcDecl(); - class FirstParameterContext : public antlr4::ParserRuleContext { + class FuncContext : public antlr4::ParserRuleContext { public: - FirstParameterContext(antlr4::ParserRuleContext *parent, size_t invokingState); + FuncContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - VarContext *var(); + FuncNameContext *funcName(); + ParameterContext *parameter(); + BodyContext *body(); + TypeContext *type(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - FirstParameterContext* firstParameter(); + FuncContext* func(); - class AdditionalParameterContext : public antlr4::ParserRuleContext { + class ParameterContext : public antlr4::ParserRuleContext { public: - AdditionalParameterContext(antlr4::ParserRuleContext *parent, size_t invokingState); + ParameterContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - VarContext *var(); + std::vector var(); + VarContext* var(size_t i); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - AdditionalParameterContext* additionalParameter(); + ParameterContext* parameter(); class BodyContext : public antlr4::ParserRuleContext { public: @@ -293,9 +318,11 @@ public: StmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; VarDeclContext *varDecl(); - ConditionalContext *conditional(); - LoopContext *loop(); - AssignmentContext *assignment(); + IfStmtContext *ifStmt(); + SwitchStmtContext *switchStmt(); + ForStmtContext *forStmt(); + WhileStmtContext *whileStmt(); + AssignStmtContext *assignStmt(); ReturnStmtContext *returnStmt(); ExprContext *expr(); @@ -306,22 +333,26 @@ public: StmtContext* stmt(); - class ConditionalContext : public antlr4::ParserRuleContext { + class IfStmtContext : public antlr4::ParserRuleContext { public: - ConditionalContext(antlr4::ParserRuleContext *parent, size_t invokingState); + IfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - IfCondContext *ifCond(); + ExprContext *expr(); + BodyContext *body(); + std::vector elseIfStmt(); + ElseIfStmtContext* elseIfStmt(size_t i); + ElseStmtContext *elseStmt(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - ConditionalContext* conditional(); + IfStmtContext* ifStmt(); - class IfCondContext : public antlr4::ParserRuleContext { + class ElseIfStmtContext : public antlr4::ParserRuleContext { public: - IfCondContext(antlr4::ParserRuleContext *parent, size_t invokingState); + ElseIfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; ExprContext *expr(); BodyContext *body(); @@ -331,24 +362,52 @@ public: }; - IfCondContext* ifCond(); + ElseIfStmtContext* elseIfStmt(); + + class ElseStmtContext : public antlr4::ParserRuleContext { + public: + ElseStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + BodyContext *body(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ElseStmtContext* elseStmt(); + + class SwitchStmtContext : public antlr4::ParserRuleContext { + public: + SwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + IdentifierExprContext *identifierExpr(); + SwitchBodyContext *switchBody(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + SwitchStmtContext* switchStmt(); - class LoopContext : public antlr4::ParserRuleContext { + class SwitchBodyContext : public antlr4::ParserRuleContext { public: - LoopContext(antlr4::ParserRuleContext *parent, size_t invokingState); + SwitchBodyContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - WhileLoopContext *whileLoop(); + std::vector switchCase(); + SwitchCaseContext* switchCase(size_t i); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - LoopContext* loop(); + SwitchBodyContext* switchBody(); - class WhileLoopContext : public antlr4::ParserRuleContext { + class SwitchCaseContext : public antlr4::ParserRuleContext { public: - WhileLoopContext(antlr4::ParserRuleContext *parent, size_t invokingState); + SwitchCaseContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; ExprContext *expr(); BodyContext *body(); @@ -358,21 +417,52 @@ public: }; - WhileLoopContext* whileLoop(); + SwitchCaseContext* switchCase(); + + class ForStmtContext : public antlr4::ParserRuleContext { + public: + ForStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector expr(); + ExprContext* expr(size_t i); + BodyContext *body(); + VarInitContext *varInit(); + AssignStmtContext *assignStmt(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + ForStmtContext* forStmt(); - class AssignmentContext : public antlr4::ParserRuleContext { + class WhileStmtContext : public antlr4::ParserRuleContext { public: - AssignmentContext(antlr4::ParserRuleContext *parent, size_t invokingState); + WhileStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - IdentifierContext *identifier(); ExprContext *expr(); + BodyContext *body(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - AssignmentContext* assignment(); + WhileStmtContext* whileStmt(); + + class AssignStmtContext : public antlr4::ParserRuleContext { + public: + AssignStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + IdentifierExprContext *identifierExpr(); + ExprContext *expr(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + AssignStmtContext* assignStmt(); class ReturnStmtContext : public antlr4::ParserRuleContext { public: @@ -391,13 +481,12 @@ public: public: ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncCallContext *funcCall(); - LiteralContext *literal(); - IdentifierContext *identifier(); - SubscriptContext *subscript(); - MemberAccessContext *memberAccess(); + FuncExprContext *funcExpr(); + LitExprContext *litExpr(); + IdentifierExprContext *identifierExpr(); ParenExprContext *parenExpr(); - OperatorExprContext *operatorExpr(); + AccessExprContext *accessExpr(); + OpExprContext *opExpr(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; @@ -410,12 +499,11 @@ public: public: NonOpExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncCallContext *funcCall(); - LiteralContext *literal(); - IdentifierContext *identifier(); - SubscriptContext *subscript(); - MemberAccessContext *memberAccess(); + FuncExprContext *funcExpr(); + LitExprContext *litExpr(); + IdentifierExprContext *identifierExpr(); ParenExprContext *parenExpr(); + AccessExprContext *accessExpr(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; @@ -424,13 +512,12 @@ public: NonOpExprContext* nonOpExpr(); - class NonSubscriptExprContext : public antlr4::ParserRuleContext { + class NonAccessExprContext : public antlr4::ParserRuleContext { public: - NonSubscriptExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + NonAccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncCallContext *funcCall(); - IdentifierContext *identifier(); - MemberAccessContext *memberAccess(); + FuncExprContext *funcExpr(); + IdentifierExprContext *identifierExpr(); ParenExprContext *parenExpr(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; @@ -438,11 +525,11 @@ public: }; - NonSubscriptExprContext* nonSubscriptExpr(); + NonAccessExprContext* nonAccessExpr(); - class FuncCallContext : public antlr4::ParserRuleContext { + class FuncExprContext : public antlr4::ParserRuleContext { public: - FuncCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); + FuncExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; FuncNameContext *funcName(); std::vector expr(); @@ -453,40 +540,86 @@ public: }; - FuncCallContext* funcCall(); + FuncExprContext* funcExpr(); - class OperatorExprContext : public antlr4::ParserRuleContext { + class OpExprContext : public antlr4::ParserRuleContext { public: - OperatorExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + OpExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - BinaryOperatorContext *binaryOperator(); + BinaryOpContext *binaryOp(); + PrefixOpContext *prefixOp(); + PostfixOpContext *postfixOp(); + TernaryOpContext *ternaryOp(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - OperatorExprContext* operatorExpr(); + OpExprContext* opExpr(); - class BinaryOperatorContext : public antlr4::ParserRuleContext { + class BinaryOpContext : public antlr4::ParserRuleContext { public: - BinaryOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + BinaryOpContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; std::vector nonOpExpr(); NonOpExprContext* nonOpExpr(size_t i); - std::vector BINARY_OPERATOR(); - antlr4::tree::TerminalNode* BINARY_OPERATOR(size_t i); + std::vector binary_op(); + Binary_opContext* binary_op(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + BinaryOpContext* binaryOp(); + + class PrefixOpContext : public antlr4::ParserRuleContext { + public: + PrefixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + Prefix_opContext *prefix_op(); + NonOpExprContext *nonOpExpr(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + PrefixOpContext* prefixOp(); + + class PostfixOpContext : public antlr4::ParserRuleContext { + public: + PostfixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + NonOpExprContext *nonOpExpr(); + Postfix_opContext *postfix_op(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + PostfixOpContext* postfixOp(); + + class TernaryOpContext : public antlr4::ParserRuleContext { + public: + TernaryOpContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + NonOpExprContext *nonOpExpr(); + std::vector expr(); + ExprContext* expr(size_t i); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - BinaryOperatorContext* binaryOperator(); + TernaryOpContext* ternaryOp(); - class IdentifierContext : public antlr4::ParserRuleContext { + class IdentifierExprContext : public antlr4::ParserRuleContext { public: - IdentifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); + IdentifierExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; VarNameContext *varName(); @@ -495,48 +628,78 @@ public: }; - IdentifierContext* identifier(); + IdentifierExprContext* identifierExpr(); - class LiteralContext : public antlr4::ParserRuleContext { + class LitExprContext : public antlr4::ParserRuleContext { public: - LiteralContext(antlr4::ParserRuleContext *parent, size_t invokingState); + LitExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *INTLIT(); + antlr4::tree::TerminalNode *INT_LIT(); + antlr4::tree::TerminalNode *DECIMAL_LIT(); + antlr4::tree::TerminalNode *STRING_LIT(); + antlr4::tree::TerminalNode *BOOL_LIT(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - LiteralContext* literal(); + LitExprContext* litExpr(); - class SubscriptContext : public antlr4::ParserRuleContext { + class AccessExprContext : public antlr4::ParserRuleContext { public: - SubscriptContext(antlr4::ParserRuleContext *parent, size_t invokingState); + AccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - NonSubscriptExprContext *nonSubscriptExpr(); - ExprContext *expr(); + NonAccessExprContext *nonAccessExpr(); + std::vector accessSubExpr(); + AccessSubExprContext* accessSubExpr(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + AccessExprContext* accessExpr(); + + class AccessSubExprContext : public antlr4::ParserRuleContext { + public: + AccessSubExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + AccessMemberContext *accessMember(); + AccessBracketsContext *accessBrackets(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + AccessSubExprContext* accessSubExpr(); + + class AccessMemberContext : public antlr4::ParserRuleContext { + public: + AccessMemberContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + IdentifierExprContext *identifierExpr(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - SubscriptContext* subscript(); + AccessMemberContext* accessMember(); - class MemberAccessContext : public antlr4::ParserRuleContext { + class AccessBracketsContext : public antlr4::ParserRuleContext { public: - MemberAccessContext(antlr4::ParserRuleContext *parent, size_t invokingState); + AccessBracketsContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - std::vector identifier(); - IdentifierContext* identifier(size_t i); + ExprContext *expr(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - MemberAccessContext* memberAccess(); + AccessBracketsContext* accessBrackets(); class ParenExprContext : public antlr4::ParserRuleContext { public: @@ -603,6 +766,43 @@ public: StructNameContext* structName(); + class Postfix_opContext : public antlr4::ParserRuleContext { + public: + Postfix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + Postfix_opContext* postfix_op(); + + class Prefix_opContext : public antlr4::ParserRuleContext { + public: + Prefix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + Postfix_opContext *postfix_op(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + Prefix_opContext* prefix_op(); + + class Binary_opContext : public antlr4::ParserRuleContext { + public: + Binary_opContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + Binary_opContext* binary_op(); + private: static std::vector _decisionToDFA;