出现错误时停止程序执行
Stop program execution when there is error
我想在遇到错误时停止程序的执行。
使用 lex 时该怎么做?我可以像这样调用普通的 C 退出:
exit( status );
或者使用 Lex 有更巧妙的方法吗?
您可以做到这一点 - 但是:
- lex 所做的只是向标准错误打印一条消息并退出——当它遇到致命错误时,例如,缓冲区分配问题。例如,参见用于此目的的 YY_FATAL_ERROR。它可以被覆盖,例如,一个错误 recovery 例程。
- 典型的词法分析器不会因错误而退出:它 returns 向解析器提供决定状态是否合法的状态信息。
如果您的词法分析器充当解析器,那么退出词法分析器就有意义了。
进一步阅读:
- Does YY_FATAL_ERROR require a call to exit?
- Re: Ungraceful handling of fatal flex errors
- flex yy_fatal_error exist just like that. I want handler back to application
我想在遇到错误时停止程序的执行。 使用 lex 时该怎么做?我可以像这样调用普通的 C 退出:
exit( status );
或者使用 Lex 有更巧妙的方法吗?
您可以做到这一点 - 但是:
- lex 所做的只是向标准错误打印一条消息并退出——当它遇到致命错误时,例如,缓冲区分配问题。例如,参见用于此目的的 YY_FATAL_ERROR。它可以被覆盖,例如,一个错误 recovery 例程。
- 典型的词法分析器不会因错误而退出:它 returns 向解析器提供决定状态是否合法的状态信息。
如果您的词法分析器充当解析器,那么退出词法分析器就有意义了。
进一步阅读:
- Does YY_FATAL_ERROR require a call to exit?
- Re: Ungraceful handling of fatal flex errors
- flex yy_fatal_error exist just like that. I want handler back to application