词法分析器的构造南邮2016编译原理实验一报告_第1页
词法分析器的构造南邮2016编译原理实验一报告_第2页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告(2015/2016学年第二学期)课程名称编译原理实验名称词法分析器的构造实验时间2016年4月29日指导单位计算机软件教学中心指导教师学生姓名wujun班级学号学院(系)计算机学院、软件专业计算机科学与技术学院实验报告实验名称词法分析器的构造指导教师实验类型设计实验学时4实验时间一、实验目的和要求1、实验目的:设计、编制、调试一个词法分析程序,对单词进行识别和编码,加深对词法分析原理的理解。2、实验要求:1)、允许用户自己输入源程序并保存为文件;2)、系统能够输出经过预处理后的源程序(去掉注释、换行、空格等);3)、能够将该源程序中所有的单词根据其所属类型(整数、保留字、运算符、标识

2、符等。定义的类C语言中的标识符只能以字母或下划线开头)进行归类显示,例如:识别保留字:if、int、for、while、do、return、break、continue等,其他的都识别为标识符;常数为无符号整形数;运算符包括:+、-、*、/、=、=、=、!=等;分隔符包括:,、;、(、)等;4)、实现文件的读取操作,而不是将文本以字符串形式预存于程序中。文本内谷为待分析的类C语言程序。、实验环境(实验设备)硬件:计算机软件:VisualC+二、实验原理及内容1实验内容:设计并实现一个词法分析器,实现对指定位置的类C语言源程序文本文件的读取,并能够对该源程序中的所有单词进行分类,指出其所属类型,

3、实现简单的词法分析操作。例如下面为一段C语言源程序:main()inta,b;a=10;b=a+20;要求输出如下:(2,'main')(5,'(')(5,')')(5,')')(5,')')(5,')')'')int10')'20')2、实验原理状态转换图(5,(1,(2,(5,(2,(5,(2,(4,(3,(5,(2,(4,(2,(4,(3,(5,(5,0运算符运算符非运鼻符分隔符无法识别宇符3、实验代码:实验代码:#inelude<>#ine

4、lude<>#inelude<fstream>#inelude<>#inelude<>#inelude<>struetChar|ch=':'|ch='”|ch='"'|ch=T|ch=T|ch=#|ch='_')returntrue;returnfalse;疵母或数字<7非宇毋或非数宇数字非畔单目运算符二©=0)returntrue;returnfalse;/预处理去掉注释、换行、空格等voidSeanner(chars,chara)inti=0,j=0

5、,k=strlen(s);for(i;i<k;i+)if(si='/'&&si+1='/')doi+;while(si!='n');i-;elseif(si='/'&&si+1='*')doi+;while(si!='/'|si-1!='*');continue;elseif(si='t'|si='n'|si='')aj+=''elseaj+=si;"<<end

6、l;"<<endl;coutvv"n系统经过预处理后的输出(去掉注释和换行):cout<vavv"nn"coutvv"系统经过预处理后的输出(去掉注释、换行、空格等)for(i=0;i<strlen(a);i+)if(ai='')continue;elsecout<<ai;cout«endl«endl«endl;voidHandle(chars)/词法分析charch;for(intj=0;j<strlen(s);j+)charword20='0&#

7、39;inti=0;ch=sj;if(ch='')continue;elseif(lsLetter(ch)dowordi+=ch;ch=s+j;while(lsLetter(ch)|lsDigit(ch)|ch='_');j-;wordi='0'if(lsKeyWord(word)coutvv"(1,”'v<wordvv"')"vvendl;elsecout<v"(2,'"vvwordvv"')"vvendl;elseif(lsDig

8、it(ch)dowordi+=ch;ch=s+j;while(lsDigit(ch);j-;wordi='0'cout<<"(3,'"<<word<<"')"<<endl;elseif(lsSeparator(ch)word0=ch;cout<<"(5,'"<<word<<"')"<<endl;elseword0=ch;if(word0='+'|word0=

9、'-'|word0='>'|word0='v'|word0='&'|word0='|')if(sj+1=word0|sj+1='=')word1=s+j;cout<v"(4,'"vvwordvv"')"vvendl;elsecout<v"(4,'"vvwordvv"')"vvendl;elseif(word0='='|word0='*

10、9;|word0='/'|word0='!'|word0='%'|word0=z)if(sj+1='=')word1=s+j;cout<v"(4,'"vvwordvv"')"vvendl;elsecout<v"(4,'"vvwordvv"')"vvendl;elseif(word0='')if(sj+1='n'|sj+1='t'|sj+1=''|

11、sj+1='0')word1=s+j;cout<v"(4,'"vvwordvv"')"vvendl;elsecout<v"(4,'"vvwordvv"')"vvendl;elsecout<<"(无法识别字符,'"<<word<<"')"<<endl;cout«"n"intmain()inti;charb=32,ch;FILE

12、*fp;doi=0;chars10000;chara10000='0'fp=fopen("","rb+");if(fp=NULL)cout<<"Cannotcreatefile"<<endl;exit(0);fseek(fp,0,2);cout«"Pleaseinputyoucode(endwithtwo”):"endl;doch=getchar();si+=ch;if(ch='n'|ch='t')for(intj=0;j<4;

13、j+)fputc(b,fp);fputc(ch,fp);while(si-1!=''|si-2!='');si='0'Scanner(s,a);cout«"词法分析如下:"<<endl;Handle(a);fclose(fp);while(true);return0;4、实验测试和截图(1)、测试一截图输入代码:Pleaseinputyoucode(endwithtwo*T7):intmainOint為b;/定义齐b彳+=10;b-a十12;舛求b的值return0;)?输出结果:系统经HfOi理后的输出

14、(去掉注释和换行):intmainOinta,b;a+-10;b二a+12;return,0;.系统经U预处理冶的输岀(去掉注释、换行、空格等):intminO(inta,b;a+=10;b-a+12!returnO!词袪分析如下(1,'int')(1,Jmail?)(5,JC)(5QJ(5,1f)(1;曲詁);)(2,'b')(5/;)(2Ja)g7心>(3,'10')G':1、?b1)(4,,、(2.1)(4,1+')(3,'12J)6,5),(1,?return7)(3,'0)(5/r)(5,丁)(2)

15、测试二截图输入代码:Pleaseiru)utyoucode(endwithtwo*7*):do(ch二setchar():si+-ch;if(eh二二't?|eh=3t?)for<intj=0fj<4.j卄)ft>utc(b,fp);fputc(ch?Ip);while(si-l!=?|si-2!=);?输出结果:廊统经过预处理后的输出(去4卓注释和换彳亍)doch=setcha.rO:si+=ch;if(ch=1n?|ch=t')for(intj=0,j<4;j+)£putc(bjfp);fputc(ch,fp);JiYhile(si-l!=

16、?1|sLi-2!=?;系统经过预处理后的領出(去韩注释冷换常空师等八.d.och.=setchar();sLi=ch;if(ch=?n|ch=?t")for(intj=0;j<4;j+)fputc(b,fp);fputctch,fp);while(si-l!=>,|si-2!=,T);诃法分析如下:(l/do1)(5/)(2,1ch1)他V)(2)1getchar*)(5,1(')(5,)打)(2,')(5/f)(2/13(4,,“)(5/V)他Y)(2f'注)(5J)(1/if)(5/C)(2,'ch1)(i,f=')(5,)(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论