我用ANTLR来生成一个类似Java的语言识别和使用以下规则识别泛型类型:没有可行的替代错误
referenceType
: singleType ('.' singleType)*
;
singleType
: Identifier typeArguments?
;
typeArguments
: '<' typeArgument (',' typeArgument)* '>'
;
typeArgument
: referenceType
;
现在,对于下面的输入语句,ANTLR产生'没有可行的替代'错误。
Iterator<Entry<K,V>> i = entrySet().iterator();
然而,如果我把两个连续的“>”字符之间的空间中,产生没有错误。它接近ANTLR无法区分上述规则和用于识别移位表达式的规则,但我不知道如何修改语法来解决这种歧义。任何帮助,将不胜感激。