小さなクエリ言語用のANTLRパーサーを構築しています。クエリ言語は定義上あいまいであり、クエリを処理するにはすべての可能な解釈(AST)が必要です。
Example:
query : CLASSIFIED_TOKEN UNCLASSIFIED_TOKEN
| ANY_TOKEN UNCLASSIFIED_TOKEN
;
この場合、入力が両方のルールに一致する場合、両方の解釈で2つのASTを取得する必要があります。ANTLRは最初に一致したASTを返します。
同じ文法で可能なすべてのASTを取得する簡単な方法を知っていますか?パーサーを複数回実行することを考えています。反復間ですでに一致しているルールを「オフ」にします。これは汚いようです。より良いアイデアはありますか?たぶん、これを行うことができるJavaサポートを備えた他のlex / parserツールですか?
ありがとう