X-Git-Url: https://gitweb.ps.run/toc/blobdiff_plain/b64d16088b29615d222d33450cf0315467400e59..HEAD:/gen/TocParser.h diff --git a/gen/TocParser.h b/gen/TocParser.h index a1438fb..15e4d49 100644 --- a/gen/TocParser.h +++ b/gen/TocParser.h @@ -14,20 +14,29 @@ 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, T__54 = 55, T__55 = 56, + T__56 = 57, T__57 = 58, INT_LIT = 59, DECIMAL_LIT = 60, BOOL_LIT = 61, + StringLit = 62, NAME = 63, WS = 64, NEWLINE = 65, COMMENT = 66 }; enum { - RuleProg = 0, RuleDecl = 1, RuleVarDecl = 2, RuleVar = 3, RuleType = 4, - RuleFuncDecl = 5, RuleFunc = 6, RuleParameter = 7, RuleBody = 8, RuleStructDecl = 9, - RuleStructMember = 10, RuleStructVar = 11, RuleStructMethod = 12, RuleStmt = 13, - RuleConditional = 14, RuleIfCond = 15, RuleLoop = 16, RuleWhileLoop = 17, - RuleAssignment = 18, RuleReturnStmt = 19, RuleExpr = 20, RuleNonOpExpr = 21, - RuleNonSubscriptExpr = 22, RuleNonAccessExpr = 23, RuleFuncCall = 24, - RuleOperatorExpr = 25, RuleBinaryOperator = 26, RuleIdentifier = 27, - RuleLiteral = 28, RuleSubscript = 29, RuleMemberAccess = 30, RuleParenExpr = 31, - RuleFuncName = 32, RuleVarName = 33, RuleTypeName = 34, RuleStructName = 35 + RuleProg = 0, RuleDecl = 1, RuleNamespaceDecl = 2, RuleVarDecl = 3, + RuleVar = 4, RuleVarInit = 5, RuleType = 6, RuleTypeModifier = 7, RuleNamespaceSpecifier = 8, + RuleFuncDecl = 9, RuleFunc = 10, RuleParameter = 11, RuleBody = 12, + RuleStructDecl = 13, RuleStructMember = 14, RuleStructVar = 15, RuleStructMethod = 16, + RulePrivateDecl = 17, RuleGenericDecl = 18, RuleGenericInstantiation = 19, + RuleStmt = 20, RuleIfStmt = 21, RuleElseIfStmt = 22, RuleElseStmt = 23, + RuleSwitchStmt = 24, RuleSwitchBody = 25, RuleSwitchCase = 26, RuleForStmt = 27, + RuleWhileStmt = 28, RuleAssignStmt = 29, RuleReturnStmt = 30, RuleExpr = 31, + RuleDot = 32, RuleArrow = 33, RuleLiteral = 34, RuleFuncName = 35, RuleVarName = 36, + RuleTypeName = 37, RuleStructName = 38, RulePostfix_op = 39, RulePrefix_op = 40, + RuleBinary_op = 41 }; explicit TocParser(antlr4::TokenStream *input); @@ -42,9 +51,13 @@ public: class ProgContext; class DeclContext; + class NamespaceDeclContext; class VarDeclContext; class VarContext; + class VarInitContext; class TypeContext; + class TypeModifierContext; + class NamespaceSpecifierContext; class FuncDeclContext; class FuncContext; class ParameterContext; @@ -53,29 +66,31 @@ public: class StructMemberContext; class StructVarContext; class StructMethodContext; + class PrivateDeclContext; + class GenericDeclContext; + class GenericInstantiationContext; 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 NonAccessExprContext; - class FuncCallContext; - class OperatorExprContext; - class BinaryOperatorContext; - class IdentifierContext; + class DotContext; + class ArrowContext; class LiteralContext; - class SubscriptContext; - class MemberAccessContext; - 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: @@ -85,8 +100,6 @@ public: std::vector decl(); DeclContext* decl(size_t i); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -99,22 +112,32 @@ public: VarDeclContext *varDecl(); FuncDeclContext *funcDecl(); StructDeclContext *structDecl(); + NamespaceDeclContext *namespaceDecl(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; DeclContext* decl(); + class NamespaceDeclContext : public antlr4::ParserRuleContext { + public: + NamespaceDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + TypeNameContext *typeName(); + std::vector decl(); + DeclContext* decl(size_t i); + + + }; + + NamespaceDeclContext* namespaceDecl(); + class VarDeclContext : public antlr4::ParserRuleContext { public: VarDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; VarContext *var(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -128,34 +151,68 @@ public: TypeContext *type(); ExprContext *expr(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; VarContext* var(); + class VarInitContext : public antlr4::ParserRuleContext { + public: + VarInitContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + VarNameContext *varName(); + TypeContext *type(); + ExprContext *expr(); + + + }; + + VarInitContext* varInit(); + class TypeContext : public antlr4::ParserRuleContext { public: TypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; TypeNameContext *typeName(); + std::vector namespaceSpecifier(); + NamespaceSpecifierContext* namespaceSpecifier(size_t i); + GenericInstantiationContext *genericInstantiation(); + std::vector typeModifier(); + TypeModifierContext* typeModifier(size_t i); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; TypeContext* type(); + class TypeModifierContext : public antlr4::ParserRuleContext { + public: + TypeModifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *INT_LIT(); + + + }; + + TypeModifierContext* typeModifier(); + + class NamespaceSpecifierContext : public antlr4::ParserRuleContext { + public: + NamespaceSpecifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + TypeNameContext *typeName(); + + + }; + + NamespaceSpecifierContext* namespaceSpecifier(); + class FuncDeclContext : public antlr4::ParserRuleContext { public: FuncDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; FuncContext *func(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -167,11 +224,10 @@ public: virtual size_t getRuleIndex() const override; FuncNameContext *funcName(); ParameterContext *parameter(); - BodyContext *body(); TypeContext *type(); + BodyContext *body(); + GenericDeclContext *genericDecl(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -184,8 +240,6 @@ public: std::vector var(); VarContext* var(size_t i); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -198,8 +252,6 @@ public: std::vector stmt(); StmtContext* stmt(size_t i); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -210,11 +262,10 @@ public: StructDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; StructNameContext *structName(); + GenericDeclContext *genericDecl(); std::vector structMember(); StructMemberContext* structMember(size_t i); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -225,10 +276,9 @@ public: StructMemberContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; StructVarContext *structVar(); + PrivateDeclContext *privateDecl(); StructMethodContext *structMethod(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -240,8 +290,6 @@ public: virtual size_t getRuleIndex() const override; VarContext *var(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -253,294 +301,330 @@ public: virtual size_t getRuleIndex() const override; FuncContext *func(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; StructMethodContext* structMethod(); + class PrivateDeclContext : public antlr4::ParserRuleContext { + public: + PrivateDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + + }; + + PrivateDeclContext* privateDecl(); + + class GenericDeclContext : public antlr4::ParserRuleContext { + public: + GenericDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector typeName(); + TypeNameContext* typeName(size_t i); + + + }; + + GenericDeclContext* genericDecl(); + + class GenericInstantiationContext : public antlr4::ParserRuleContext { + public: + GenericInstantiationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector type(); + TypeContext* type(size_t i); + + + }; + + GenericInstantiationContext* genericInstantiation(); + class StmtContext : public antlr4::ParserRuleContext { 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(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; 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(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - IfCondContext* ifCond(); + ElseIfStmtContext* elseIfStmt(); - class LoopContext : public antlr4::ParserRuleContext { + class ElseStmtContext : public antlr4::ParserRuleContext { public: - LoopContext(antlr4::ParserRuleContext *parent, size_t invokingState); + ElseStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - WhileLoopContext *whileLoop(); + BodyContext *body(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - LoopContext* loop(); + ElseStmtContext* elseStmt(); - class WhileLoopContext : public antlr4::ParserRuleContext { + class SwitchStmtContext : public antlr4::ParserRuleContext { public: - WhileLoopContext(antlr4::ParserRuleContext *parent, size_t invokingState); + SwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; ExprContext *expr(); - BodyContext *body(); + SwitchBodyContext *switchBody(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - WhileLoopContext* whileLoop(); + SwitchStmtContext* switchStmt(); - class AssignmentContext : public antlr4::ParserRuleContext { + class SwitchBodyContext : public antlr4::ParserRuleContext { public: - AssignmentContext(antlr4::ParserRuleContext *parent, size_t invokingState); + SwitchBodyContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - IdentifierContext *identifier(); - ExprContext *expr(); + std::vector switchCase(); + SwitchCaseContext* switchCase(size_t i); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - AssignmentContext* assignment(); + SwitchBodyContext* switchBody(); - class ReturnStmtContext : public antlr4::ParserRuleContext { + class SwitchCaseContext : public antlr4::ParserRuleContext { public: - ReturnStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + SwitchCaseContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; ExprContext *expr(); + BodyContext *body(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - ReturnStmtContext* returnStmt(); + SwitchCaseContext* switchCase(); - class ExprContext : public antlr4::ParserRuleContext { + class ForStmtContext : public antlr4::ParserRuleContext { public: - ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + ForStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncCallContext *funcCall(); - LiteralContext *literal(); - IdentifierContext *identifier(); - SubscriptContext *subscript(); - MemberAccessContext *memberAccess(); - ParenExprContext *parenExpr(); - OperatorExprContext *operatorExpr(); + VarInitContext *varInit(); + std::vector expr(); + ExprContext* expr(size_t i); + BodyContext *body(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - ExprContext* expr(); + ForStmtContext* forStmt(); - class NonOpExprContext : public antlr4::ParserRuleContext { + class WhileStmtContext : public antlr4::ParserRuleContext { public: - NonOpExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + WhileStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncCallContext *funcCall(); - LiteralContext *literal(); - IdentifierContext *identifier(); - SubscriptContext *subscript(); - MemberAccessContext *memberAccess(); - ParenExprContext *parenExpr(); + ExprContext *expr(); + BodyContext *body(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - NonOpExprContext* nonOpExpr(); + WhileStmtContext* whileStmt(); - class NonSubscriptExprContext : public antlr4::ParserRuleContext { + class AssignStmtContext : public antlr4::ParserRuleContext { public: - NonSubscriptExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + AssignStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncCallContext *funcCall(); - LiteralContext *literal(); - IdentifierContext *identifier(); - MemberAccessContext *memberAccess(); - ParenExprContext *parenExpr(); + std::vector expr(); + ExprContext* expr(size_t i); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - NonSubscriptExprContext* nonSubscriptExpr(); + AssignStmtContext* assignStmt(); - class NonAccessExprContext : public antlr4::ParserRuleContext { + class ReturnStmtContext : public antlr4::ParserRuleContext { public: - NonAccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + ReturnStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncCallContext *funcCall(); - LiteralContext *literal(); - IdentifierContext *identifier(); - SubscriptContext *subscript(); - ParenExprContext *parenExpr(); - OperatorExprContext *operatorExpr(); + ExprContext *expr(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - NonAccessExprContext* nonAccessExpr(); + ReturnStmtContext* returnStmt(); - class FuncCallContext : public antlr4::ParserRuleContext { + class ExprContext : public antlr4::ParserRuleContext { public: - FuncCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); + ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + + ExprContext() = default; + void copyFrom(ExprContext *context); + using antlr4::ParserRuleContext::copyFrom; + virtual size_t getRuleIndex() const override; + + + }; + + class DotExprContext : public ExprContext { + public: + DotExprContext(ExprContext *ctx); + + ExprContext *expr(); + VarNameContext *varName(); + DotContext *dot(); + ArrowContext *arrow(); + }; + + class FuncExprContext : public ExprContext { + public: + FuncExprContext(ExprContext *ctx); + FuncNameContext *funcName(); + std::vector namespaceSpecifier(); + NamespaceSpecifierContext* namespaceSpecifier(size_t i); + GenericInstantiationContext *genericInstantiation(); std::vector expr(); ExprContext* expr(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - }; - FuncCallContext* funcCall(); + class BracketExprContext : public ExprContext { + public: + BracketExprContext(ExprContext *ctx); + + std::vector expr(); + ExprContext* expr(size_t i); + }; - class OperatorExprContext : public antlr4::ParserRuleContext { + class PrefixOpExprContext : public ExprContext { public: - OperatorExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - BinaryOperatorContext *binaryOperator(); + PrefixOpExprContext(ExprContext *ctx); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - + Prefix_opContext *prefix_op(); + ExprContext *expr(); }; - OperatorExprContext* operatorExpr(); + class MethodExprContext : public ExprContext { + public: + MethodExprContext(ExprContext *ctx); - class BinaryOperatorContext : public antlr4::ParserRuleContext { + std::vector expr(); + ExprContext* expr(size_t i); + FuncNameContext *funcName(); + GenericInstantiationContext *genericInstantiation(); + }; + + class PostfixOpExprContext : public ExprContext { public: - BinaryOperatorContext(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); + PostfixOpExprContext(ExprContext *ctx); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - + ExprContext *expr(); + Postfix_opContext *postfix_op(); }; - BinaryOperatorContext* binaryOperator(); + class BinaryOpExprContext : public ExprContext { + public: + BinaryOpExprContext(ExprContext *ctx); + + std::vector expr(); + ExprContext* expr(size_t i); + Binary_opContext *binary_op(); + }; - class IdentifierContext : public antlr4::ParserRuleContext { + class TernaryOpExprContext : public ExprContext { public: - IdentifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - VarNameContext *varName(); + TernaryOpExprContext(ExprContext *ctx); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - + std::vector expr(); + ExprContext* expr(size_t i); }; - IdentifierContext* identifier(); + class LitExprContext : public ExprContext { + public: + LitExprContext(ExprContext *ctx); - class LiteralContext : public antlr4::ParserRuleContext { + LiteralContext *literal(); + }; + + class ParenExprContext : public ExprContext { public: - LiteralContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *INTLIT(); + ParenExprContext(ExprContext *ctx); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - + ExprContext *expr(); }; - LiteralContext* literal(); + class IdentifierExprContext : public ExprContext { + public: + IdentifierExprContext(ExprContext *ctx); + + VarNameContext *varName(); + std::vector namespaceSpecifier(); + NamespaceSpecifierContext* namespaceSpecifier(size_t i); + }; - class SubscriptContext : public antlr4::ParserRuleContext { + ExprContext* expr(); + ExprContext* expr(int precedence); + class DotContext : public antlr4::ParserRuleContext { public: - SubscriptContext(antlr4::ParserRuleContext *parent, size_t invokingState); + DotContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - NonSubscriptExprContext *nonSubscriptExpr(); - ExprContext *expr(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - SubscriptContext* subscript(); + DotContext* dot(); - class MemberAccessContext : public antlr4::ParserRuleContext { + class ArrowContext : public antlr4::ParserRuleContext { public: - MemberAccessContext(antlr4::ParserRuleContext *parent, size_t invokingState); + ArrowContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - std::vector identifier(); - IdentifierContext* identifier(size_t i); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - MemberAccessContext* memberAccess(); + ArrowContext* arrow(); - class ParenExprContext : public antlr4::ParserRuleContext { + class LiteralContext : public antlr4::ParserRuleContext { public: - ParenExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + LiteralContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - ExprContext *expr(); + antlr4::tree::TerminalNode *INT_LIT(); + antlr4::tree::TerminalNode *DECIMAL_LIT(); + antlr4::tree::TerminalNode *StringLit(); + antlr4::tree::TerminalNode *BOOL_LIT(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - ParenExprContext* parenExpr(); + LiteralContext* literal(); class FuncNameContext : public antlr4::ParserRuleContext { public: @@ -548,8 +632,6 @@ public: virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *NAME(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -561,8 +643,6 @@ public: virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *NAME(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -574,8 +654,6 @@ public: virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *NAME(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; @@ -587,13 +665,45 @@ public: virtual size_t getRuleIndex() const override; antlr4::tree::TerminalNode *NAME(); - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; StructNameContext* structName(); + class Postfix_opContext : public antlr4::ParserRuleContext { + public: + Postfix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const 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(); + + + }; + + 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; + + + }; + + Binary_opContext* binary_op(); + + + virtual bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override; + bool exprSempred(ExprContext *_localctx, size_t predicateIndex); private: static std::vector _decisionToDFA;