弯曲yy_fatal_error
存在就这样。 但我想处理程序回到我的应用程序。 如何避免存在通话? 从yy_fatal_error。 这个问题无论在任何版本的解决? 您的建议是高度赞赏。 帮我这个问题。
Answer 1:
您可以覆盖功能,通过#define
荷兰国际集团自己。 请注意,在生成的代码有
/* Report a fatal error. */
#ifndef YY_FATAL_ERROR
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
#endif
如果您#define
宏YY_FATAL_ERROR(msg)
来调用自己的函数,词法分析器会调用该函数,而不是从模板中的一个。
然而,词法模板被写入假设这个函数不返回。 你可以把它做的是使用setjmp
和longjmp
准备可预见发生在你的应用程序返回和回跳(从你自己的yy_fatal_error
当使用“致命”错误功能)这一点。
Emacs等六做到这一点,例如,因为它使用的词法分析器语法高亮。 如果词法分析器产生一个致命的错误,你不会想编辑器停止。
这里正在讨论几个环节setjmp
和longjmp
:
- 用C的setjmp和longjmp的实际应用
- setjmp和longjmp的-结合实例理解
文章来源: flex yy_fatal_error exist just like that. I want handler back to application
标签:
flex-lexer