虽然flex/bison是Linux世界的东东,有些情况下却需要在Windows上使用它们,自己用MinGW编译flex和bison又没那个能力,只好找一些第三方的port,好在终于让我找到了一个,虽然比较老,但是用于学习编译原理还是够了:)
可以到这个网址下载flex和Bison的win32版本:
http://www.monmouth.com/~wstreett/lex-yacc/lex-yacc.html
实际上需要下载以下四个文件:
对这4个文件的安装有如下要求:
* flex.exe和bison.exe必须放进环境变量 PATH所包含的目录里
* 文件bison.hairy和文件bison.simple可以安装到任意位置,只需满足:
o 设置环境变量 BISON_HAIRY为文件bison.hairy的绝对路径
o 设置环境变量 BISON_SIMPLE为文件bison.simple的绝对路径
注意:
这个bison的版本比较老,输出文件缺省命名规则为:
Input: foo.y
Output: foo_tab.c & foo_tab.h
而我在fedora9下面用过的bison输出文件为foo.tab.c
编写 lex.l 时注意 #include "foo_tab.h"
经过测试,生成的lex.yy.c & foo_tab.h & foo_tab.c 可以 在MinGW GCC下面正确编译,
** 但是 在 VC++ 6.0 和 Borland C++Builder 6 下面编译均不通过! **
据我观察bison.hairy和bison.simple这两个文件可能是bison用于生成parser的C代码模板,
猜想:能否通过改写bison.hairy和bison.simple从而使bison产生可用于VC和BCB的代码?
其他问题还有待进一步测试...
可以到这个网址下载flex和Bison的win32版本:
http://www.monmouth.com/~wstreett/lex-yacc/lex-yacc.html
实际上需要下载以下四个文件:
对这4个文件的安装有如下要求:
* flex.exe和bison.exe必须放进环境变量 PATH所包含的目录里
* 文件bison.hairy和文件bison.simple可以安装到任意位置,只需满足:
o 设置环境变量 BISON_HAIRY为文件bison.hairy的绝对路径
o 设置环境变量 BISON_SIMPLE为文件bison.simple的绝对路径
注意:
这个bison的版本比较老,输出文件缺省命名规则为:
Input: foo.y
Output: foo_tab.c & foo_tab.h
而我在fedora9下面用过的bison输出文件为foo.tab.c
编写 lex.l 时注意 #include "foo_tab.h"
经过测试,生成的lex.yy.c & foo_tab.h & foo_tab.c 可以 在MinGW GCC下面正确编译,
** 但是 在 VC++ 6.0 和 Borland C++Builder 6 下面编译均不通过! **
据我观察bison.hairy和bison.simple这两个文件可能是bison用于生成parser的C代码模板,
猜想:能否通过改写bison.hairy和bison.simple从而使bison产生可用于VC和BCB的代码?
其他问题还有待进一步测试...