X-Git-Url: https://gitweb.ps.run/toc/blobdiff_plain/b64d16088b29615d222d33450cf0315467400e59..5f9668526491332f62c05ad831dbf6d5fdc2b6d0:/gen/TocParser.h diff --git a/gen/TocParser.h b/gen/TocParser.h index a1438fb..8cdece5 100644 --- a/gen/TocParser.h +++ b/gen/TocParser.h @@ -14,20 +14,23 @@ 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, POSTFIX_OP = 24, PREFIX_OP = 25, + BINARY_OP = 26, INT_LIT = 27, DECIMAL_LIT = 28, STRING_LIT = 29, BOOL_LIT = 30, + NAME = 31, WS = 32, NEWLINE = 33, NUMBER = 34 }; 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, 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, + RuleSwitchStmt = 17, RuleSwitchBody = 18, RuleForStmt = 19, RuleWhileStmt = 20, + RuleAssignStmt = 21, RuleReturnStmt = 22, RuleExpr = 23, RuleNonOpExpr = 24, + RuleNonAccessExpr = 25, RuleFuncExpr = 26, RuleOpExpr = 27, RuleBinaryOp = 28, + RulePrefixOp = 29, RulePostfixOp = 30, RuleTernaryOp = 31, RuleIdentifierExpr = 32, + RuleLitExpr = 33, RuleAccessExpr = 34, RuleParenExpr = 35, RuleFuncName = 36, + RuleVarName = 37, RuleTypeName = 38, RuleStructName = 39 }; explicit TocParser(antlr4::TokenStream *input); @@ -44,7 +47,9 @@ public: class DeclContext; class VarDeclContext; class VarContext; + class VarInitContext; class TypeContext; + class TypeModifierContext; class FuncDeclContext; class FuncContext; class ParameterContext; @@ -54,23 +59,25 @@ public: class StructVarContext; class StructMethodContext; class StmtContext; - class ConditionalContext; - class IfCondContext; - class LoopContext; - class WhileLoopContext; - class AssignmentContext; + class IfStmtContext; + class SwitchStmtContext; + class SwitchBodyContext; + 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 LiteralContext; - class SubscriptContext; - class MemberAccessContext; + class FuncExprContext; + class OpExprContext; + class BinaryOpContext; + class PrefixOpContext; + class PostfixOpContext; + class TernaryOpContext; + class IdentifierExprContext; + class LitExprContext; + class AccessExprContext; class ParenExprContext; class FuncNameContext; class VarNameContext; @@ -135,11 +142,28 @@ public: 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(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + 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 typeModifier(); + TypeModifierContext* typeModifier(size_t i); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; @@ -148,6 +172,19 @@ public: TypeContext* type(); + class TypeModifierContext : public antlr4::ParserRuleContext { + public: + TypeModifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *NUMBER(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + TypeModifierContext* typeModifier(); + class FuncDeclContext : public antlr4::ParserRuleContext { public: FuncDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState); @@ -265,9 +302,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(); @@ -278,49 +317,72 @@ 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(); + std::vector expr(); + ExprContext* expr(size_t i); + std::vector body(); + BodyContext* body(size_t i); 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 SwitchStmtContext : public antlr4::ParserRuleContext { public: - IfCondContext(antlr4::ParserRuleContext *parent, size_t invokingState); + SwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - ExprContext *expr(); - BodyContext *body(); + IdentifierExprContext *identifierExpr(); + SwitchBodyContext *switchBody(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + SwitchStmtContext* switchStmt(); + + class SwitchBodyContext : public antlr4::ParserRuleContext { + public: + SwitchBodyContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector expr(); + ExprContext* expr(size_t i); + std::vector body(); + BodyContext* body(size_t i); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - IfCondContext* ifCond(); + SwitchBodyContext* switchBody(); - class LoopContext : public antlr4::ParserRuleContext { + class ForStmtContext : public antlr4::ParserRuleContext { public: - LoopContext(antlr4::ParserRuleContext *parent, size_t invokingState); + ForStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - WhileLoopContext *whileLoop(); + 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; }; - LoopContext* loop(); + ForStmtContext* forStmt(); - class WhileLoopContext : public antlr4::ParserRuleContext { + class WhileStmtContext : public antlr4::ParserRuleContext { public: - WhileLoopContext(antlr4::ParserRuleContext *parent, size_t invokingState); + WhileStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; ExprContext *expr(); BodyContext *body(); @@ -330,13 +392,13 @@ public: }; - WhileLoopContext* whileLoop(); + WhileStmtContext* whileStmt(); - class AssignmentContext : public antlr4::ParserRuleContext { + class AssignStmtContext : public antlr4::ParserRuleContext { public: - AssignmentContext(antlr4::ParserRuleContext *parent, size_t invokingState); + AssignStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - IdentifierContext *identifier(); + IdentifierExprContext *identifierExpr(); ExprContext *expr(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; @@ -344,7 +406,7 @@ public: }; - AssignmentContext* assignment(); + AssignStmtContext* assignStmt(); class ReturnStmtContext : public antlr4::ParserRuleContext { public: @@ -363,13 +425,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; @@ -382,12 +443,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; @@ -396,14 +456,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(); - LiteralContext *literal(); - IdentifierContext *identifier(); - MemberAccessContext *memberAccess(); + FuncExprContext *funcExpr(); + IdentifierExprContext *identifierExpr(); ParenExprContext *parenExpr(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; @@ -411,123 +469,143 @@ public: }; - NonSubscriptExprContext* nonSubscriptExpr(); + NonAccessExprContext* nonAccessExpr(); - class NonAccessExprContext : public antlr4::ParserRuleContext { + class FuncExprContext : public antlr4::ParserRuleContext { public: - NonAccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + FuncExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncCallContext *funcCall(); - LiteralContext *literal(); - IdentifierContext *identifier(); - SubscriptContext *subscript(); - ParenExprContext *parenExpr(); - OperatorExprContext *operatorExpr(); + FuncNameContext *funcName(); + std::vector expr(); + ExprContext* expr(size_t i); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - NonAccessExprContext* nonAccessExpr(); + FuncExprContext* funcExpr(); - class FuncCallContext : public antlr4::ParserRuleContext { + class OpExprContext : public antlr4::ParserRuleContext { public: - FuncCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); + OpExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncNameContext *funcName(); - std::vector expr(); - ExprContext* expr(size_t i); + BinaryOpContext *binaryOp(); + PrefixOpContext *prefixOp(); + PostfixOpContext *postfixOp(); + TernaryOpContext *ternaryOp(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + }; + + OpExprContext* opExpr(); + + class BinaryOpContext : public antlr4::ParserRuleContext { + public: + BinaryOpContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector nonOpExpr(); + NonOpExprContext* nonOpExpr(size_t i); + std::vector BINARY_OP(); + antlr4::tree::TerminalNode* BINARY_OP(size_t i); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - FuncCallContext* funcCall(); + BinaryOpContext* binaryOp(); - class OperatorExprContext : public antlr4::ParserRuleContext { + class PrefixOpContext : public antlr4::ParserRuleContext { public: - OperatorExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); + PrefixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - BinaryOperatorContext *binaryOperator(); + antlr4::tree::TerminalNode *PREFIX_OP(); + NonOpExprContext *nonOpExpr(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - OperatorExprContext* operatorExpr(); + PrefixOpContext* prefixOp(); - class BinaryOperatorContext : public antlr4::ParserRuleContext { + class PostfixOpContext : public antlr4::ParserRuleContext { public: - BinaryOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + PostfixOpContext(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); + NonOpExprContext *nonOpExpr(); + antlr4::tree::TerminalNode *POSTFIX_OP(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - BinaryOperatorContext* binaryOperator(); + PostfixOpContext* postfixOp(); - class IdentifierContext : public antlr4::ParserRuleContext { + class TernaryOpContext : public antlr4::ParserRuleContext { public: - IdentifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); + TernaryOpContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - VarNameContext *varName(); + 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; }; - IdentifierContext* identifier(); + TernaryOpContext* ternaryOp(); - class LiteralContext : public antlr4::ParserRuleContext { + class IdentifierExprContext : public antlr4::ParserRuleContext { public: - LiteralContext(antlr4::ParserRuleContext *parent, size_t invokingState); + IdentifierExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *INTLIT(); + VarNameContext *varName(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - LiteralContext* literal(); + IdentifierExprContext* identifierExpr(); - class SubscriptContext : public antlr4::ParserRuleContext { + class LitExprContext : public antlr4::ParserRuleContext { public: - SubscriptContext(antlr4::ParserRuleContext *parent, size_t invokingState); + LitExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - NonSubscriptExprContext *nonSubscriptExpr(); - ExprContext *expr(); + 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; }; - SubscriptContext* subscript(); + LitExprContext* litExpr(); - class MemberAccessContext : public antlr4::ParserRuleContext { + class AccessExprContext : public antlr4::ParserRuleContext { public: - MemberAccessContext(antlr4::ParserRuleContext *parent, size_t invokingState); + AccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - std::vector identifier(); - IdentifierContext* identifier(size_t i); + NonAccessExprContext *nonAccessExpr(); + std::vector identifierExpr(); + IdentifierExprContext* identifierExpr(size_t i); + std::vector expr(); + ExprContext* expr(size_t i); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; }; - MemberAccessContext* memberAccess(); + AccessExprContext* accessExpr(); class ParenExprContext : public antlr4::ParserRuleContext { public: