野牛发现错误时拒绝打印其他行

时间:2019-04-21 15:46:24

标签: bison flex-lexer

我正在从使用bison-flex创建的编译器中解析文本文件。 如果发现错误,它将停止打印文本的下一行。

我使用过的错误处理方法

extern int yylineno;
void yyerror(char *s) {
errors++;


printf("\n Error at line #%d.\n\n",yylineno);
}

1 个答案:

答案 0 :(得分:2)

如果希望语法错误后继续解析器,则必须至少提供一个error生成。否则,将不应用bison / yacc错误恢复算法。

有关更多详细信息和一些简单示例,请参见bison manual chapter on error recovery