Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何生成BiSun和CGube生成C++的C++文件?_C++_Cmake_Bison - Fatal编程技术网

如何生成BiSun和CGube生成C++的C++文件?

如何生成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_

我知道野牛在初学者阶段是如何工作的。 我的问题是我如何强制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_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代码