【发布时间】:2018-11-02 14:20:44
【问题描述】:
我的制作规则如下:
OtherNonTerminal := NonTerminal | {}
NonTerminal := <TOKEN>:A() | <TOKEN>:A(), Nonterminal()
在 JavaCC 中,NonTerminal 存在选择冲突:
void OtherNonTerminal() : {}
{
Nonterminal() | {}
}
void Nonterminal() : {}
{
<TOKEN> <COLON> A()
|
<TOKEN> <COLON> A() <COMMA> Nonterminal()
}
这是摆脱选择冲突的一种方法吗?程序是否会像我的 NonTerminal 生产规则一样按照指定的方式工作?
void Nonterminal() : {}
{
<TOKEN> <COLON> A() (<COMMA> NonTerminal())?
}
【问题讨论】:
-
我取出了
LOOKAHEAD(3),它是Nonterminal的第一个实现中第一个替代方案的开头。我这样做是因为我认为这与中心问题无关。
标签: java parsing recursion compiler-construction javacc