まず第一に、私はANTLRに不慣れです。私が求めていることは、他の皆さんにとっては些細なことかもしれませんが、あなたの助けが必要です。
ストリーム内のすべての修飾名を照合し、ストリームの残りの文字を無視したいと思います。
私は次のことを試しました:
findAllQualifiedNames
: qualifiedName+
;
qualifiedName
: IDENTIFIER
('.' IDENTIFIER)*
;
IDENTIFIER
: ('_'
| '$'
| ('a'..'z' | 'A'..'Z'))
('a'..'z' | 'A'..'Z' | '0'..'9' | '_' | '$')*
;
AnyOtherChar
: .
{$channel=HIDDEN;}
;
しかし、それは私が期待したようには機能しません。入力の場合、修飾された名前としてa.b.c;d.e.f;
のみ一致します。a.b.c
そして、私はエラーを受け取ります:
で実行可能な代替手段はありません。
編集:
上記の文法では、次の入力を試しました。abc; def; .. {xy;}
a.b.c, d.e.f
と一致することを期待していましx.y
たが、次のようになります。