Lex 简明教程(一 示例)

来源:互联网 发布:滤波反投影算法matlab 编辑:程序博客网 时间:2024/05/21 09:44

关于lex的理论就不说了,先用一个例子说明lex如何使用。以下均在Ubuntu7.04下完成。

首先安装好C的开发环境。

sudoapt-get install build-essential.

再装好flex(Linux下的lex).

sudoapt-get install flex

执行下面命令:

flex--version

如果显示flex 2.5.33则说明flex已经安装好。

首先写一个简单的flex程序。flex1.l

%{

#include<stdio.h>

intk;

%}

%%

[0-9]+ {

k =atoi(yytext);

if(k%7 == 0)

printf("%d", k+3);

else

printf("%d",k);

}

%%

这个程序把遇到是7的倍数加3以后输出,如果不是3的倍数,则原样输出。

用这个命令将其转化成C程序:

yin@yin-desktop:~/Desktop/code$flex lex1.l

这样目录下会生成一个lex.yy.c文件,这是一个C程序。

执行:

yin@yin-desktop:~/Desktop/code$gcc -c lex.yy.c

编译这个文件,会生成lex.yy.o 文件。

执行这个命令,使之与lex库连接,生成可执行文件parser

yin@yin-desktop:~/Desktop/code$gcc -o parser lex.yy.o -ll

下面创立一个测试文件data.txt

11

14d

snsdg

21

33

执行程序:

yin@yin-desktop:~/Desktop/code$./parser<data.txt

得到输出:

11

17d

snsdg

24

33




原创粉丝点击