编译原理完整解析

编译原理完整解析

ID:79107396

大小:393.75 KB

页数:26页

时间:2022-02-09

编译原理完整解析_第1页
编译原理完整解析_第2页
编译原理完整解析_第3页
编译原理完整解析_第4页
编译原理完整解析_第5页
编译原理完整解析_第6页
编译原理完整解析_第7页
编译原理完整解析_第8页
编译原理完整解析_第9页
编译原理完整解析_第10页
资源描述:

《编译原理完整解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、天津大学仁爱学院编译原理实验报告计算机科学与技术系学生姓名:王玲玲指导教师:孙林娟班级:计科四班实验日期:2015年12月22日实验名称:词法分析器的实现过程―实名模拟词法分析器的转化过程二、实验目的1、学习各个词法分析器的装换过程2、掌握状态转换图的画法3、合并各个状态转换图,使之合并成完整的状态转换图。4、根据状态装换图,用代码实现词法分析器的编译过程设计、编制、调制一个词法分析子程序-识别单词,加深对词法分析原理的理解。三、实验工具VC++6.0四、实验描述对不同的关键字,表示符,无符号整常数

2、,运算符或分解符进行区分。1、用状态装画图,表示每一项固定符号2、合并所有的状态转换,完成完整的状态装换图3、通过状态转换图,写出相应的代码4、测试代码正确性程序实现的是一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字,标识符,常数,运算符,分隔符五大类,并依次输出各个单词的内部编码及单词符号自身值°五、设计思想设计词法分析器的过程中,虽然没有实际将所有的状态转换图建立,但是所用的思想是根据状态转换表实现对单词的识别,首先构造一个保留字表,然后,没输入一个字符就检测应该进

3、入什么状态。根据不同的装换识别单词,六、实验过程实验1:I、C语言子集⑴关键字:beginifthenwhiledoend所有关键字都是小写©⑵运算符和界符::=+-♦/<<=<>>>==;()#(3)其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义:ID=letter(letterdigit)NUM=digitdigit(4)空格由空白、制表符和换行符组成°空格一般用来分隔ID、NUM,运算符、界符和关键字,词法分析阶段通常被忽略。2、各种单词符号对应的种别码单词符号种别码单词符号

4、种别码begin1••17if2•一•一18then3>20while4<>21do5<=22end6<23letter(letterdigit)10>=24digitdigit11—25.13926/14(27+15)28.16#0单词符号种别码begin1•■17if2•18then3>20while4<>21do5<=22end6<23letter(letterdigit)digitdigit11=13/26/14(27+15)28-16#0单词符号种别码10>=24253、词法分析程序的功能

5、输入:所给文法的源程序字符串,输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码:token为存放的单词自身字符串;sum为整型常数。4、状态装换图-℃—<•■,、-M®15、实验方法、步骤(或:⑴程序代码#include#include#includecharprog[80],token[8];charch;intsyn/p,m=0,n,rowsum=0;charrwtab[6]={"begin,,/,,if

6、,voidscaner()◎一程序代码或操作过程)/,,then,7,while,,/,,do,,/,,endH};for(n=0;n<8;n++)token[n]=NULL;ch=prog[p++];while(ch==')(ch=prog[p];P++;)if((ch>='a,&&ch<=,zl)(ch>=IA,&&ch<='Z"))(m=0;while((ch>=,0,&&ch<=,9,)11(ch>=,a,&&ch<=,z,)11(ch>=,A,&&ch<=lZ,))(token[m++]=

7、ch;ch=prog[p++];}token[m++]=l;P-;syn=10;for(n=0;n<6;n++)if(strcmp(token,rwtab[n])==0){syn=n+l;break;))elseif((ch>=,0,&&ch<=,9,))sum=O;while((ch>=<0,&&ch<=,9,)){sum=sum10+ch-,0,;ch=prog[p++];))P-;syn=ll;if(sum>32767)syn=-l;)elseswitch(ch){case,<,:m=0;

8、token[m++]=ch;ch=prog[p++];if(ch==>>')(syn=21;token[m++]=ch;)elseif(ch=='=,)syn=22;token[m++]=ch;)else{syn=23;P-;)break;case'>,:m=0;token[m++]=ch;ch=prog[p++];if(ch==i=,)(syn=24;token[m++]=ch;)else(syn=20;P-;)break;case,:,:m=0;token[m++

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。