如何使用Bison和CMake生成C ++文件以生成树?

时间:2018-08-28 17:40:48

标签: c++ cmake bison

我知道野牛如何在初学者水平上工作。 我的问题是如何强制CMake从给定的Bison输入文件生成C ++文件。
我已经有一个必须使用的Tree结构。
这是我当前用来学习Bison的buildscript。

while (scanf("%d",&a) != 1) {
  int ch;
  puts("Let us try again.");
  while ((ch = fgetc(stdin)) != '\n') {
    if (ch == EOF) {
      puts("End of file or error - let's go home.");
      return EXIT_FAILURE;
    } 
  }
}

如果我现在想生成Cpp代码,我该如何更改Bison文件?

1 个答案:

答案 0 :(得分:1)

您需要告诉Bison使用C ++框架

%skeleton "lalr1.cc"

野牛还可以识别语言声明

%language "c++"

但是我认为没有必要。

如果要使用C ++ API,请确保仔细阅读documentation


尽管我确信C ++接口具有优势,但我几乎从未使用过它。 C骨架生成的代码可以使用C ++进行编译,但前提是您不能将任何非平凡的对象用作语义类型YYSTYPE的一部分。 (您可以使用 pointer ,但不能引用任何任意C ++类型,但不能使用智能指针。)

但是,在bison手册中有一个完整的示例(在前面粘贴的链接中),值得研究一下它的用法提示。