JAVACC的ANTLR句法谓词

时间:2012-03-03 16:09:55

标签: antlr context-free-grammar javacc

在ANTLR中,我们可以使用syntactic predicates来解决以下某些问题。这只是一个简单的例子。

a : (L K)=> b
   | c
   ;

b : L K
   ;

c : L M
   ;

我想知道的是如何在JAVACC中实现同样的目标?感谢。

1 个答案:

答案 0 :(得分:2)

在javacc中有一个名为SYNTACTIC LOOKAHEAD的概念。您可以使用它来实现相同的行为。

例如,假设您的语法规则如下。     void Expr():     {}     {        调用()| VAR()     }

如果你需要做一个未知时间的前瞻,那么你可以做类似

的事情
void Expr():
{}
{
LOOKAHEAD(Call())
Call () | Var()
}

有关详细信息,请参阅http://javacc.java.net/doc/lookahead.html