我正在使用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。