1

私は次のようなルールを持つantlr文法を持っています:

rule:
ID (COMMA ID)*
;

ここで、IDは一般的な変数名に一致するレクサールールであり、コンマはコンマに一致するレクサールールです。したがって、ルールは1つ以上のコンマ区切り変数に一致します

次のようなツリーを作成したいと思います。

ITEM 
    ID
ITEM
    ID
....

ここで、ITEMは、見つかった各IDの前に挿入する架空のノードです。

ツリー書き換え構文でそのようなことをどのように行うでしょうか?

通常、使用するすべてのIDを収集したい場合

rule:
ID (COMMA ID)*  -> ^(ITEM ID+)
;

しかし、これはツリーを生成します:

ITEM
    ID 
    ID
    .... 

実装言語およびANTLR3.1.3として重要な場合は、C#を使用しています

4

1 に答える 1

1

質問をした後すぐに気づきました。

木の形を取得するには、次のような書き換え構文を使用する必要があります。

rule:
ID (COMMA ID)*  -> ^(ITEM ID)+
;
于 2011-01-07T17:20:56.730 に答える