2012-03-03 87 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