У меня есть следующее
rule : A B;
A : 'a_e' | 'a';
B : '_b';
Введите:
a_b //dont work
a_e_b //works
Почему у лексера проблемы с этим? Когда ANTLR совпадает с 'a_' в 'a_b', не следует ли ему вернуться назад или использовать lookahead или что-то, чтобы увидеть, что он не может соответствовать токену A, а затем решить сопоставить токен A как 'a', а затем перейти к совпадению токена B как '_b'?
Я думаю, что я неправильно понял кое-что о том, как работает antlr. Я попытался прочитать об этом в документе ANTLR и Google. Но у меня мало опыта работы с лексерами и парсерами.
Большое спасибо за любую помощь.