欢迎来到天天文库
浏览记录
ID:1960467
大小:52.00 KB
页数:3页
时间:2017-11-14
《实验一词法分析器1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、班级:计算机科学与技术系计算机应用学号:1010411057姓名:吴锐实验一词法分析器一实验目的1.通过本实验加深对词法分析程序的功能及实现方法的理解;2.使用FLex实现词法分析程序。二实验内容下面是简单C语言的词法:1.关键字:elseifintreturnvoidwhile所有的关键字都是保留字,并且必须是小写。2.下面是专用符号:+-*/<<=>>===!==;,()[]{}3.其他标记是ID和NUM,通过下列正则表达式定义:ID=letterletter*NUM=digitdigit*letter=a
2、..
3、z
4、A
5、..
6、Zdigit=0
7、..
8、9小写和
9、大写字母是有区别的。请利用flex生成上述语言的词法分析器。要求写出详细的步骤和相应的flex源程序。三实验步骤1.在linux中安装flex,使用如下命令:Undoapt-lexinstallflex2.用flex词法分析器实现词法分析测试内容:intvoidelsewhilereturni=1+3.9;a3=909/6bcd=4%9-333源程序:%{#include"stdio.h"intlinenum;%}%%"else"showKEYWord();"if"showKEYWord();班级:计算机科学与技术系计算机应用学号:1010411057姓名:吴锐"
10、int"showKEYWord();"return"showKEYWord();"void"showKEYWord();"while"showKEYWord();[]linenum++;[0-9][0-9]*printf("NUM:%s",yytext);[a-zA-Z][a-zA-Z]*printf("ID:%s",yytext);[+-*/<=>>===!==;,)([]{}%]printf("Op:%s",yytext);"."printf("Unknown:%c",yytext[0]);%%show
11、Word(){printf("KEYWord:%s",yytext);}intmain(){linenum=0;yylex();printf("LineCount:%d",linenum);return0;}intyywrap(){return1;}四实验结果班级:计算机科学与技术系计算机应用学号:1010411057姓名:吴锐五实验内容中遇到的问题、解决方法和体会。Lex(LexicalAnalyzar 词法分析生成器)是Unix下十分重要的词法分析工具。经常用于语言分析,公式编译等广泛领域。本实验加深对词法分析程序的功能及实现方法的理解,同时也在l
12、inux中安装了flex,使用FLex实现词法分析程序。本次实验中遇到的主要问题是flex源文件的编写,对词法的构造和编写理解不深刻,需要在以后的学习中继续努力,此次实验收获颇丰。
此文档下载收益归作者所有