1、班级: 计算机科学与技术系计算机应用 学号: 1010411057 姓名: 吴锐 实验一 词法分析器一 实验目的 1通过本实验加深对词法分析程序的功能及实现方法的理解;2使用 FLex 实现词法分析程序。二 实验内容下面是简单C语言的词法:1.关键字:else if int return void while所有的关键字都是保留字,并且必须是小写。2. 下面是专用符号:+ - * / = = != = ; , ( ) 3. 其他标记是ID 和NUM ,通过下列正则表达式定义:ID = letter letter*NUM = digit digit*letter = a|z|A|Zdigit =
2、 0|9小写和大写字母是有区别的。请利用 flex 生成上述语言的词法分析器。要求写出详细的步骤和相应的 flex 源程序。三 实验步骤1.在 linux 中安装 flex,使用如下命令:Undo apt-lex install flex 2.用 flex 词法分析器实现词法分析测试内容:int voidelsewhilereturni=1+3.9;a3=909/6bcd=4%9-333源程序:%#include “stdio.h“int linenum;%“else“ showKEYWord();“if“ showKEYWord();班级: 计算机科学与技术系计算机应用 学号: 101041
3、1057 姓名: 吴锐 “int“ showKEYWord();“return“ showKEYWord();“void“ showKEYWord();“while“ showKEYWord();n linenum+;0-90-9* printf(“NUM : %sn“,yytext);a-zA-Za-zA-Z* printf(“ID : %sn“,yytext);+-*/=!=;,)(% printf(“Op : %sn“,yytext);“.“ printf(“Unknown : %cn“,yytext0);%showWord()printf(“KEYWord : %sn“,yytext)
4、;int main()linenum=0;yylex();printf(“nLine Count: %dn“,linenum);return 0;int yywrap()return 1;四 实验结果班级: 计算机科学与技术系计算机应用 学号: 1010411057 姓名: 吴锐 五 实验内容中遇到的问题、解决方法和体会。Lex(Lexical Analyzar 词法分析生成器)是 Unix 下十分重要的词法分析工具。经常用于语言分析,公式编译等广泛领域。本实验加深对词法分析程序的功能及实现方法的理解,同时也在 linux 中安装了 flex,使用 FLex 实现词法分析程序。本次实验中遇到的主要问题是 flex 源文件的编写,对词法的构造和编写理解不深刻,需要在以后的学习中继续努力,此次实验收获颇丰。