我认为这可能是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