2024年3月22日发(作者:)

Win7下lex 与 yacc的安装配置

前言

初学lex与yacc,不知所以然。完全找不到北,看了好几次的lex与yacc介绍,仍然

不懂这究竟为何物,受尽了种种折磨,差点以头抢地而。故而整理此文,以便后者,顺便

感谢本文结尾处的三位大神,正因为他们,才有了此文。

lex

Lex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。 一种匹

配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记。 当 Lex 接

收到文件或文本形式的输入时,它试图将文本与常规表达式进行匹配。 它一次读入一个输

入字符,直到找到一个匹配的模式。 如果能够找到一个匹配的模式,Lex 就执行相关的动

作(可能包括返回一个标记)。 另一方面,如果没有可以匹配的常规表达式,将会停止进

一步的处理,Lex 将显示一个错误消息。

yacc

Yacc 代表 Yet Another Compiler Compiler。 Yacc 的 GNU 版叫做 Bison。它是

一种工具,将任何一种编程语言的所有语法翻译成针对此种语言的 Yacc 语 法解析器。

借助lex和yacc,我们可以很容易地开发出所谓的编译器。linux下有很多很方便的

小工具,linux系统已经自带有扫描器(flex)与解释器(bison)。幸运的是这些小工具一般都

有windows的版本。现在我就简单说一下如何在windows下安装这些小工具。

首先

下载下载flex和bison。网址分别是

和/packages/

/packages/。仅需下载setup文件即可,

然后安装。安装时,设定路径最好不要是在Program Files文件夹里面,因为文件夹名字

带空格会影响以后的使用。可如此:安装在c:gnuwin32下面。

其次

由于我们使用的flex和bison都是GNU的工具,所以为了方便,采用的C/C++

编译器也 采用GNU的编译器GCC,当然我们需要的也是Windows版本的GCC了。目

前Windows平台 的GCC主要是MinGW编译器,可以到 MinGW的主页下载安装。

下载地址:

/projects/mingw/files/latest/download?source=files

安装过程中,会自动开启控制台,我们仅需稍等片刻,任其自动完成。

安装完毕后,将c:gnuwin32lib里面的libfl.a和liby.a复制到C:MinGWlib里面。

再者

现在该安装的都已安装完毕,那么我们该设置环境变量了。右键点击“计算机”,“属