080100190-编译方法实验指导书

080100190-编译方法实验指导书

ID:45754433

大小:124.00 KB

页数:19页

时间:2019-11-17

080100190-编译方法实验指导书_第1页
080100190-编译方法实验指导书_第2页
080100190-编译方法实验指导书_第3页
080100190-编译方法实验指导书_第4页
080100190-编译方法实验指导书_第5页
资源描述:

《080100190-编译方法实验指导书》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译方法实验指导书东北大学软件学院二零零九年九月前言2实验要求3实验1扫描器设计(4学时)41.实验目的42.实验类型43.实验棊本要求44.预习内容45.实验基本步骤46.实验思考题13实验2屮问代码生成器设计(4学时)141.实验目的142.实验类型143.实验基本要求144.预习内容145.实验基本步骤146.实验思考题16参考资料17-IX.刖§《编译方法》课程的理论知识较抽象,但同时乂是一门实践性很强的专业必修课。故本课程的教学注重理论教学与实践教学的紧密结合,让学牛从上机实践中深入领会抽象的理论知识。上机实验的目的是:(1)

2、加深对讲授内容的理解,了解编译程序的基本结构,学习并拿握编译程序的相关实现技术:如设计扫描器的自动机、设计翻译及生成Token的算法;设计中间代码生成器,熟悉算术表达式的语法分析与中间代码牛成原理。(2)练习上机调试程序,加强学牛发现及解决问题的能力。实验要求1.实验时,按照《编译方法实验指导书》的内容完成两个必做题目。实验后,应整理出实验报告,实验报告应包括以下内容:(1)实验目的(2)实验内容(3)实验原理及基本步骤:实验使用的口动机的设计,实验使用哪种语法分析方法等(4)数据结构及算法设计(5)关键代码分析(带注释)及运行结杲(6

3、)总结与分析:对运行情况所作的分析,以及本次调试程序所取得的经验。如果程序未能通过,则应分析其原因(7)实验思考题2.实验考核标准:(1)原理分析正确;10%。(2)数据结构及程序总体设计止确,并有一定的创新性;30%。(3)程序运行结果正确;20%。(1)上机报告书写认真,内容完整,有相应的实验分析;20%。(2)实验过程中,具有严谨的学习态度,认真、踏实、一丝不苟的科学作风;实验1扫描器的设计(4学时)1•实验目的熟悉并实现一个扫描器(词法分析程序)。2.实验类型设计性。3•实验基本要求(1)设计扫描器的有限自动机(识别器);(2)

4、设计翻译、生成Token的算法(翻译器);(3)编写代码并上机调试运行通过。•输入——源程序文件或源程序字符串;•输出相应的Token序列;关键字表和界符表;符号表和常数表;4•预习内容(1)有限自动机原理(2)词法分析器原理5•实验基本步骤单扫描器oken(1)有限自动机的状态转换图其中:d为数字,1为字母,b为界符,-1代农其它符号(如在状态8处遇到了非字母或数字的其它符号,会变换到状态12)。状态转换矩阵:d1234567891011121314152891523511114451111767711118812101413bEle

5、+1-1⑵关键字表和界符表Program♦Begin•■End(Var)WhileDo■—Repeat+Until-For*To/If>Then>=Else==<<=⑶数据设计:①状态转换矩阵:intaut[10][7]={2,0,0,0,8,9,15,2,3,5,11,0,0,11,4,0,0,0,0,0,0,4,0,5,11,0,0,11,7,0,0,6,0,0,0,7,0,0,0,0,0,0,7,0,0,11,0,0,11,&0,0,0,&0,12,0,0,0,0,0,10,14,0,0,0,0,0,0,13};②关键字表:cha

6、rkeywords[30][12]={“program舄'begin”,''end:'var'y'whil&'rdo”,"repeat","until","for","to","if',"then'T'else'',〃表中存有源程序中的标识符③符号表:charID[50][12];④常数表:floatC[20];⑤其它变量:structtokenints;intnpmet;〃当前状态〃尾数值,指数值,小数位数,指数符号,//Token结构//Token数组{intcode;intvalue};structtokentok[100];类型

7、floatnum;charw[50J;inti;〃常数值//源程序缓冲区〃源程序指针,当前字符为w[i]charstrTOKEN[12];〃当前已经识别出的单词(4)语义动作:•qi:n=m=p=t=0;e=l;num=0;其它变量初始化;•q2:n=10*n+(w[i]);•q3:t=l;•q4:n=10*n+(w[ij);m++;•q5:t=i;•q6:iflthene=-l;•q7:p=10*p+(w[i]);•qs:将w[i]中的符号拼接到strTOKEN的尾部;•q9:将w[i]中的符号拼接到strTOKEN的尾部;•qw:将

8、w[i]屮的符号拼接到strTOKEN的尾部;〃标识符的编码为1,值为其在常数表小的位置;常数的编码为2,值为其在符号表屮的位置;关键字和界符的编码为其在关键字表中的位置,值为0。•qn:num=n*10e

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

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

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