Только символ 'a' не может быть распознан в грамматике ANTLR
Идентификация для ID:
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
когда я разбираю свои правила, не может быть распознан только символ 'a', но 'A' или 'aa' или 'a0' или 'b' или 'c' или 'AAAZzzzxx' или.... все остальное во вселенной, кроме "а" может быть распознан лексером, почему не "а"??
ошибка:
mismatched input 'a' expecting 'u0005'
Спасибо!
1 ответ
Ваше правило может совпадать с нулевыми символами, и лексер станет бесполезным. Тебе нужно:
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')+
;
Видите "+" вместо "*"?
Джим