我是使用 bison 和 flex 的大一新生。我下载了gnu bison官网提供的包。有一个示例文件夹包含 C++ 计算器的源代码。这是下载链接: ftp: //ftp.gnu.org/gnu/bison/
我做了以下动作:
bison -d calc++-parser.yy => OK,生成 calc++-parser.tab.hh 和 calc++-parser.tab.cc
flex calc++-scanner.ll => OK,生成 lex.yy.c
cc -o a.out lex.yy.c calc++-parser.tab.cc -lfl => 失败
我不知道为什么我在第三步失败了,事实上,我真的不知道我是否做对了。
calc++-scanner.ll:2:20: 错误: cstdlib: 没有这样的文件或目录
calc++-scanner.ll:5:19:错误:字符串:没有这样的文件或目录
在 calc++-scanner.ll:6 中包含的文件中:../../doc/bison.texinfo:8284:16:错误:映射:没有这样的文件或目录
在 ../../doc/bison.texinfo:8285 包含的文件中,来自 calc++-scanner.ll:6: ../../doc/bison.texinfo:8440: 错误:预期 '=', ', ', ';', 'asm' 或 'attribute' 在 'calcxx_driver' 之前
(......这样的错误消息)
编译器版本:gcc 4.2.1
野牛:2.5.1
弹性:2.5.4
使用 {g++} 代替 {cc} 后:
u97530048@csie0[9:45pm]~/Compiler/calc++>g++ -o a.out lex.yy.c calc++-parser.tab.cc -lfl
在 ../../doc/bison.texinfo:8285 包含的文件中,来自 ../../doc/bison.texinfo:8504:
./calc++-parser.hh:126: 错误: 'class yy::calcxx_parser' 的重新定义 calc++-parser.tab.hh:96: 错误: 'class yy::calcxx_parser' 的先前定义