【发布时间】:2013-05-26 12:30:51
【问题描述】:
我是使用 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: error: cstdlib: No such file or directory
calc++-scanner.ll:5:19: error: string: No such file or directory
在 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'的先前定义
【问题讨论】:
标签: bison calculator flex-lexer