3
ANTLRでASTを作成する際に問題があります(私はANTLR 3.2、ANTLRORK 1.4を使用しています)。ANTLRのASTのオプションの書き換えルール
これは私の文法である:
classDeclaration
:
(
'class' n=IDENTIFIER ('extends' e=IDENTIFIER)?
'{'
…
'}'
)
-> ^(CLASSDECLARATION ^(NAME $n) ^(EXTENDS $e)
;
問題は、クラスのオプション部分で発生 - ('extends' e=IDENTIFIER)?
。
ので、文法はこのクラスの宣言で良い作品:
class Test1 extends AbstractTest1 {
…
}
そして、私はextends
一部を除外したときに、次のように、失敗します。
class Test2 {
…
}
ANTLRはちょうどこのフラグメントの前に停止し、この例外を与えますコンソール:
書き換えルールを処理するにはANTLRをどのように指すことができますかはオプションですか?