《编译原理》综合训练实习报告

上传人:ni****g 文档编号:487323647 上传时间:2024-01-21 格式:DOC 页数:15 大小:148KB
返回 下载 相关 举报
《编译原理》综合训练实习报告_第1页
第1页 / 共15页
《编译原理》综合训练实习报告_第2页
第2页 / 共15页
《编译原理》综合训练实习报告_第3页
第3页 / 共15页
《编译原理》综合训练实习报告_第4页
第4页 / 共15页
《编译原理》综合训练实习报告_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《《编译原理》综合训练实习报告》由会员分享,可在线阅读,更多相关《《编译原理》综合训练实习报告(15页珍藏版)》请在金锄头文库上搜索。

1、西北农林科技大学信息工程学院编译原理综合训练实习报告小组成员姓 名学 号张浩宇2012013332黄彬2012013338郑瑞2012013343王冠2012013347姓名黄彬学号2012013338专业班级软件工程指导教师王美丽实践日期2014年6月30日-7月4日目 录一、综合训练目的与要求1二、综合训练任务描述1三、编译系统设计1五、调试与测试1六、实习日志1七、实习总结1八、附录:核心代码清单1一、综合训练目的与要求本综合训练是软件工程专业重要的实践性环节之一,是在学生学习完编译原理课程后进行的综合练习。本课综合训练的目的和任务:1. 巩固和加深学生对编译原理课程基本知识的理解和掌握

2、;2. 提高抽象思维能力以及加深理解编译系统的原理;3. 掌握利用JavaCC开发编译系统的方法;4. 掌握书写设计与实现编译系统说明文档的能力;5. 提高综合运用算法、程序设计语言、数据结构知识的能力。二、综合训练任务描述根据组长的安排,我主要负责的任务是for循环语句的翻译,包括词法分析,语法分析和语义分析。能够根据单词的构词规则,完成for语言中的单词的解析(词法分析),如果不符合单词的构词规则,请给出错误信息。如果源语言符合单词的词法规则,请输出二元式。在词法分析的基础上,构造for的LL(1)文法,利用JavaCC实现LL(1)文法,判断源语言是否符合MiniC的语法,如果不符合,请

