我想返回一个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();}