Yacc不允许传递对象。因为%union只能包含POD类型,所以必须新建复杂对象并通过指针传递。如果出现语法错误,yacc解析器就会停止运行,并且对所有这些创建的对象的引用都会丢失。我想出的唯一解决方案是所有新对象都继承一个特定的基类,在分配时添加到容器中,如果出现错误,该容器中的所有内容都可以删除。有谁知道解决此问题的更好的yacc技巧?请不要告诉我选择不同的解析器。 最佳答案 我喜欢Yacc,但有区别的union栈确实带来了挑战。不知道你用的是C还是C++。我修改了Yacc以生成C++用于我自己的目的,但这个解决方案可以适应C。