Lex 和 Yacc是 UNIX 两个非常重要的、功能强大的工具。事实上,如果你熟练掌握 Lex 和 Yacc的话,它们的强大功能使创建 FORTRAN 和 C的编译器如同儿戏。
其实,Lex 和 Yacc不仅仅用在编译器或解释器的构造上,在日常生活中可以大量用到,如果能熟练掌握,可以节省很多的时间来处理其它事物。
我们往往做很多文件转换的工作,比如某个文件里的一些字段需要提取,然后按不同的格式转换到另外一个文件当中去,也许就要用到。
我很早以前接触过Lex和yacc,但用的比较少。现在准备好好学习下它。
从本质上讲Lex是一种生成扫描器的工具。扫描器是一种识别文本中词汇模式的程序。 Lex编程可以分为三个步骤:
l 以 Lex 可以理解的格式指定模式相关的动作。
l 在这一文件上运行 Lex,生成扫描器的 C 代码。
l 编译和链接 C 代码,生成可执行的扫描器。
通常,我们需要定义要找的这些词汇模式。还可以在表达式匹配后产生相关的动作。关于 Lex使用的具体规范,我在这里不准备重复了,我重点想谈使用的Lex的事情。
首先,你要下载Lex工具,网上有flex,我用的版本是2.5.2;然后有一个C的编译器,我用的是Vc 2005。让我们开始吧。