ANTLR4-返回特定的规则对象



我想返回一个ExprData。ExprData是我项目中的类。当我试图编译语法时,我得到了:

SASGrammarParser.java:684:错误:找不到符号

这是一个重要的问题。如何实例化ExprData?

expr returns [ExprData exprData]
    : expr AND expr                     #AndExpr
    | expr OR expr                          #OrExpr
    | expr IN '(' constant_list ')'     #InExpr
    | expr (EQ | ASSIGN) expr           #EqualExpr
    | expr op=(MULT | DIV) expr     #DivMultExpr
    | expr op=(PLUS | MINUS) expr       #PlusMinusExpr
    | expr LTEQ expr                 #LessEqualExpr     
    | expr LT expr                      #LessExpr
    | expr GT expr                      #GreaterExpr
    | expr GTEQ expr                        #GreaterEqualExpr
    | '-' expr                              #MinusExpr
    | '(' expr ')'                          #SimpleExpr                 
    | variable                              #VariableExp
    | constant                              #ConstantExp
    | function                              #FunctionExp
    ;

如果你想在语法中使用某些类(因此在生成的解析器中),你需要用导入语法中的所有类

@parser::header {
import packageName.ExprData;
}

我不知道你说的如何实例化是什么意思?exprData是这里的返回变量,因此您可以通过使用$exprData从操作中引用它来进行赋值。只是从我的脑海中浮现出来(也许这些标签不能这样使用:

expr OR expr          #OrExpr {$exprData=someFuncitonThatReturnsExprDataObject();}

最新更新