我正在编写一个编译器,将JavaCC转换为ANTLR4,其中一个规则涉及传递参数并从中获取返回值.
对于规则'term',我必须执行以下操作:
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;}
}
Run Code Online (Sandbox Code Playgroud)
问题是我如何根据'p'的值匹配子规则.在以前版本的ANTLR中我可以使用=>而我的问题会解决,但我在ANTLR4中做什么?
=>在ANTLR 4中不再需要以前版本的ANTLR中的运算符.
(x) => y以前使用过表格,可以在ANTLR 4中使用y.{x}? => y,那么在ANTLR 4中您可以简单地使用{x}? y.| 归档时间: |
|
| 查看次数: |
1327 次 |
| 最近记录: |