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

时间:2019-02-09 02:31:43

标签: c++ 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++
$

我做错了什么?我该如何运作?谢谢。

1 个答案:

答案 0 :(得分:1)

从读取calc++.cc开始,它可以处理通过命令行传递的文件。您可以将/dev/stdin作为文件名传递来读取标准输入。

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