]> gitweb.ps.run Git - toc/blobdiff - gen/TocParser.h
add comments, fix struct/function lookup
[toc] / gen / TocParser.h
index 0157c9c903fec9b3ca1bb58a2773701fc9362874..15e4d490f9e93b6066d7ef98cc110fbc36471805 100644 (file)
@@ -20,24 +20,23 @@ public:
     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, INT_LIT = 55, DECIMAL_LIT = 56, \r
-    STRING_LIT = 57, BOOL_LIT = 58, NAME = 59, WS = 60, NEWLINE = 61, NUMBER = 62\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
-    RuleElseIfStmt = 17, RuleElseStmt = 18, RuleSwitchStmt = 19, RuleSwitchBody = 20, \r
-    RuleSwitchCase = 21, RuleForStmt = 22, RuleWhileStmt = 23, RuleAssignStmt = 24, \r
-    RuleReturnStmt = 25, RuleExpr = 26, RuleNonOpExpr = 27, RuleNonAccessExpr = 28, \r
-    RuleFuncExpr = 29, RuleOpExpr = 30, RuleBinaryOp = 31, RulePrefixOp = 32, \r
-    RulePostfixOp = 33, RuleTernaryOp = 34, RuleIdentifierExpr = 35, RuleLitExpr = 36, \r
-    RuleAccessExpr = 37, RuleAccessSubExpr = 38, RuleAccessMember = 39, \r
-    RuleAccessBrackets = 40, RuleParenExpr = 41, RuleFuncName = 42, RuleVarName = 43, \r
-    RuleTypeName = 44, RuleStructName = 45, RulePostfix_op = 46, RulePrefix_op = 47, \r
-    RuleBinary_op = 48\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
@@ -52,11 +51,13 @@ public:
 \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
@@ -65,6 +66,9 @@ public:
   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
@@ -77,21 +81,9 @@ public:
   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 DotContext;\r
+  class ArrowContext;\r
+  class LiteralContext;\r
   class FuncNameContext;\r
   class VarNameContext;\r
   class TypeNameContext;\r
@@ -108,8 +100,6 @@ public:
     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
@@ -122,22 +112,32 @@ public:
     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
@@ -151,8 +151,6 @@ public:
     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
@@ -166,8 +164,6 @@ public:
     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
@@ -178,11 +174,12 @@ public:
     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
@@ -192,23 +189,30 @@ public:
   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
@@ -220,11 +224,10 @@ public:
     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
@@ -237,8 +240,6 @@ public:
     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
@@ -251,8 +252,6 @@ public:
     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
@@ -263,11 +262,10 @@ public:
     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
@@ -278,10 +276,9 @@ public:
     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
@@ -293,8 +290,6 @@ public:
     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
@@ -306,13 +301,45 @@ public:
     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
@@ -326,8 +353,6 @@ public:
     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
@@ -343,8 +368,6 @@ public:
     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
@@ -357,8 +380,6 @@ public:
     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
@@ -370,8 +391,6 @@ public:
     virtual size_t getRuleIndex() const override;\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
@@ -381,11 +400,9 @@ public:
   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
@@ -398,8 +415,6 @@ public:
     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
@@ -412,8 +427,6 @@ public:
     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
@@ -423,14 +436,11 @@ public:
   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
@@ -443,8 +453,6 @@ public:
     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
@@ -454,11 +462,9 @@ public:
   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
@@ -470,8 +476,6 @@ public:
     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
@@ -480,239 +484,147 @@ public:
   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
-\r
-  ExprContext* expr();\r
+    ExprContext() = default;\r
+    void copyFrom(ExprContext *context);\r
+    using antlr4::ParserRuleContext::copyFrom;\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<Binary_opContext *> binary_op();\r
-    Binary_opContext* 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
-    Prefix_opContext *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
-    Postfix_opContext *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
-\r
-    virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
-    virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
-   \r
+    Binary_opContext *binary_op();\r
   };\r
 \r
-  TernaryOpContext* ternaryOp();\r
-\r
-  class  IdentifierExprContext : public antlr4::ParserRuleContext {\r
+  class  TernaryOpExprContext : public ExprContext {\r
   public:\r
-    IdentifierExprContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
-    virtual size_t getRuleIndex() const override;\r
-    VarNameContext *varName();\r
+    TernaryOpExprContext(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
-  IdentifierExprContext* identifierExpr();\r
-\r
-  class  LitExprContext : public antlr4::ParserRuleContext {\r
+  class  LitExprContext : 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
+    LitExprContext(ExprContext *ctx);\r
 \r
-    virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
-    virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
-   \r
+    LiteralContext *literal();\r
   };\r
 \r
-  LitExprContext* litExpr();\r
-\r
-  class  AccessExprContext : public antlr4::ParserRuleContext {\r
+  class  ParenExprContext : 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
+    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
-  AccessExprContext* accessExpr();\r
-\r
-  class  AccessSubExprContext : public antlr4::ParserRuleContext {\r
+  class  IdentifierExprContext : 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
+    IdentifierExprContext(ExprContext *ctx);\r
 \r
-    virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
-    virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
-   \r
+    VarNameContext *varName();\r
+    std::vector<NamespaceSpecifierContext *> namespaceSpecifier();\r
+    NamespaceSpecifierContext* namespaceSpecifier(size_t i);\r
   };\r
 \r
-  AccessSubExprContext* accessSubExpr();\r
-\r
-  class  AccessMemberContext : public antlr4::ParserRuleContext {\r
+  ExprContext* expr();\r
+  ExprContext* expr(int precedence);\r
+  class  DotContext : public antlr4::ParserRuleContext {\r
   public:\r
-    AccessMemberContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+    DotContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
     virtual size_t getRuleIndex() const override;\r
-    IdentifierExprContext *identifierExpr();\r
 \r
-    virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
-    virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
    \r
   };\r
 \r
-  AccessMemberContext* accessMember();\r
+  DotContext* dot();\r
 \r
-  class  AccessBracketsContext : public antlr4::ParserRuleContext {\r
+  class  ArrowContext : public antlr4::ParserRuleContext {\r
   public:\r
-    AccessBracketsContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
+    ArrowContext(antlr4::ParserRuleContext *parent, size_t invokingState);\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
-  AccessBracketsContext* accessBrackets();\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
@@ -720,8 +632,6 @@ public:
     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
@@ -733,8 +643,6 @@ public:
     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
@@ -746,8 +654,6 @@ public:
     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
@@ -759,8 +665,6 @@ public:
     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
@@ -771,8 +675,6 @@ public:
     Postfix_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
     virtual size_t getRuleIndex() const override;\r
 \r
-    virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
-    virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
    \r
   };\r
 \r
@@ -784,8 +686,6 @@ public:
     virtual size_t getRuleIndex() const override;\r
     Postfix_opContext *postfix_op();\r
 \r
-    virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
-    virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\r
    \r
   };\r
 \r
@@ -796,14 +696,15 @@ public:
     Binary_opContext(antlr4::ParserRuleContext *parent, size_t invokingState);\r
     virtual size_t getRuleIndex() const override;\r
 \r
-    virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;\r
-    virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;\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
   static antlr4::atn::PredictionContextCache _sharedContextCache;\r