当您运行野牛时,它会在“stack.hh”中为您创建一个堆栈类。文件名是固定的,但内容被包装在您选择的命名空间中。
如果您使用 bison 生成 2 个单独的语法(即 2 个 *.y 文件)并使用 C++ 模式,“stack.hh”文件会发生冲突并被覆盖。
自动生成的“location.hh”和“position.hh”类也会发生类似的事情,但在 bison 2.7 中有一个解决方法
%define api.location.type "foo::location"
这使您可以在foo
语法命名空间中重用语法命名bar
空间。
但是在处理“stack.hh”文件时,我无论如何都找不到做这个练习。