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

Refusing to print other lines when bison finds an error

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

我使用了错误处理

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


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

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

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