我安装了一些野牛的例子,
$ 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++
$
我做错了什么?我该如何运作?谢谢。
答案 0 :(得分:1)
从读取calc++.cc
开始,它可以处理通过命令行传递的文件。您可以将/dev/stdin
作为文件名传递来读取标准输入。
还要注意,在最近几个版本中,对bison的C ++支持的质量已发生了显着变化,请尽可能使用bison 3.3。