T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, \r
T__7 = 8, T__8 = 9, T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14, \r
T__14 = 15, T__15 = 16, T__16 = 17, T__17 = 18, T__18 = 19, T__19 = 20, \r
- T__20 = 21, T__21 = 22, T__22 = 23, POSTFIX_OP = 24, PREFIX_OP = 25, \r
- BINARY_OP = 26, INT_LIT = 27, DECIMAL_LIT = 28, STRING_LIT = 29, BOOL_LIT = 30, \r
- NAME = 31, WS = 32, NEWLINE = 33, NUMBER = 34\r
+ T__20 = 21, T__21 = 22, T__22 = 23, T__23 = 24, T__24 = 25, T__25 = 26, \r
+ T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32, \r
+ T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, \r
+ T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, \r
+ T__44 = 45, T__45 = 46, T__46 = 47, T__47 = 48, T__48 = 49, T__49 = 50, \r
+ T__50 = 51, T__51 = 52, T__52 = 53, T__53 = 54, T__54 = 55, T__55 = 56, \r
+ T__56 = 57, T__57 = 58, INT_LIT = 59, DECIMAL_LIT = 60, BOOL_LIT = 61, \r
+ StringLit = 62, NAME = 63, WS = 64, NEWLINE = 65, COMMENT = 66\r
};\r
\r
enum {\r
- RuleProg = 0, RuleDecl = 1, RuleVarDecl = 2, RuleVar = 3, RuleVarInit = 4, \r
- RuleType = 5, RuleTypeModifier = 6, RuleFuncDecl = 7, RuleFunc = 8, \r
- RuleParameter = 9, RuleBody = 10, RuleStructDecl = 11, RuleStructMember = 12, \r
- RuleStructVar = 13, RuleStructMethod = 14, RuleStmt = 15, RuleIfStmt = 16, \r
- RuleSwitchStmt = 17, RuleSwitchBody = 18, RuleForStmt = 19, RuleWhileStmt = 20, \r
- RuleAssignStmt = 21, RuleReturnStmt = 22, RuleExpr = 23, RuleNonOpExpr = 24, \r
- RuleNonAccessExpr = 25, RuleFuncExpr = 26, RuleOpExpr = 27, RuleBinaryOp = 28, \r
- RulePrefixOp = 29, RulePostfixOp = 30, RuleTernaryOp = 31, RuleIdentifierExpr = 32, \r
- RuleLitExpr = 33, RuleAccessExpr = 34, RuleParenExpr = 35, RuleFuncName = 36, \r
- RuleVarName = 37, RuleTypeName = 38, RuleStructName = 39\r
+ RuleProg = 0, RuleDecl = 1, RuleNamespaceDecl = 2, RuleVarDecl = 3, \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, RuleGenericInstantiation = 19, \r
+ RuleStmt = 20, RuleIfStmt = 21, RuleElseIfStmt = 22, RuleElseStmt = 23, \r
+ RuleSwitchStmt = 24, RuleSwitchBody = 25, RuleSwitchCase = 26, RuleForStmt = 27, \r
+ RuleWhileStmt = 28, RuleAssignStmt = 29, RuleReturnStmt = 30, RuleExpr = 31, \r
+ RuleDot = 32, RuleArrow = 33, RuleLiteral = 34, RuleFuncName = 35, RuleVarName = 36, \r
+ RuleTypeName = 37, RuleStructName = 38, RulePostfix_op = 39, RulePrefix_op = 40, \r
+ RuleBinary_op = 41\r
};\r
\r
explicit TocParser(antlr4::TokenStream *input);\r
\r
class ProgContext;\r
class DeclContext;\r
+ class NamespaceDeclContext;\r
class VarDeclContext;\r
class VarContext;\r
class VarInitContext;\r
class TypeContext;\r
class TypeModifierContext;\r
+ class NamespaceSpecifierContext;\r
class FuncDeclContext;\r
class FuncContext;\r
class ParameterContext;\r
class StructMemberContext;\r
class StructVarContext;\r
class StructMethodContext;\r
+ class PrivateDeclContext;\r
+ class GenericDeclContext;\r
+ class GenericInstantiationContext;\r
class StmtContext;\r
class IfStmtContext;\r
+ class ElseIfStmtContext;\r
+ class ElseStmtContext;\r
class SwitchStmtContext;\r
class SwitchBodyContext;\r
+ class SwitchCaseContext;\r
class ForStmtContext;\r
class WhileStmtContext;\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 ParenExprContext;\r
+ class DotContext;\r
+ class ArrowContext;\r
+ class LiteralContext;\r
class FuncNameContext;\r
class VarNameContext;\r
class TypeNameContext;\r
- class StructNameContext; \r
+ class StructNameContext;\r
+ class Postfix_opContext;\r
+ class Prefix_opContext;\r
+ class Binary_opContext; \r
\r
class ProgContext : public antlr4::ParserRuleContext {\r
public:\r
std::vector<DeclContext *> decl();\r
DeclContext* decl(size_t i);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
VarDeclContext *varDecl();\r
FuncDeclContext *funcDecl();\r
StructDeclContext *structDecl();\r
+ NamespaceDeclContext *namespaceDecl();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
DeclContext* decl();\r
\r
+ class NamespaceDeclContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ NamespaceDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ TypeNameContext *typeName();\r
+ std::vector<DeclContext *> decl();\r
+ DeclContext* decl(size_t i);\r
+\r
+ \r
+ };\r
+\r
+ NamespaceDeclContext* namespaceDecl();\r
+\r
class VarDeclContext : public antlr4::ParserRuleContext {\r
public:\r
VarDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
VarContext *var();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
TypeContext *type();\r
ExprContext *expr();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
TypeContext *type();\r
ExprContext *expr();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\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
+ GenericInstantiationContext *genericInstantiation();\r
std::vector<TypeModifierContext *> typeModifier();\r
TypeModifierContext* typeModifier(size_t i);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
public:\r
TypeModifierContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- antlr4::tree::TerminalNode *NUMBER();\r
+ antlr4::tree::TerminalNode *INT_LIT();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\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
virtual size_t getRuleIndex() const override;\r
FuncContext *func();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
virtual size_t getRuleIndex() const override;\r
FuncNameContext *funcName();\r
ParameterContext *parameter();\r
- BodyContext *body();\r
TypeContext *type();\r
+ BodyContext *body();\r
+ GenericDeclContext *genericDecl();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
std::vector<VarContext *> var();\r
VarContext* var(size_t i);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
std::vector<StmtContext *> stmt();\r
StmtContext* stmt(size_t i);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
StructDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
StructNameContext *structName();\r
+ GenericDeclContext *genericDecl();\r
std::vector<StructMemberContext *> structMember();\r
StructMemberContext* structMember(size_t i);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
StructMemberContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
StructVarContext *structVar();\r
+ PrivateDeclContext *privateDecl();\r
StructMethodContext *structMethod();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
virtual size_t getRuleIndex() const override;\r
VarContext *var();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
virtual size_t getRuleIndex() const override;\r
FuncContext *func();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
StructMethodContext* structMethod();\r
\r
+ class PrivateDeclContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ PrivateDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+\r
+ \r
+ };\r
+\r
+ PrivateDeclContext* privateDecl();\r
+\r
+ class GenericDeclContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ GenericDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ std::vector<TypeNameContext *> typeName();\r
+ TypeNameContext* typeName(size_t i);\r
+\r
+ \r
+ };\r
+\r
+ GenericDeclContext* genericDecl();\r
+\r
+ class GenericInstantiationContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ GenericInstantiationContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ std::vector<TypeContext *> type();\r
+ TypeContext* type(size_t i);\r
+\r
+ \r
+ };\r
+\r
+ GenericInstantiationContext* genericInstantiation();\r
+\r
class StmtContext : public antlr4::ParserRuleContext {\r
public:\r
StmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
ReturnStmtContext *returnStmt();\r
ExprContext *expr();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
public:\r
IfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- std::vector<ExprContext *> expr();\r
- ExprContext* expr(size_t i);\r
- std::vector<BodyContext *> body();\r
- BodyContext* body(size_t i);\r
+ ExprContext *expr();\r
+ BodyContext *body();\r
+ std::vector<ElseIfStmtContext *> elseIfStmt();\r
+ ElseIfStmtContext* elseIfStmt(size_t i);\r
+ ElseStmtContext *elseStmt();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
IfStmtContext* ifStmt();\r
\r
+ class ElseIfStmtContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ ElseIfStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ ExprContext *expr();\r
+ BodyContext *body();\r
+\r
+ \r
+ };\r
+\r
+ ElseIfStmtContext* elseIfStmt();\r
+\r
+ class ElseStmtContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ ElseStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ BodyContext *body();\r
+\r
+ \r
+ };\r
+\r
+ ElseStmtContext* elseStmt();\r
+\r
class SwitchStmtContext : public antlr4::ParserRuleContext {\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
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
public:\r
SwitchBodyContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- std::vector<ExprContext *> expr();\r
- ExprContext* expr(size_t i);\r
- std::vector<BodyContext *> body();\r
- BodyContext* body(size_t i);\r
+ std::vector<SwitchCaseContext *> switchCase();\r
+ SwitchCaseContext* switchCase(size_t i);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
SwitchBodyContext* switchBody();\r
\r
+ class SwitchCaseContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ SwitchCaseContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ ExprContext *expr();\r
+ BodyContext *body();\r
+\r
+ \r
+ };\r
+\r
+ SwitchCaseContext* switchCase();\r
+\r
class ForStmtContext : public antlr4::ParserRuleContext {\r
public:\r
ForStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
+ VarInitContext *varInit();\r
std::vector<ExprContext *> expr();\r
ExprContext* expr(size_t i);\r
BodyContext *body();\r
- VarInitContext *varInit();\r
- AssignStmtContext *assignStmt();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
ExprContext *expr();\r
BodyContext *body();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\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
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
virtual size_t getRuleIndex() const override;\r
ExprContext *expr();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\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
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\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
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\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
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
- \r
+ ExprContext *expr();\r
+ VarNameContext *varName();\r
+ DotContext *dot();\r
+ ArrowContext *arrow();\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
+ GenericInstantiationContext *genericInstantiation();\r
std::vector<ExprContext *> expr();\r
ExprContext* expr(size_t i);\r
-\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\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
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\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<antlr4::tree::TerminalNode *> BINARY_OP();\r
- antlr4::tree::TerminalNode* BINARY_OP(size_t i);\r
+ PrefixOpExprContext(ExprContext *ctx);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
- \r
+ Prefix_opContext *prefix_op();\r
+ ExprContext *expr();\r
};\r
\r
- BinaryOpContext* binaryOp();\r
-\r
- class PrefixOpContext : public antlr4::ParserRuleContext {\r
+ class MethodExprContext : public ExprContext {\r
public:\r
- PrefixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- antlr4::tree::TerminalNode *PREFIX_OP();\r
- NonOpExprContext *nonOpExpr();\r
+ MethodExprContext(ExprContext *ctx);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
- \r
+ std::vector<ExprContext *> expr();\r
+ ExprContext* expr(size_t i);\r
+ FuncNameContext *funcName();\r
+ GenericInstantiationContext *genericInstantiation();\r
};\r
\r
- PrefixOpContext* prefixOp();\r
-\r
- class PostfixOpContext : public antlr4::ParserRuleContext {\r
+ class PostfixOpExprContext : public ExprContext {\r
public:\r
- PostfixOpContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- NonOpExprContext *nonOpExpr();\r
- antlr4::tree::TerminalNode *POSTFIX_OP();\r
+ PostfixOpExprContext(ExprContext *ctx);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
- \r
+ ExprContext *expr();\r
+ Postfix_opContext *postfix_op();\r
};\r
\r
- PostfixOpContext* postfixOp();\r
-\r
- class TernaryOpContext : public antlr4::ParserRuleContext {\r
+ class BinaryOpExprContext : public ExprContext {\r
public:\r
- TernaryOpContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- NonOpExprContext *nonOpExpr();\r
+ BinaryOpExprContext(ExprContext *ctx);\r
+\r
std::vector<ExprContext *> expr();\r
ExprContext* expr(size_t i);\r
+ Binary_opContext *binary_op();\r
+ };\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
- \r
+ class TernaryOpExprContext : public ExprContext {\r
+ public:\r
+ TernaryOpExprContext(ExprContext *ctx);\r
+\r
+ std::vector<ExprContext *> expr();\r
+ ExprContext* expr(size_t i);\r
};\r
\r
- TernaryOpContext* ternaryOp();\r
+ class LitExprContext : public ExprContext {\r
+ public:\r
+ LitExprContext(ExprContext *ctx);\r
+\r
+ LiteralContext *literal();\r
+ };\r
\r
- class IdentifierExprContext : public antlr4::ParserRuleContext {\r
+ class ParenExprContext : public ExprContext {\r
public:\r
- IdentifierExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
- virtual size_t getRuleIndex() const override;\r
- VarNameContext *varName();\r
+ ParenExprContext(ExprContext *ctx);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
- \r
+ ExprContext *expr();\r
};\r
\r
- IdentifierExprContext* identifierExpr();\r
+ class IdentifierExprContext : public ExprContext {\r
+ public:\r
+ IdentifierExprContext(ExprContext *ctx);\r
\r
- class LitExprContext : public antlr4::ParserRuleContext {\r
+ VarNameContext *varName();\r
+ std::vector<NamespaceSpecifierContext *> namespaceSpecifier();\r
+ NamespaceSpecifierContext* namespaceSpecifier(size_t i);\r
+ };\r
+\r
+ ExprContext* expr();\r
+ ExprContext* expr(int precedence);\r
+ class DotContext : public antlr4::ParserRuleContext {\r
public:\r
- LitExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ DotContext(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
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
- LitExprContext* litExpr();\r
+ DotContext* dot();\r
\r
- class AccessExprContext : public antlr4::ParserRuleContext {\r
+ class ArrowContext : public antlr4::ParserRuleContext {\r
public:\r
- AccessExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ ArrowContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
virtual size_t getRuleIndex() const override;\r
- NonAccessExprContext *nonAccessExpr();\r
- std::vector<IdentifierExprContext *> identifierExpr();\r
- IdentifierExprContext* identifierExpr(size_t i);\r
- std::vector<ExprContext *> expr();\r
- ExprContext* expr(size_t i);\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
- AccessExprContext* accessExpr();\r
+ ArrowContext* arrow();\r
\r
- class ParenExprContext : public antlr4::ParserRuleContext {\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 *StringLit();\r
+ antlr4::tree::TerminalNode *BOOL_LIT();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
- ParenExprContext* parenExpr();\r
+ LiteralContext* literal();\r
\r
class FuncNameContext : public antlr4::ParserRuleContext {\r
public:\r
virtual size_t getRuleIndex() const override;\r
antlr4::tree::TerminalNode *NAME();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
virtual size_t getRuleIndex() const override;\r
antlr4::tree::TerminalNode *NAME();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
virtual size_t getRuleIndex() const override;\r
antlr4::tree::TerminalNode *NAME();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
virtual size_t getRuleIndex() const override;\r
antlr4::tree::TerminalNode *NAME();\r
\r
- virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
- virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
\r
};\r
\r
StructNameContext* structName();\r
\r
+ class Postfix_opContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ Postfix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+\r
+ \r
+ };\r
+\r
+ Postfix_opContext* postfix_op();\r
+\r
+ class Prefix_opContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ Prefix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+ Postfix_opContext *postfix_op();\r
+\r
+ \r
+ };\r
+\r
+ Prefix_opContext* prefix_op();\r
+\r
+ class Binary_opContext : public antlr4::ParserRuleContext {\r
+ public:\r
+ Binary_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+ virtual size_t getRuleIndex() const override;\r
+\r
+ \r
+ };\r
+\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