弯曲yy_fatal_error存在就这样。 我想处理程序发回应用程序(flex yy_fata

2019-10-23 03:55发布

弯曲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

如果您#defineYY_FATAL_ERROR(msg)来调用自己的函数,词法分析器会调用该函数,而不是从模板中的一个。

然而,词法模板被写入假设这个函数不返回。 你可以把它做的是使用setjmplongjmp准备可预见发生在你的应用程序返回和回跳(从你自己的yy_fatal_error当使用“致命”错误功能)这一点。

Emacs等六做到这一点,例如,因为它使用的词法分析器语法高亮。 如果词法分析器产生一个致命的错误,你不会想编辑器停止。

这里正在讨论几个环节setjmplongjmp

  • 用C的setjmp和longjmp的实际应用
  • setjmp和longjmp的-结合实例理解


文章来源: flex yy_fatal_error exist just like that. I want handler back to application
标签: flex-lexer