私の ANTLR 文法には、クエリが単一のフラグメントまたは PLUS 記号で結合されたフラグメントのリストであるというルールがあります。出力として AST を生成していますが、できるようにしたいのは、フラグメントの数に応じてノードを書き換えることです。
フラグメントが 1 つある場合、ノードは 1 つだけである必要があります。複数のフラグメントがある場合は、ルート ノードを PLUS にし、すべてのフラグメントを子にしたいと考えています。これは可能ですか?
query
: frag (PLUS frag)* -> ^(PLUS frag*)
;