1

ANTLRでは、構文述語を使用して、次のように特定の問題を解決できます。これは単純な例です。

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

b : L K
   ;

c : L M
   ;

私が知りたいのは、JAVACで同じことを達成する方法です。ありがとう。

4

1 に答える 1

2

javaccにはSYNTACTICLOOKAHEADと呼ばれる概念があります。これを使用して、同じ動作を実現できます。

例として、文法規則が次のようになっていると仮定します。void Expr():{} {Call()| Var()}

あなたが未知の時代の先読みをする必要があるなら、あなたは次のようなことをすることができます

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

詳細については、http://javacc.java.net/doc/lookahead.htmlを参照してください。

于 2012-03-03T18:54:29.450 に答える