2016-02-07 4 views
0

Хотелось бы прекратить выполнение программы при столкновении с некоторой ошибкой. Как это сделать при использовании lex? Я могу просто вызвать обычный выход C, например:Остановить выполнение программы при возникновении ошибки

exit(status); 

или есть ли более аккуратный способ сделать это с Лексом?

ответ

1

Вы можете сделать это, - но:

  • Просто печатая сообщение для стандартной ошибки и выходом является то, что закон делает — когда он встречает роковую ошибку, например, буфер проблемы распределения. См. Например, YY_FATAL_ERROR, который используется для этой цели. Он может быть переопределен, например, при ошибке восстановление рутина.
  • Типичный лексер не выходит с ошибкой: он возвращает информацию о состоянии в парсер, который решает, является ли состояние законным.

Если ваш лексер служит в качестве синтаксического анализатора, то выход из lexer имеет смысл.

Дальнейшее чтение: