ANTLR, как обнаружить мусорные данные в конце ввода - PullRequest
4 голосов
/ 27 января 2010

При использовании грамматик, написанных в ANTLR, синтаксический анализатор правильно распознает данные из входного потока, но если у меня есть некоторый мусорный текст в конце ввода (который не должен анализироваться грамматикой), анализатор не будет жаловаться.

Полагаю, с этим поведением все в порядке (я имею в виду, что синтаксический анализатор выполнил свою работу и проанализировал все, что я сказал, что должен анализировать), но есть ли хитрость, чтобы определить, остались ли данные на входе после ввода?парсер сделал свою работу?

Спасибо.

1 Ответ

4 голосов
/ 28 января 2010

Как Скотт уже ответил в списке рассылки ANTLR:

Здравствуйте,

При использовании грамматик, написанных на ANTLR, анализатор правильно распознает данные из входного потока, но если у меня есть какой-то мусорный текст в конце вход (какой мусорный текст не должен анализироваться грамматикой) парсер не жалуется.

Полагаю, с этим поведением все в порядке (я имею в виду, что парсер выполнил свою работу и проанализировал что бы я ни сказал, это нужно разобрать), но есть ли хитрость, чтобы обнаружить, когда есть остались ли данные на входе после того, как синтаксический анализатор выполнил свою работу?

Спасибо, Габи.

Добавьте токен EOF в конец вашего правила запуска.

- Скотт

...