我正在通过将 JavaCC 转换为 ANTLR4 来编写编译器,其中一条规则涉及传递参数并从中获取返回值。
对于规则“术语”,我必须执行以下操作:
Term term(ReadOptions options, int priority):
{
int p = options.operatorSet.getNextLevel(priority);
Term t;
}
{
(
LOOKAHEAD({p==0})
t = simpleTerm(options)
|
LOOKAHEAD(<NAME_TOKEN>,{priority==1201 && is1201Separator(2)})
t = name()
|
t = operatorTerm(options, p)
)
{return t;}
}
问题是我如何根据'p'的值匹配子规则。在以前的 ANTLR 版本中,我可以使用 => 并且我的问题已经解决了,但是在 ANTLR4 中我该怎么办?