0

我用 Flex 构建了一个词法分析器。但是有一个主要问题:Flex 默认会生成此错误方法:

void yyFlexLexer::LexerError( yyconst char msg[] )
{
    std::cerr << msg << std::endl;
    exit( YY_EXIT_FAILURE );
}

这意味着每次出现语法错误时,我的应用程序都会退出。当然这不是我想要的,因为即使输入错误,我也需要一遍又一遍地调用词法分析器。

有没有办法改变 Flex 的行为?

4

1 回答 1

1

解决了!我刚刚在 .l 文件的顶部添加了一个简单的“#define YY_FATAL_ERROR”。这将确保 Flex 不会调用 LexerError 方法,因此应用程序不会退出。

于 2013-12-10T12:58:11.270 回答