3、给出语法错误信息。在语法分析的基础上,根据属性文法制导翻译,进行语义分析,输出四元式。如果源语言不符合for的语义,请指出错误信息。三、编译系统设计(1)五大类的单词关键字:由程序语言定义的具有固定意义的标识符。标识符:用来表示各种名字,如变量、数组名、过程名等等。常数:类型一般有整型,实型,布尔型等等。运算符:如+、-、*、/等。界符:如逗号,分号,括号,/*/等等(2) LL(1)文法的描述 LL(1)文法满足: a、 文法不含左递归;b、 对于文法中每一个非终结符的各个产生式的候选首符集两两不相交;c、 对文法中的每一个非终结符A,若它存在某个候选首符集包含,则FIRST(A)FOLLO

4、W(A)=(3) for语句语法void forstate() : (fuzhistate()?;(boolbiaodashi()?;(fuzhistate()?) Expression_Blocks()其中,fuzhistate()表示的是赋值语句,也就是for语句的初始化语句,如:i = 0;boolbiaodashi()是表示for语句中的条件判断部分,条件为真则继续循环,为假则跳出循环,如:iN;最后的部分是执行部分,就是当循环成功执行后所伴随的执行,实际上也是一个赋值语句,所以这里用了fuzhistate(),比如说,i+,实际上就是i = i + 1。后面跟?号是表示赋值语句部分可

5、以是空的,for(;)的空循环就是这样的。最后,就是for语句的循环主体,也就是个语句块,其中也可以嵌套各种的语句,包括for本身。四、调试与测试如下是调试过程。图1图1是简单的测试用例,在主函数main()中两个for语句的嵌套。图2图2是上面测试用例的词法分析,如图所示,最前面的序号表示的是输出序号,尖括号中有两部分,第一部分是词法分析分解出来的单词或符号,而剩下部分是对应单词或符号的种别码,每一种单词或符号都有其自己的种类码。就拿常数来说,如,10,0,20等都是常数,他们的种别码都是49。图3图3是相应的for循环的语句的语法树的输出。图4图4是相应的for循环语义分析中的四元式输出。

6、五、实习日志实习日期:2014-6-30主要任务:for语句的语法分析,完成部分词法分析。完成情况:在稿纸上写出了for语句的上下无关文法,添加了关键字的词法分析,标示符的词法分析,数字(也就是常数)词法分析。实习收获:进一步学习了编译原理的知识,加深对文法的理解。实习日期:2014-7-1主要任务:完成for语句的语法分析完成情况:通过javacc完成了for语句的大部分的语法分析,实现输出。实习收获:加深对javacc开发编译器的理解,掌握一些开发技巧。实习日期:2014-7-2主要任务:完善语法分析的部分,并开始语义分析的初步开发。完成情况:完善了语法分析阶段的一些小问题,如调试阶段出现

7、的问题,并对for语句的四元式进行的分析,理清其中的结构和跳转点。实习收获:加强了对四元式的理解,将理论的四元式通过代码实现出来了。实习日期:2014-7-3主要任务:完成for语句的语义分析部分。完成情况:完成了对for语句的语义分析,输出相应的四元式列表。实习收获:对于for循环的跳转点的把握更加准确了,调理清晰。实习日期:2014-7-4主要任务:完成实习论文的撰写和展示ppt的设计。完成情况:部分论文撰写完成了,ppt也完成了。实习收获:论文设计和撰写仍然需要花心思和时间。六、 实习总结通过本次javacc开发MiniC的实习,我们对编译原理课程基本知识的理解和掌握得到了巩固和加深,特

8、比是LL(1)文法的理解,抽象思维能力得到了提高以及编译系统的原理也得到了加深理解;除此之外,我们也掌握利用JavaCC开发编译系统的方法;提高综合运用算法、程序设计语言、数据结构知识的能力。这也从另一个方面反映了我们自身在编写代码开发方面所欠缺的东西特别多,需要学习和提高的方面还有很多。在实践中学习,也要将学习应用到实践中。七、附录:核心代码清单我的部分核心代码:void forstate() : int jump = 0, jump1 = 0; int quad = 0; int quad1 = 0; ( ( fuzhistate() quad = Snode.innerIdSeqen +

9、 1; )? ; ( boolbiaodashi() )? ; ( fuzhistate() quad1 = Snode.innerIdSeqen + 1; )? ) Expression_Blocks() Slist.addSnode(new Snode(J, _, _, quad); Snode backFill = Slist.get(jump - 1); String nxq = + (Snode.innerIdSeqen + 1); backFill.setResult(nxq); void fuzhistate() : Token f, node = null; Token m;

10、String middle; String newTemp1, newTemp2; int D = 0; String IDE = null; String s; ( f = ( node = D+; )* ( ( = middle = biaodashi() qtTable.addSnode(new Snode(=, middle, _, f.image); ) | ( ( qtTable.addSnode(new Snode(+, f.image, 1, f.image); ) | ( qtTable.addSnode(new Snode(-, f.image, 1, f.image);

11、) ) ) IDE = f.image; if (!myNodeList.isExientence(IDE) s = 变量 + IDE + 未声明,错误 + n; / System.out.println(s); S += s; s = null; /System.exit(- 1); )| ( m = f = qtTable.addSnode(new Snode(+, f.image, 1, f.image); IDE = f.image; if (!myNodeList.isExientence(IDE) s = 变量 + IDE + 未声明,错误 + n; / System.out.pr

12、intln(s); S += s; s = null; /System.exit(- 1); )| ( m = f = qtTable.addSnode(new Snode(-, f.image, 1, f.image); IDE = f.image; if (!myNodeList.isExientence(IDE) s = 变量 + IDE + 未声明,错误 + n; / System.out.println(s); S += s; s = null; /System.exit(- 1); )void boolbiaodashi() : andboolbiaodashi() ( andboolbiaodashi() )*void andboolbiaodashi() : notboolbiaodashi() ( notboolbi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号