c++ - 如何使 bison-doc 的 calc++ 示例工作?

标签 c++ bison

我安装了一些 bison 示例,通过

$ sudo apt  install bison-doc

$ ls  /usr/share/doc/bison-doc/examples/calc++/
calc++.cc  calc++-driver.cc  calc++-driver.hh  calc++-parser.yy  calc++-scanner.ll

然后我通过创建一个 Makefile 来构建它

$ cp -r /usr/share/doc/bison-doc/examples/calc++/ /tmp
$ cd /tmp/calc++/

$ cat Makefile
calc++: calc++-parser.yy calc++-scanner.ll calc++-driver.hh calc++-driver.cc calc++.cc
    bison calc++-parser.yy -o calc++-parser.cc
    flex calc++-scanner.ll
    g++ -o calc++ *.cc *.c -lm 
clean:
    rm calc++ *.o position.hh stack.hh location.hh calc++-parser.tab.hh calc++-parser.tab.cc calc++-parser.cc calc++-parser.hh lex.yy.c

$ make
bison calc++-parser.yy -o calc++-parser.cc
flex calc++-scanner.ll
g++ -o calc++ *.cc *.c -lm 

但是当我尝试运行可执行文件时,它立即返回而不是等待标准输入输入:

$ ./calc++
$

我做错了什么?我怎样才能让它发挥作用?谢谢。

最佳答案

来自阅读calc++.cc ,它对通过命令行传递的文件进行操作。您可以传递 /dev/stdin 作为文件名来读取标准输入。

另请注意,在过去的几个版本中,bison 对 C++ 的支持质量发生了显着变化,请尽可能使用 bison 3.3。

关于c++ - 如何使 bison-doc 的 calc++ 示例工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602609/

相关文章:

c++ - Type Alias 一个自定义类的对象

c++ - Bison :存储自定义类

bison - 我应该如何处理 Flex 词法分析器中的词法错误?

c++ - g++ unordered_map 没有 at() 函数?

double 总和的 C++ 结果是错误的

c++ - 大型数组、std::vector 和堆栈溢出

c++ - 在 C++ 中存储和访问图 block 属性

parsing - GNU bison 和 yacc 有什么区别?

c++ - 是否可以在不使用全局变量的情况下返回使用 Bison 构建的 AST?

java - 如何消除 bison 中变量声明的移位/减少冲突?