我会尽量简短。
目前我们正在使用 GNU Bison 构建解释器树,稍后将保存为专有格式并由我们的服务器加载。所以我们在 Bison 代码中使用了很多动态分配。问题是,最近我发现如果 Bison 出现任何语法错误,我们就会得到很多内存泄漏,因为在解析树的某些部分时已经分配了。阅读了一些书,我发现了一些关于“错误恢复”和 %destructor 的信息。第一个似乎是正确的方法,但是 %destructor 的使用对我来说还不是很清楚。
那么,如果由于某种原因 Bison 无法重新同步,是否意味着将调用 %destructor 来删除创建的所有令牌/符号?