\r
enum {\r
RuleProg = 0, RuleDecl = 1, RuleNamespaceDecl = 2, RuleVarDecl = 3, \r
- RuleVar = 4, RuleVarInit = 5, RuleType = 6, RuleTypeModifier = 7, RuleFuncDecl = 8, \r
- RuleFunc = 9, RuleParameter = 10, RuleBody = 11, RuleStructDecl = 12, \r
- RuleStructMember = 13, RuleStructVar = 14, RuleStructMethod = 15, RulePrivateDecl = 16, \r
- RuleGenericDecl = 17, RuleStmt = 18, RuleIfStmt = 19, RuleElseIfStmt = 20, \r
- RuleElseStmt = 21, RuleSwitchStmt = 22, RuleSwitchBody = 23, RuleSwitchCase = 24, \r
- RuleForStmt = 25, RuleWhileStmt = 26, RuleAssignStmt = 27, RuleReturnStmt = 28, \r
- RuleExpr = 29, RuleNonOpExpr = 30, RuleNonAccessExpr = 31, RuleFuncExpr = 32, \r
- RuleOpExpr = 33, RuleBinaryOp = 34, RulePrefixOp = 35, RulePostfixOp = 36, \r
- RuleTernaryOp = 37, RuleIdentifierExpr = 38, RuleLitExpr = 39, RuleAccessExpr = 40, \r
- RuleAccessSubExpr = 41, RuleAccessMember = 42, RuleAccessBrackets = 43, \r
- RuleParenExpr = 44, RuleFuncName = 45, RuleVarName = 46, RuleTypeName = 47, \r
- RuleStructName = 48, RulePostfix_op = 49, RulePrefix_op = 50, RuleBinary_op = 51\r
+ RuleVar = 4, RuleVarInit = 5, RuleType = 6, RuleTypeModifier = 7, RuleNamespaceSpecifier = 8, \r
+ RuleFuncDecl = 9, RuleFunc = 10, RuleParameter = 11, RuleBody = 12, \r
+ RuleStructDecl = 13, RuleStructMember = 14, RuleStructVar = 15, RuleStructMethod = 16, \r
+ RulePrivateDecl = 17, RuleGenericDecl = 18, RuleStmt = 19, RuleIfStmt = 20, \r
+ RuleElseIfStmt = 21, RuleElseStmt = 22, RuleSwitchStmt = 23, RuleSwitchBody = 24, \r
+ RuleSwitchCase = 25, RuleForStmt = 26, RuleWhileStmt = 27, RuleAssignStmt = 28, \r
+ RuleReturnStmt = 29, RuleExpr = 30, RuleLiteral = 31, RuleFuncName = 32, \r
+ RuleVarName = 33, RuleTypeName = 34, RuleStructName = 35, RulePostfix_op = 36, \r
+ RulePrefix_op = 37, RuleBinary_op = 38\r
};\r
\r
explicit TocParser(antlr4::TokenStream *input);\r
class VarInitContext;\r
class TypeContext;\r
class TypeModifierContext;\r
+ class NamespaceSpecifierContext;\r
class FuncDeclContext;\r
class FuncContext;\r
class ParameterContext;\r
class AssignStmtContext;\r
class ReturnStmtContext;\r
class ExprContext;\r
- class NonOpExprContext;\r
- class NonAccessExprContext;\r
- class FuncExprContext;\r
- class OpExprContext;\r
- class BinaryOpContext;\r
- class PrefixOpContext;\r
- class PostfixOpContext;\r
- class TernaryOpContext;\r
- class IdentifierExprContext;\r
- class LitExprContext;\r
- class AccessExprContext;\r
- class AccessSubExprContext;\r
- class AccessMemberContext;\r
- class AccessBracketsContext;\r
- class ParenExprContext;\r
+ class LiteralContext;\r
class FuncNameContext;\r
class VarNameContext;\r
class TypeNameContext;\r
TypeContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
TypeNameContext *typeName();\r
+ std::vector<NamespaceSpecifierContext *> namespaceSpecifier();\r
+ NamespaceSpecifierContext* namespaceSpecifier(size_t i);\r
std::vector<TypeModifierContext *> typeModifier();\r
TypeModifierContext* typeModifier(size_t i);\r
\r
\r
TypeModifierContext* typeModifier();\r
\r
+ class NamespaceSpecifierContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ NamespaceSpecifierContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ TypeNameContext *typeName();\r
+\r
+ \r
+ };\r
+\r
+ NamespaceSpecifierContext* namespaceSpecifier();\r
+\r
class FuncDeclContext : public antlr4::ParserRuleContext {\r
public:\r
FuncDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
public:\r
SwitchStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- IdentifierExprContext *identifierExpr();\r
+ ExprContext *expr();\r
SwitchBodyContext *switchBody();\r
\r
\r
public:\r
AssignStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- IdentifierExprContext *identifierExpr();\r
- ExprContext *expr();\r
+ std::vector<ExprContext *> expr();\r
+ ExprContext* expr(size_t i);\r
\r
\r
};\r
class ExprContext : public antlr4::ParserRuleContext {\r
public:\r
ExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- FuncExprContext *funcExpr();\r
- LitExprContext *litExpr();\r
- IdentifierExprContext *identifierExpr();\r
- ParenExprContext *parenExpr();\r
- AccessExprContext *accessExpr();\r
- OpExprContext *opExpr();\r
-\r
\r
- };\r
+ ExprContext() = default;\r
+ void copyFrom(ExprContext *context);\r
+ using antlr4::ParserRuleContext::copyFrom;\r
\r
- ExprContext* expr();\r
-\r
- class NonOpExprContext : public antlr4::ParserRuleContext {\r
- public:\r
- NonOpExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- FuncExprContext *funcExpr();\r
- LitExprContext *litExpr();\r
- IdentifierExprContext *identifierExpr();\r
- ParenExprContext *parenExpr();\r
- AccessExprContext *accessExpr();\r
\r
\r
};\r
\r
- NonOpExprContext* nonOpExpr();\r
-\r
- class NonAccessExprContext : public antlr4::ParserRuleContext {\r
+ class DotExprContext : public ExprContext {\r
public:\r
- NonAccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- FuncExprContext *funcExpr();\r
- IdentifierExprContext *identifierExpr();\r
- ParenExprContext *parenExpr();\r
+ DotExprContext(ExprContext *ctx);\r
\r
- \r
+ ExprContext *expr();\r
+ VarNameContext *varName();\r
};\r
\r
- NonAccessExprContext* nonAccessExpr();\r
-\r
- class FuncExprContext : public antlr4::ParserRuleContext {\r
+ class FuncExprContext : public ExprContext {\r
public:\r
- FuncExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
+ FuncExprContext(ExprContext *ctx);\r
+\r
FuncNameContext *funcName();\r
+ std::vector<NamespaceSpecifierContext *> namespaceSpecifier();\r
+ NamespaceSpecifierContext* namespaceSpecifier(size_t i);\r
std::vector<ExprContext *> expr();\r
ExprContext* expr(size_t i);\r
-\r
- \r
};\r
\r
- FuncExprContext* funcExpr();\r
-\r
- class OpExprContext : public antlr4::ParserRuleContext {\r
+ class BracketExprContext : public ExprContext {\r
public:\r
- OpExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- BinaryOpContext *binaryOp();\r
- PrefixOpContext *prefixOp();\r
- PostfixOpContext *postfixOp();\r
- TernaryOpContext *ternaryOp();\r
+ BracketExprContext(ExprContext *ctx);\r
\r
- \r
+ std::vector<ExprContext *> expr();\r
+ ExprContext* expr(size_t i);\r
};\r
\r
- OpExprContext* opExpr();\r
-\r
- class BinaryOpContext : public antlr4::ParserRuleContext {\r
+ class PrefixOpExprContext : public ExprContext {\r
public:\r
- BinaryOpContext(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<Binary_opContext *> binary_op();\r
- Binary_opContext* binary_op(size_t i);\r
-\r
- \r
- };\r
-\r
- BinaryOpContext* binaryOp();\r
+ PrefixOpExprContext(ExprContext *ctx);\r
\r
- class PrefixOpContext : public antlr4::ParserRuleContext {\r
- public:\r
- PrefixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
Prefix_opContext *prefix_op();\r
- NonOpExprContext *nonOpExpr();\r
-\r
- \r
+ ExprContext *expr();\r
};\r
\r
- PrefixOpContext* prefixOp();\r
-\r
- class PostfixOpContext : public antlr4::ParserRuleContext {\r
+ class MethodExprContext : public ExprContext {\r
public:\r
- PostfixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- NonOpExprContext *nonOpExpr();\r
- Postfix_opContext *postfix_op();\r
-\r
- \r
- };\r
-\r
- PostfixOpContext* postfixOp();\r
+ MethodExprContext(ExprContext *ctx);\r
\r
- class TernaryOpContext : public antlr4::ParserRuleContext {\r
- public:\r
- TernaryOpContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- NonOpExprContext *nonOpExpr();\r
std::vector<ExprContext *> expr();\r
ExprContext* expr(size_t i);\r
-\r
- \r
+ FuncNameContext *funcName();\r
};\r
\r
- TernaryOpContext* ternaryOp();\r
-\r
- class IdentifierExprContext : public antlr4::ParserRuleContext {\r
+ class PostfixOpExprContext : public ExprContext {\r
public:\r
- IdentifierExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- VarNameContext *varName();\r
+ PostfixOpExprContext(ExprContext *ctx);\r
\r
- \r
+ ExprContext *expr();\r
+ Postfix_opContext *postfix_op();\r
};\r
\r
- IdentifierExprContext* identifierExpr();\r
-\r
- class LitExprContext : public antlr4::ParserRuleContext {\r
+ class BinaryOpExprContext : public ExprContext {\r
public:\r
- LitExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- antlr4::tree::TerminalNode *INT_LIT();\r
- antlr4::tree::TerminalNode *DECIMAL_LIT();\r
- antlr4::tree::TerminalNode *STRING_LIT();\r
- antlr4::tree::TerminalNode *BOOL_LIT();\r
+ BinaryOpExprContext(ExprContext *ctx);\r
\r
- \r
+ std::vector<ExprContext *> expr();\r
+ ExprContext* expr(size_t i);\r
+ Binary_opContext *binary_op();\r
};\r
\r
- LitExprContext* litExpr();\r
-\r
- class AccessExprContext : public antlr4::ParserRuleContext {\r
+ class TernaryOpExprContext : public ExprContext {\r
public:\r
- AccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- NonAccessExprContext *nonAccessExpr();\r
- std::vector<AccessSubExprContext *> accessSubExpr();\r
- AccessSubExprContext* accessSubExpr(size_t i);\r
+ TernaryOpExprContext(ExprContext *ctx);\r
\r
- \r
+ std::vector<ExprContext *> expr();\r
+ ExprContext* expr(size_t i);\r
};\r
\r
- AccessExprContext* accessExpr();\r
-\r
- class AccessSubExprContext : public antlr4::ParserRuleContext {\r
+ class LitExprContext : public ExprContext {\r
public:\r
- AccessSubExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- AccessMemberContext *accessMember();\r
- AccessBracketsContext *accessBrackets();\r
+ LitExprContext(ExprContext *ctx);\r
\r
- \r
+ LiteralContext *literal();\r
};\r
\r
- AccessSubExprContext* accessSubExpr();\r
-\r
- class AccessMemberContext : public antlr4::ParserRuleContext {\r
+ class ParenExprContext : public ExprContext {\r
public:\r
- AccessMemberContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- IdentifierExprContext *identifierExpr();\r
+ ParenExprContext(ExprContext *ctx);\r
\r
- \r
+ ExprContext *expr();\r
};\r
\r
- AccessMemberContext* accessMember();\r
-\r
- class AccessBracketsContext : public antlr4::ParserRuleContext {\r
+ class IdentifierExprContext : public ExprContext {\r
public:\r
- AccessBracketsContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- ExprContext *expr();\r
+ IdentifierExprContext(ExprContext *ctx);\r
\r
- \r
+ VarNameContext *varName();\r
+ std::vector<NamespaceSpecifierContext *> namespaceSpecifier();\r
+ NamespaceSpecifierContext* namespaceSpecifier(size_t i);\r
};\r
\r
- AccessBracketsContext* accessBrackets();\r
-\r
- class ParenExprContext : public antlr4::ParserRuleContext {\r
+ ExprContext* expr();\r
+ ExprContext* expr(int precedence);\r
+ class LiteralContext : public antlr4::ParserRuleContext {\r
public:\r
- ParenExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ LiteralContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- ExprContext *expr();\r
+ antlr4::tree::TerminalNode *INT_LIT();\r
+ antlr4::tree::TerminalNode *DECIMAL_LIT();\r
+ antlr4::tree::TerminalNode *STRING_LIT();\r
+ antlr4::tree::TerminalNode *BOOL_LIT();\r
\r
\r
};\r
\r
- ParenExprContext* parenExpr();\r
+ LiteralContext* literal();\r
\r
class FuncNameContext : public antlr4::ParserRuleContext {\r
public:\r
Binary_opContext* binary_op();\r
\r
\r
+ virtual bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override;\r
+ bool exprSempred(ExprContext *_localctx, size_t predicateIndex);\r
+\r
private:\r
static std::vector<antlr4::dfa::DFA> _decisionToDFA;\r
static antlr4::atn::PredictionContextCache _sharedContextCache;\r