我認爲這可能是UI中的一個錯誤。我認爲解析器看到了)。你有沒有嘗試從Java調用解析器?
public static void main(String[] args)
throws Exception
{
// TODO Auto-generated method stub
ANTLRStringStream strstrm = new ANTLRStringStream("(3)");
ffLexer lex = new ffLexer(strstrm);
CommonTokenStream tokStrm = new CommonTokenStream(lex);
ffParser prs = new ffParser(tokStrm);
prs.term();
}
如果添加一個動作你的長期規則:
term
: IDENT | a='(' term b=')' {System.out.println($a.text + " " + $b.text);} | INTEGER
;
你應該得到的輸出
()
另外,如果你創建另一個解析器規則:
prog: term+;
然後給出輸入(3)(4)(5)
解析樹如預期
恐怕你的圖片鏈接不適合我,所以我不能確定你看到了什麼行爲。 – Gian
我編輯了鏈接,謝謝 – akaya