2014-11-05 59 views
0

我想返回一個ExprData。 ExprData是我的項目中的類。當我嘗試編譯我得到的語法時:ANTLR4 - 返回特定規則對象

SASGrammarParser.java:684: error: cannot find symbol

這是一個導入問題。我如何實例化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 
    ; 

回答

0

如果你想使用一些類的語法(並因此在生成的解析器),你需要用

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

導入所有的人都在語法和我不知道的如何實例化你的意思是什麼? exprData是這裏的返回變量,所以你可以通過使用$ exprData引用它來指定它。只是形成我的頭頂(也許這樣的標籤不能像這樣使用:

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