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

问题描述 投票:0回答:1

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

对于我使用的错误处理

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


printf("\n Error at line #%d.\n\n",yylineno);
}
bison flex-lexer
1个回答
2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.