我用Flex构建了一个词法分析器。但是有一个主要问题:Flex默认生成此错误方法:
void yyFlexLexer::LexerError( yyconst char msg[] )
{
std::cerr << msg << std::endl;
exit( YY_EXIT_FAILURE );
}
这意味着每次语法错误我的应用程序都会退出。当然这不是我想要的,因为即使有错误的输入我也需要反复调用词法分析器。
有没有办法改变Flex的行为?
答案 0 :(得分:1)
解决了!我刚刚在我的.l文件的顶部添加了一个简单的“#define YY_FATAL_ERROR”。 这将确保Flex不会调用LexerError方法,因此应用程序不会退出。