X-Git-Url: https://gitweb.ps.run/toc/blobdiff_plain/71a20a4f3d4e5f5278f7d004af710af89dfd7ebc..9610ce88f0b753db81014a053bd3c6d79471c90c:/gen/TocParser.h diff --git a/gen/TocParser.h b/gen/TocParser.h index 51d1e89..15e4d49 100644 --- a/gen/TocParser.h +++ b/gen/TocParser.h @@ -21,24 +21,22 @@ public: 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, INT_LIT = 58, DECIMAL_LIT = 59, STRING_LIT = 60, BOOL_LIT = 61, - NAME = 62, WS = 63, NEWLINE = 64 + 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, RuleNamespaceDecl = 2, RuleVarDecl = 3, - RuleVar = 4, RuleVarInit = 5, RuleType = 6, RuleTypeModifier = 7, RuleFuncDecl = 8, - RuleFunc = 9, RuleParameter = 10, RuleBody = 11, RuleStructDecl = 12, - RuleStructMember = 13, RuleStructVar = 14, RuleStructMethod = 15, RulePrivateDecl = 16, - RuleGenericDecl = 17, RuleStmt = 18, RuleIfStmt = 19, RuleElseIfStmt = 20, - RuleElseStmt = 21, RuleSwitchStmt = 22, RuleSwitchBody = 23, RuleSwitchCase = 24, - RuleForStmt = 25, RuleWhileStmt = 26, RuleAssignStmt = 27, RuleReturnStmt = 28, - RuleExpr = 29, RuleNonOpExpr = 30, RuleNonAccessExpr = 31, RuleFuncExpr = 32, - RuleOpExpr = 33, RuleBinaryOp = 34, RulePrefixOp = 35, RulePostfixOp = 36, - RuleTernaryOp = 37, RuleIdentifierExpr = 38, RuleLitExpr = 39, RuleAccessExpr = 40, - RuleAccessSubExpr = 41, RuleAccessMember = 42, RuleAccessBrackets = 43, - RuleParenExpr = 44, RuleFuncName = 45, RuleVarName = 46, RuleTypeName = 47, - RuleStructName = 48, RulePostfix_op = 49, RulePrefix_op = 50, RuleBinary_op = 51 + 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); @@ -59,6 +57,7 @@ public: class VarInitContext; class TypeContext; class TypeModifierContext; + class NamespaceSpecifierContext; class FuncDeclContext; class FuncContext; class ParameterContext; @@ -69,6 +68,7 @@ public: class StructMethodContext; class PrivateDeclContext; class GenericDeclContext; + class GenericInstantiationContext; class StmtContext; class IfStmtContext; class ElseIfStmtContext; @@ -81,21 +81,9 @@ public: class AssignStmtContext; class ReturnStmtContext; class ExprContext; - class NonOpExprContext; - 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 DotContext; + class ArrowContext; + class LiteralContext; class FuncNameContext; class VarNameContext; class TypeNameContext; @@ -186,6 +174,9 @@ 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); @@ -205,6 +196,17 @@ public: 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); @@ -222,8 +224,8 @@ public: virtual size_t getRuleIndex() const override; FuncNameContext *funcName(); ParameterContext *parameter(); - BodyContext *body(); TypeContext *type(); + BodyContext *body(); GenericDeclContext *genericDecl(); @@ -326,6 +328,18 @@ public: 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); @@ -386,7 +400,7 @@ public: public: SwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - IdentifierExprContext *identifierExpr(); + ExprContext *expr(); SwitchBodyContext *switchBody(); @@ -422,11 +436,10 @@ public: public: ForStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; + VarInitContext *varInit(); std::vector expr(); ExprContext* expr(size_t i); BodyContext *body(); - VarInitContext *varInit(); - AssignStmtContext *assignStmt(); }; @@ -449,8 +462,8 @@ public: public: AssignStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - IdentifierExprContext *identifierExpr(); - ExprContext *expr(); + std::vector expr(); + ExprContext* expr(size_t i); }; @@ -471,207 +484,147 @@ public: class ExprContext : public antlr4::ParserRuleContext { public: ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - FuncExprContext *funcExpr(); - LitExprContext *litExpr(); - IdentifierExprContext *identifierExpr(); - ParenExprContext *parenExpr(); - AccessExprContext *accessExpr(); - OpExprContext *opExpr(); - - }; + ExprContext() = default; + void copyFrom(ExprContext *context); + using antlr4::ParserRuleContext::copyFrom; - ExprContext* expr(); - - class NonOpExprContext : public antlr4::ParserRuleContext { - public: - NonOpExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - FuncExprContext *funcExpr(); - LitExprContext *litExpr(); - IdentifierExprContext *identifierExpr(); - ParenExprContext *parenExpr(); - AccessExprContext *accessExpr(); }; - NonOpExprContext* nonOpExpr(); - - class NonAccessExprContext : public antlr4::ParserRuleContext { + class DotExprContext : public ExprContext { public: - NonAccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - FuncExprContext *funcExpr(); - IdentifierExprContext *identifierExpr(); - ParenExprContext *parenExpr(); + DotExprContext(ExprContext *ctx); - + ExprContext *expr(); + VarNameContext *varName(); + DotContext *dot(); + ArrowContext *arrow(); }; - NonAccessExprContext* nonAccessExpr(); - - class FuncExprContext : public antlr4::ParserRuleContext { + class FuncExprContext : public ExprContext { public: - FuncExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; + FuncExprContext(ExprContext *ctx); + FuncNameContext *funcName(); + std::vector namespaceSpecifier(); + NamespaceSpecifierContext* namespaceSpecifier(size_t i); + GenericInstantiationContext *genericInstantiation(); std::vector expr(); ExprContext* expr(size_t i); - - }; - FuncExprContext* funcExpr(); - - class OpExprContext : public antlr4::ParserRuleContext { + class BracketExprContext : public ExprContext { public: - OpExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - BinaryOpContext *binaryOp(); - PrefixOpContext *prefixOp(); - PostfixOpContext *postfixOp(); - TernaryOpContext *ternaryOp(); + BracketExprContext(ExprContext *ctx); - + std::vector expr(); + ExprContext* expr(size_t i); }; - OpExprContext* opExpr(); - - class BinaryOpContext : public antlr4::ParserRuleContext { + class PrefixOpExprContext : public ExprContext { 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(); - Binary_opContext* binary_op(size_t i); + PrefixOpExprContext(ExprContext *ctx); - + Prefix_opContext *prefix_op(); + ExprContext *expr(); }; - BinaryOpContext* binaryOp(); - - class PrefixOpContext : public antlr4::ParserRuleContext { + class MethodExprContext : public ExprContext { public: - PrefixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - Prefix_opContext *prefix_op(); - NonOpExprContext *nonOpExpr(); + MethodExprContext(ExprContext *ctx); - + std::vector expr(); + ExprContext* expr(size_t i); + FuncNameContext *funcName(); + GenericInstantiationContext *genericInstantiation(); }; - PrefixOpContext* prefixOp(); - - class PostfixOpContext : public antlr4::ParserRuleContext { + class PostfixOpExprContext : public ExprContext { public: - PostfixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - NonOpExprContext *nonOpExpr(); - Postfix_opContext *postfix_op(); + PostfixOpExprContext(ExprContext *ctx); - + ExprContext *expr(); + Postfix_opContext *postfix_op(); }; - PostfixOpContext* postfixOp(); - - class TernaryOpContext : public antlr4::ParserRuleContext { + class BinaryOpExprContext : public ExprContext { public: - TernaryOpContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - NonOpExprContext *nonOpExpr(); + BinaryOpExprContext(ExprContext *ctx); + std::vector expr(); ExprContext* expr(size_t i); - - + Binary_opContext *binary_op(); }; - TernaryOpContext* ternaryOp(); - - class IdentifierExprContext : public antlr4::ParserRuleContext { + class TernaryOpExprContext : public ExprContext { public: - IdentifierExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - VarNameContext *varName(); + TernaryOpExprContext(ExprContext *ctx); - + std::vector expr(); + ExprContext* expr(size_t i); }; - IdentifierExprContext* identifierExpr(); - - class LitExprContext : public antlr4::ParserRuleContext { + class LitExprContext : public ExprContext { public: - LitExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *INT_LIT(); - antlr4::tree::TerminalNode *DECIMAL_LIT(); - antlr4::tree::TerminalNode *STRING_LIT(); - antlr4::tree::TerminalNode *BOOL_LIT(); + LitExprContext(ExprContext *ctx); - + LiteralContext *literal(); }; - LitExprContext* litExpr(); - - class AccessExprContext : public antlr4::ParserRuleContext { + class ParenExprContext : public ExprContext { public: - AccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - NonAccessExprContext *nonAccessExpr(); - std::vector accessSubExpr(); - AccessSubExprContext* accessSubExpr(size_t i); + ParenExprContext(ExprContext *ctx); - + ExprContext *expr(); }; - AccessExprContext* accessExpr(); - - class AccessSubExprContext : public antlr4::ParserRuleContext { + class IdentifierExprContext : public ExprContext { public: - AccessSubExprContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - AccessMemberContext *accessMember(); - AccessBracketsContext *accessBrackets(); + IdentifierExprContext(ExprContext *ctx); - + VarNameContext *varName(); + std::vector namespaceSpecifier(); + NamespaceSpecifierContext* namespaceSpecifier(size_t i); }; - AccessSubExprContext* accessSubExpr(); - - class AccessMemberContext : public antlr4::ParserRuleContext { + ExprContext* expr(); + ExprContext* expr(int precedence); + class DotContext : public antlr4::ParserRuleContext { public: - AccessMemberContext(antlr4::ParserRuleContext *parent, size_t invokingState); + DotContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - IdentifierExprContext *identifierExpr(); }; - AccessMemberContext* accessMember(); + DotContext* dot(); - class AccessBracketsContext : public antlr4::ParserRuleContext { + class ArrowContext : public antlr4::ParserRuleContext { public: - AccessBracketsContext(antlr4::ParserRuleContext *parent, size_t invokingState); + ArrowContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - ExprContext *expr(); }; - AccessBracketsContext* accessBrackets(); + 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(); }; - ParenExprContext* parenExpr(); + LiteralContext* literal(); class FuncNameContext : public antlr4::ParserRuleContext { public: @@ -749,6 +702,9 @@ public: 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; static antlr4::atn::PredictionContextCache _sharedContextCache;