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下安装这些小工具。

 

1. 首先下载unxutils压缩包 http://sourceforge.net/search/?type_of_search=soft&words=unxutils&search=Search

2.把压缩包解压到一个文件夹,例如我的解压包放在  E:/compiler/UnxUtils下

3.配置环境变量。分别把unxtils下的lib与wbin两个子文件夹路径添加到环境变量path中。

a.在控制台上输入命令:

path=%path%; E:/compiler/UnxUtils/usr/local/lib

path=%path%; E:/compiler/UnxUtils/usr/local/wbin

b.直接在“系统属性”的环境变量上配置。

4.在解压包中的E:/compiler/UnxUtils/usr/local/share下有两个文件,bison.hairy,bison.simple,为这两个文件建立两个环境变量。(Administrator的用户变量)

变量

bison_hairy      E:/compiler/UnxUtils/usr/local/share/bison.hairy      (注意变量名称必须为 bison_hairy)

bison_simple    E:/compiler/UnxUtils/usr/local/share/bison.simple   (注意变量名称必须为 bison_simple)

 

至此万事俱备,我们可以开始两个简单的文件来测试一下。

1.新建文本文件,更改名称为lex.l,敲入下面代码

%{

int yywrap(void);

%}

%%

%%

int yywrap(void)

{

return 1;

}

2.新建文本文件,更改名称为yacc.y,敲入下面代码

 

%{

void yyerror(const char *s);

%}

%%

program:

       ;

%%

void yyerror(const char *s)

{

}

int main()

{

        yyparse();

        return 0;

我们暂且不讨论上面代码的意思。

打开控制台,进入到刚才所建立文件(lex.l,yacc.y)所在的文件夹。

1.输入 flex lex.l

2.输入 bison yacc.y

如果我们看到当前文件夹上多了两个文件(yacc.tab.c,lex.yy.c),那么说明lex&&yacc已经安装配置成功,接下来就好好享受这两个小工具的魅力吧。

 

问题:

1.在控制台输入 flex lex.l时,提示" 'flex' 不是内部命令或外部命令,也不是可运行的程序或批处理文件"则说明环境变量的path设置不正解。

2.在控制台输入 bison yacc.y时,提示“bison : /usr/local/share/bison.simple: No such file or directory ”最有可能是上面“Administrator的用户变量”中变量的名称设置不正确(必须为bison_simple).

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值