2012-03-03 96 views
1

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

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

b : L K 
    ; 

c : L M 
    ; 

我想知道的是如何在JAVACC中实现同样的事情?谢谢。

回答

2

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

举一个例子,假设你的语法规则如下。 void Expr(): {} { Call()| VAR() }

如果你需要做的未知时代先行,那么你可以像

void Expr(): 
{} 
{ 
LOOKAHEAD(Call()) 
Call() | Var() 
} 

欲了解更多信息,请参阅http://javacc.java.net/doc/lookahead.html

+0

谢谢。问题解决了。 – Bee 2012-03-03 18:57:14