编译原理实验报告compile使用slex自动生成词法分析程序.doc

编译原理实验报告compile使用slex自动生成词法分析程序.doc

编译原理实验报告compile使用slex自动生成词法分析程序

编译原理实验报告 —使用SLex自动生成词法分析程序 实验1.3 使用SLex自动生成词法分析程序 一、实验目的 掌握词法分析程序自动生成系统LEX的原理与过程。 熟悉LEX源程序语法。 学习使用自动构造软件Slex。 分析自动生成的词法分析程序结构。 二、实验平台 Windows + Slex 三、实验内容 编写LEX源程序, 分别实现以下功能 将输入文件中的小写字母转换成大写字母,并输出到屏幕上。 识别出文件中的标识符, 然后将识别出的标识符输出到屏幕上。 将输入串中所有能被7整除的整数加上3, 将结果输出到屏幕上. 其余部分照原样输出. 四、实验步骤 一、在cygwin\home\Administrator文件夹下,创建一个1.txt文件,构造lex源程序,然后将1.txt改成1.lex.代码如下: %{ #include stdio.h #include string.h #include stdlib.h %} %% [a-z] printf(%c,yytext[0]+A-a); %% main() { yylex(); return 0; } int yywrap() {return 1; } 2、运行Cygwin 1)在Dom环境下输入:flex 1.lex,系统自动生成lex.yy.c 2)输入gcc.lex.yy.c,系统自动生成a.exe. 3)输入./ a.exe,可运行a.exe文件。 3、运行结果 二.同理编写2.lex.代码如下 %{ #include stdio.h #include stdlib.h %} %% [a-zA-Z][a-zA-Z0-9]* { printf(%s\n,yytext); } %% main() { yylex(); return 0; } int yywrap() {return 1; } 2、运行Cygwin 1)在Dom环境下输入:flex 2.lex,系统自动生成lex.yy.c 2)输入gcc.lex.yy.c,系统自动生成a.exe. 3)输入./ a.exe,可运行a.exe文件。 3、运行结果 三.同理编写3.lex.代码如下 %{ #include stdio.h #include stdlib.h int a; %} %% [0-9][0-9]* { a=atoi(yytext); if(a%7==0) printf(%d,a+3); else printf(%d,a); } %% main() { yylex(); return 0; } int yywrap() {return 1; } 2、运行Cygwin 1)在Dom环境下输入:flex 3.lex,系统自动生成lex.yy.c 2)输入gcc.lex.yy.c,系统自动生成a.exe. 3)输入./ a.exe,可运行a.exe文件。 3、运行结果 五、实验心得 本次实验我们首次在Cygwin环境下的源代码的编写,对于第二题是识别出文件中的标识符, 然后将识别出的标识符输出到屏幕上,实际我们的代码存在缺陷,当输入的是界符等同样可以输出,我们现在正考虑先定义五种字符,判断是标识符后在输出。第二我们尝试把三套题像C程序一样可以嵌套在一起,在一个程序中实现,但最终没有解决。 1 1

文档评论(0)

1亿VIP精品文档

相关文档