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 '$', похоже, не работает


person Freddy Chua    schedule 17.10.2011    source источник


Ответы (1)


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

[A-Za-z]+_N/[^A-Za-z]
person Christopher Manning    schedule 06.11.2011
comment
Спасибо! Я не знал, что вы заглянули в stackoverflow, я работаю с Уильямом Коэном, кстати. - person Freddy Chua; 07.11.2011