在开发程序的过程中经常会遇到文本解析的问题,例如:解析C语言源程序,编写脚本引擎等等,解决这种文本解析的方法有很多,一种方法就是自己手动用C或者C++直接编写解析程序,这对于简单格式的文本信息来说,不会是什么问题,但是对于稍微复杂一点的文本信息的解析来说,手工编写解析器将会是一件漫长痛苦而容易出错的事情。本系列文档就是专门用来由浅入深的介绍两个有名的Unix工具Lex和Yacc,并会一步一步的详细解释如何用这两个工具来实现我们想要的任何功能的解析程序,为了方便理解和应用,我会在该系列的文章中尽可能的采用具体可行的实例来加以阐释,而且这种实例都是尽可能的和具体的系统平台无关的,因此我采用命令行程序作为我们的解析程序的最终结果。
第一篇:环境设置
开发Lex和Yacc程序最需要的程序就是lex和yacc了,如果你是Unix或者Linux系统,则系统自带了这两个工具,无需安装,不过值得说明的是GNU/Linux下面的Lex是flex,而Yacc则是bison。另外需要的就是一个编译器,由于我们采用的是GNU的lex和yacc,所以,理所当然的我们就使用GNU的编译器了,如果是Unix或者Linux系统,那么编译器应该已经安装了。在这里我重点讨论的是Windows系统环境下的Lex和Yacc程序的开发,至于为什么选择Windows系统作为开发平台,则是为了尽可能的让初学者容易入门。
言归正传,首先列举Windows平台下面Lex和Yacc开发环境所需要安装的程序:
1. UnixCmd(最主要的是flex.exe和bison.exe)
2. MinGW
安装完成之后,还需要设置几个环境变量:
将以上两个程序的安装之后的可执行程序所在的路径加入到系统的PATH环境变量中,保证可以通过Dos窗口直接调用到里面的命令。确保bison.exe程序所在的路径中有bison.hairy和bison.simple两个文件,然后设置两个环境变量BISON_HAIRY指向bison.hairy, BISON_SIMPLE指向bison.simple。具体的操作步骤如下所示(WindowsXP为例):
第一步:鼠标右击“我的电脑”图标,选择“属性”,弹出的对话框选择“高级”标签页:
SHAPE \* MERGEFORMAT
第二步:点击上图的“环境变量”按钮,进入到下面的对话框:
SHAPE \* MERGEFORMAT
经过上面的设置之后需要在控制台窗口中进行调用,测试环境变量是否已经设置成功。