出现错误时停止程序执行

Stop program execution when there is error

我想在遇到错误时停止程序的执行。 使用 lex 时该怎么做?我可以像这样调用普通的 C 退出:

exit( status );

或者使用 Lex 有更巧妙的方法吗?

您可以做到这一点 - 但是:

  • lex 所做的只是向标准错误打印一条消息并退出——当它遇到致命错误时,例如,缓冲区分配问题。例如,参见用于此目的的 YY_FATAL_ERROR。它可以被覆盖,例如,一个错误 recovery 例程。
  • 典型的词法分析器不会因错误而退出:它 returns 向解析器提供决定状态是否合法的状态信息。

如果您的词法分析器充当解析器,那么退出词法分析器就有意义了。

进一步阅读: