1
当您运行bison时,它会在“stack.hh”中为您创建一个堆栈类。文件名是固定的,但内容包装在您选择的名称空间中。在野牛中使用C++ api的多个解析器,与stack.hh冲突
如果您使用bison生成2个独立的文法(即2 * .y文件)并且使用C++模式,那么“stack.hh”文件会发生冲突并被覆盖。
类似的事情发生了“location.hh”和“position.hh”被自动生成的类,但有一个工作野牛2.7
%define api.location.type "foo::location"
,让你重用foo
语法命名空间周围在您的bar
语法名称空间中。
但是我在处理“stack.hh”文件时找不到这个练习。
我也面临着OP的问题。实际的问题是关于包含多个解析器。他们都会生成一个parser.h,它依赖于location.h,stack.h和position.h直接包含在内。当你编译一个需要它们的项目时,你将面临在同一个包含空间中有多个“stack.h”(和其他)的问题。 – 2015-07-30 00:50:52