ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:130.10KB ,
资源ID:11096552      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11096552.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理实验报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理实验报告.docx

1、编译原理实验报告编译原理实验报告姓 名: * 班 级: * 学 号: * 指导老师: * 实验一 编译程序的分析与验证1、实验目的: 熟练掌握LR分析表以及编译原理的基本过程,学会分析编译程序。二、实验要求: 理论联系实际,将所学知识用到实处。上机实验,验证老师给的代码的正确性,进而学会怎么写编译程序。三、实验内容:验证自己的文法的正确性,识别文法中的单词、句子、关键字、变量,等等。验证下述程序输出结果的正确性:while (ab) do begin if m=n then a:=a+1 else while k=h do x:=x+2; m:=n+x*(m+y)end#4、程序部分代码:#i

2、nclude stdio.h#include string.h#define ACC -2/*/#define sy_if 0#define sy_then 1#define sy_else 2#define sy_while 3#define sy_begin 4#define sy_do 5#define sy_end 6#define a 7#define semicolon 8#define e 9#define jinghao 10#define S 11#define L 12#define tempsy 15#define EA 18#define E0 19#define pl

3、us 34#define sub 35#define times 36#define div 37#define becomes 38#define op_and 39#define op_or 40#define op_not 41#define rop 42#define lparent 48#define rparent 49#define ident 56#define intconst 57/*算术表达式的LR分析表*/static int action1149= -1,-1,-1,-1,2,-1,3,-1,1, 4,5,6,7,-1,-1,-1,ACC,-1, -1,-1,-1,-

4、1,2,-1,3,-1,8, 106,106,106,106,-1,106,-1,106,-1, -1,-1,-1,-1,2,-1,3,-1,9, -1,-1,-1,-1,2,-1,3,-1,10, -1,-1,-1,-1,2,-1,3,-1,11, -1,-1,-1,-1,2,-1,3,-1,12, 4,5,6,7,-1,13,-1,-1,-1, 101,101,101,101,-1,101,-1,101,-1, 102,102,102,102,-1,102,-1,102,-1, 103,103,103,103,-1,103,-1,103,-1, 104,104,104,104,-1,104

5、,-1,104,-1, 105,105,105,105,105,105,105,105,-1,;/*布尔表达式的LR分析表*/static int action21611= 1,-1,4,-1,5,-1,-1,-1,13,7,8, -1,2,-1,101,-1,101,101,101,-1,-1,-1, 3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,102,-1,102,102,102,-1,-1,-1, 1,-1,4,-1,5,-1,-1,-1,11,7,8, 1,-1,4,-1,5,-1,-1,-1,6,7,8, -1,-1,-1,104,-1,9,1

6、0,104,-1,-1,-1, 1,-1,4,-1,5,-1,-1,-1,14,7,8, 1,-1,4,-1,5,-1,-1,-1,15,7,8, 105,-1,105,-1,105,-1,-1,-1,-1,-1,-1, 107,-1,107,-1,107,-1,-1,-1,-1,-1,-1, -1,-1,-1,12,-1,9,10,-1,-1,-1,-1, -1,-1,-1,103,-1,103,103,103,-1,-1,-1, -1,-1,-1,-1,-1,9,10,ACC,-1,-1,-1, -1,-1,-1,106,-1,9,10,106,-1,-1,-1, -1,-1,-1,108

7、,-1,9,10,108,-1,-1,-1;/*从文件读一行到缓冲区*/readline() char ch1; pline=line; ch1=fgetc(cfile); while(ch1!=n)&(ch1!=EOF) *pline=ch1; pline+; ch1=fgetc(cfile); *pline=0; pline=line;/*生成四元式*/gen(char op1,struct aa arg11,struct aa arg22,int result1) strcpy(fexpnxq.op,op1); fexpnxq.arg1.sy1=arg11.sy1; fexpnxq.ar

8、g1.pos=arg11.pos; fexpnxq.arg2.sy1=arg22.sy1; fexpnxq.arg2.pos=arg22.pos; fexpnxq.result=result1; nxq+; return nxq-1;5、运行结果截图:6、学习体会: 上课的时候,编译原理有很多地方不明白,在学习完了后对各个方面的知识精华不是不了解,通过本次实验后,我渐渐熟悉了编译程序的原理,对编译程序处理过程有了更清晰的认识,程序在词法分析,语法分析语义分析,代码生成都有了更清楚的体会,词法分析的步骤,状态栈加工过程的详细内容,以及这之中四元式的产生分析以及归约的一些内容。 实验二 算术表达式

