私は ANTLR を使用して Java のような言語の認識エンジンを生成しています。ジェネリック型を認識するために次の規則が使用されています。
referenceType
: singleType ('.' singleType)*
;
singleType
: Identifier typeArguments?
;
typeArguments
: '<' typeArgument (',' typeArgument)* '>'
;
typeArgument
: referenceType
;
ここで、次の入力ステートメントに対して、ANTLR は「実行可能な代替手段がありません」というエラーを生成します。
Iterator<Entry<K,V>> i = entrySet().iterator();
ただし、2 つの連続する '>' 文字の間にスペースを入れても、エラーは発生しません。ANTLR は上記のルールとシフト式を認識するために使用されるルールを区別できないようですが、このあいまいさを解決するために文法を変更する方法がわかりません。どんな助けでも大歓迎です。