2010-11-22 16 views
2

私は最近、Antlrの学習を開始し、Antlr 3.2を含むAntlrWorks 1.4をダウンロードしました。Antlr 3.2書き換えルール

grammar TestRewrite; 

ab : a b -> a; 

a : A; 
b : B; 

A : 'a'; 
B : 'b'; 

: - 「>」さて、3.2のように書き換えルールの文法をサポートすることになっているが、私は最も単純なケースを取得することができていませんでした私はどちらかレクサーやパーサーのルールに基づいて動作するように構築することができこれをコンパイルしようとすると、エラーが発生します。

[11:26:29] error(100): TestRewrite.g:3:13: syntax error: antlr: TestRewrite.g:3:13: unexpected token: a 

これはなぜですか。構築は十分に簡単です:abは、ノードだけが捕捉されたツリーを生成する必要があります。あなたはそれをどうやっているの?私はそれを根絶( '^')または無視( '!')のどちらかで動作させることはできません。私は非常に混乱しています。

答えて

8

オプション{出力= AST;}

+0

@TimeHorse、 'オプション{出力= AST;}' 'あなたの文法TestRewrite直後に配置する必要があり、'ステートメント。 –

+2

+1はTerence Parrです。 ANTLRありがとう! :) –