私は次のようなルールを持つ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#を使用しています