YACC/Bison中的错误检测/恢复
我一直在阅读有关使用错误符号yyerrok等的手册。。我关心的是如何向解析器添加错误规则,而不必过度添加或添加不足 考虑到我将解析一个简化的Java程序,我应该遵循什么一般准则?每个规则是否都应该包含一些错误检测/恢复?是否有一种最简单的方法能够熟练地完成这些任务?我现在只查找语法错误YACC/Bison中的错误检测/恢复,bison,yacc,Bison,Yacc,我一直在阅读有关使用错误符号yyerrok等的手册。。我关心的是如何向解析器添加错误规则,而不必过度添加或添加不足 考虑到我将解析一个简化的Java程序,我应该遵循什么一般准则?每个规则是否都应该包含一些错误检测/恢复?是否有一种最简单的方法能够熟练地完成这些任务?我现在只查找语法错误 感谢您提前给出所有答案。通常,您希望在yacc/bison文件中节省使用错误恢复规则。最好只有一个或两个顶级错误规则,而不是在叶产品中有很多错误规则,因为在叶规则中正确地重新同步实际上是非常困难的 对于类似Jav
感谢您提前给出所有答案。通常,您希望在yacc/bison文件中节省使用错误恢复规则。最好只有一个或两个顶级错误规则,而不是在叶产品中有很多错误规则,因为在叶规则中正确地重新同步实际上是非常困难的 对于类似Java的语言,最简单的方法是使用如下规则:
BlockStatement: error ';'
在这种情况下,如果在解析语句时出现任何语法错误,解析器将丢弃输入标记,直到到达
并将其作为刚刚完成的语句。这对于除缺少<代码>之外的其他错误非常有效代码>位于块的末尾