Как сказать flex и bison прекратить обработку ввода? - PullRequest
2 голосов
/ 10 июля 2011

Каков наилучший способ согнуть и зубрить, чтобы остановить обработку при возникновении ошибки.Если я вызываю yyerror, он не останавливает сканирование и анализ моего файла.В то время как ввод синтаксически корректен, существует ошибка пользователя, такая как попытка загрузить один и тот же файл дважды.Как только я выйду из flex / bison, моя программа вернет пользователю сообщение об ошибке, и программа должна продолжить работу.Я предполагаю, что создание исключения C ++ может что-то сломать?

1 Ответ

1 голос
/ 19 июля 2011

YYABORT - стандартный способ выбраться; это заставляет yyparse немедленно вернуться с ошибкой (1). Затем вы можете сгенерировать исключение или сделать что хотите. Вам нужно будет сбросить ввод flex, если вы хотите проанализировать что-то еще, но если вы это сделаете, вы можете просто снова вызвать yyparse и синтаксический анализ начнется заново с начала.

...