【发布时间】:2022-01-25 05:53:13
【问题描述】:
我正在尝试让 bison 返回给定测试文件中的所有语法错误。 但问题是解析器在遇到语法错误时停止并报告它 有没有办法直接报告所有的语法错误?
【问题讨论】:
-
你能加一个:minimal reproducible example 吗?
标签: error-handling syntax flexbox bison
我正在尝试让 bison 返回给定测试文件中的所有语法错误。 但问题是解析器在遇到语法错误时停止并报告它 有没有办法直接报告所有的语法错误?
【问题讨论】:
标签: error-handling syntax flexbox bison
为了在语法错误后继续解析,需要在语法中添加错误恢复规则。了解错误恢复的工作原理确实需要了解 bison 的 shift/reduce 解析器的工作原理。 bison manual 在error recovery 上有一个合理的部分,您应该从这里开始。
有了良好的错误恢复规则,解析器可以在语法错误后继续,并且(可能)找到更多的语法错误。您确实需要注意错误恢复后来自yyparse 的返回值——如果错误恢复“成功”并且能够继续解析,并且没有进一步的错误,yyparse 将返回 0(成功)。
【讨论】: