我安装了一些 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/