LookAhead не работает в JFlex

Я пытаюсь использовать JFlex для создания парсера, но сталкиваюсь с очень простой проблемой. Я хочу получить этот токен

[A-Za-z]+_N$ { System.out.println("Noun"); }

и он должен распознавать "car_N" как "существительное" и НЕ распознавать "car_NN". но это не работает, если я использую

[A-Za-z]+_N { System.out.println("Noun"); } 

"car_N" получает распознавание, но "car_NN" также возвращает "car_N", это не то, что я хочу.

Интересно, кто-нибудь здесь знает, как помочь?

JFlex и Flex с условным обозначением "$" не работают

1 ответ

Я думаю, вы неправильно понимаете значение "$". Напротив, он соответствует только в конце строки текста (разрыв строки). Как таковой, он прекрасно работает. Но он не может различить car_N и car_NN, за исключением случаев, когда car_N находятся в самом конце строки. Может быть, вы действительно хотите посмотреть что-то вроде:

[A-Za-z]+_N/[^A-Za-z]
Другие вопросы по тегам