9、的扩充一、 实验目的:学会推到分析表,扩充算术表达式。即:将原来的扩展成、。二、 实验要求:参照算术表达式LR分析表的设计方法,设计扩充后的算术表达式LR分析表,并对原语义加工程序进行修改,加入新添加的内容。三、 实验内容:算术表达式文法扩充如下: EE+E|E-E|E*E|E/E|(E)|i试根据该文法添加单词“-”、“/”的内部定义以及重新设计LR分析表,并修改语义加工程序,最后验证修改的结果。四、程序修改部分代码:#include stdio.h#include string.h#define ACC -2/*/#define sy_if 0#define sy_then 1#defin

10、e sy_else 2#define sy_while 3#define sy_begin 4#define sy_do 5#define sy_end 6#define a 7#define semicolon 8#define e 9#define jinghao 10#define S 11#define L 12#define tempsy 15#define EA 18#define E0 19#define plus 34#define minus 35 /增加的#define times 36#define div 37 /增加的#define becomes 38#define

11、 op_and 39#define op_or 40#define op_not 41#define rop 42/#define sy_for 43 /addfor#define lparent 48#define rparent 49#define ident 56#define intconst 57/*/*算术表达式的LR分析表*/static int action1149= /修改33,-1,-1,-1,-1,2,-1,-1,1,-1,4,5,6,7,-1,-1,ACC,-1,3,-1,-1,-1,-1,2,-1,-1,8,-1,106,106,106,106,-1,106,106,

12、-1,3,-1,-1,-1,-1,2,-1,-1,9,3,-1,-1,-1,-1,2,-1,-1,10,3,-1,-1,-1,-1,2,-1,-1,11,3,-1,-1,-1,-1,2,-1,-1,12,-1,4,5,6,7,-1,13,-1,-1,-1,101,101,6,7,-1,101,101,-1,-1,102,102,6,7,-1,102,102,-1,-1,103,103,103,103,-1,103,103,-1,-1,104,104,104,104,-1,104,104,-1,-1,105,105,105,105,-1,105,105,-1;case +: bufcount.s

13、y1=plus; count+; break; case -: /增加的 bufcount.sy1=minus; count+; break; case *: bufcount.sy1=times; count+; break; case /: /增加的 bufcount.sy1=div; count+; break; case : readch(); if(ch=) bufcount.sy1=becomes; count+; break; case =: bufcount.sy1=rop; bufcount.pos=5; count+; break; case ;: bufcount.sy1

14、=semicolon; count+; break; change1(int chan) / switch(chan) case ident: case intconst:return 0; case plus:return 1; case minus:return 2;/added case times:return 3; case div:return 4; /added case lparent:return 5; case rparent:return 6; case jinghao:return 7; case tempsy:return 8; switch(lr1) case 10

15、0:break; /S-E case 101:E.pos=newtemp(); /E-E+E gen(+,sstackssp-2,sstackssp,E.pos+100); ssp=ssp-2; sstackssp.sy1=tempsy; sstackssp.pos=E.pos; sp1=sp1-3; break; case 102: E.pos=newtemp();/E-E-E gen(-,sstackssp-2,sstackssp,E.pos+100); ssp=ssp-2; sstackssp.sy1=tempsy; sstackssp.pos=E.pos; sp1=sp1-3; bre

16、ak; case 103:E.pos=newtemp();/E-E*E gen(*,sstackssp-2,sstackssp,E.pos+100); ssp=ssp-2; sstackssp.sy1=tempsy; sstackssp.pos=E.pos; sp1=sp1-3; break; case 104: E.pos=newtemp();/E-E/E gen(/,sstackssp-2,sstackssp,E.pos+100); ssp=ssp-2; sstackssp.sy1=tempsy; sstackssp.pos=E.pos; sp1=sp1-3; break; case 10

17、5:E.pos=sstackssp-1.pos;/E-(E) ssp=ssp-2; sstackssp.sy1=tempsy; sstackssp.pos=E.pos; sp1=sp1-3; break; case 106:E.pos=sstackssp.pos;/E-i sp1-; break; n1.sy1=tempsy; n1.pos=E.pos; lrparse1(num); 验证程序:增加了减和除while (ab) do begin if m=n then a:=a-1 else while k=h do x:=x+2; m:=n+x/(m+y)end#五、程序运行结果截图: 6、实验心得体会: 经过几次编译原理实验的课程,在李艳老师的指导下,我顺利完成了课程设计。也是通过这次,感觉收获非常多,编译原理工作的基本过程和其各阶段所需要完成的任务。书本上的知识晦涩难懂,实验让其逐渐明了,它让我把计算机科学与技术之间的许多个学科融会贯通,原本已经逐渐忘记的C语言,计算机操作系统,以及算法的分析,使我对计算机系统整个体系有了更深刻的认识。理论固然重要,实践才是王道。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1