如何更改Flex lexer的错误行为?

时间:2013-12-10 10:41:53

标签: yacc flex-lexer lexer bisonc++

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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