如何生成BiSun和CGube生成C++的C++文件?
我知道野牛在初学者阶段是如何工作的。 我的问题是我如何强制CGEAR从给定的BISY输入文件生成C++文件。 我有一个必须使用的树的现有结构。 这是我目前用来学习Bison的构建脚本如何生成BiSun和CGube生成C++的C++文件?,c++,cmake,bison,C++,Cmake,Bison,我知道野牛在初学者阶段是如何工作的。 我的问题是我如何强制CGEAR从给定的BISY输入文件生成C++文件。 我有一个必须使用的树的现有结构。 这是我目前用来学习Bison的构建脚本 find_package(BISON) find_package(FLEX) BISON_TARGET(MyParser Parser.yxx ${CMAKE_CURRENT_BINARY_DIR}/Parser.c) FLEX_TARGET(MyScanner Lexer.l ${CMAKE_CURRENT_
find_package(BISON)
find_package(FLEX)
BISON_TARGET(MyParser Parser.yxx ${CMAKE_CURRENT_BINARY_DIR}/Parser.c)
FLEX_TARGET(MyScanner Lexer.l ${CMAKE_CURRENT_BINARY_DIR}/Lexer.c)
ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)
add_executable(mathParser
${BISON_MyParser_OUTPUTS}
${FLEX_MyScanner_OUTPUTS}
)
如果我想生成CPP代码,我怎么改变BISH文件?< /P> < p>你需要告诉BySon使用C++骨架< /P>
%skeleton "lalr1.cc"
野牛也承认语言宣言
%language "c++"
但我认为没有必要
如果您要使用C++ API,请确保您仔细阅读.< /p> 虽然我确信C++接口有优点,但我几乎从来没有使用过。C框架生成的代码可以用C++编译,前提是不能使用任何非平凡对象作为语义类型YySype的一部分。可以使用指针,但不使用任何任意C++类型的引用,但不能使用智能指针。
在BISY手册中有一个完整的例子,但是在前面粘贴的链接中,它将是值得研究的提示用法。
用BISY生成C++文件,只需指定输出文件的最后扩展到BISONSORATION宏即可。对于find_packageBISON,包含一个生成.cpp文件的示例。最有可能的是,其他特定于C++的扩展名.cc、.cxx也可以使用。@Tsyvarev看起来输出的确实是.cpp和.hpp,但看看它们内部,就会发现它们仍然只是普通的C代码