《编译原理课程设计》读书工程方案

2024-07-23

《编译原理课程设计》读书工程方案(精选10篇)

《编译原理课程设计》读书工程方案 第1篇

“编译原理课程设计”读书工程环节方案

一、目的与要求

“编译原理”是计算机科学技术专业与软件工程专业的必修课程,是一门理论性和实践性都很强的课程。为了配合《编译原理》课程的教学更全面的理解理论知识,提高实践能力,计算机科学与技术专业以及软件工程专业开设了实践类必修课程-“编译原理课程设计”。通过设计一个小型编译器,更深刻地领会编译程序的基本概念、基本原理和实现方法,培养学生的实际工作能力,加深对课堂教学内容的理解,从而具有初步开发系统软件和应用软件的实际能力。将读书环节融入教学内容的设计中,做好理论教学、实践教学、读书环节三者有机结合,可使学生进一步了解课程理论知识,拓宽视野,加深对本专业相关课程的理解。在读书工程环节,学生可以通过阅读相关的参考书目,对课程设计的五个主要部分:构造识别符号串的自动机、词法分析程序的构造、语法分析程序的构造、中间语言的生成程序、编译程序的代码生成程序中的任意一个题目进行深入的分析探讨和总结,并提交相应的读书工程报告。

二、考核方式

通过提交读书报告进行考核,该部分成绩要占课程总成绩的15%。字数不少于5000字。

三、参考书目

书目名称:编译原理(第2版)作 者:张素琴 吕映芝 出 版 社:清华大学出版社 出版时间:2005年02月

内容提要:本书介绍编译系统的一般构造原理、基本实现技术和一些自动构造工具。主要由语言基础知识、词法分析、语法分析、中间代码生成、代码优化、目标代码生成、符号表的构造和运行时存储空间的组织等部分组成。

书中在介绍编译程序构造基本原理的同时引入“PL/0语言的编译程序”结构及文本,还引入了LEX、YACC使用方法与实例。

本书是高等院校计算机科学与技术专业的本科生教材,也可作为教师、研究生软件工程技术人员的参考书。书目名称:编译原理(第2版)原书名: Compilers:Principles,Techniques,and Tools 原出版社: Pearson Education 作者: [美]Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman 译者: 李建中 姜守旭 出版社:机械工业出版社 出版日期:2003 年9月

内容提要:本书深入讨论了编译器设计的重要主题,包括词法分析、语法分析、语法制导分析、类型检查、运行环境、中间代码生成、代码生成、代码优化等,并在最后两章中讨论了实现编译器的一些编程问题和几个编译器实例,每章都提供了大量的练习和参考文献。本书从介绍编译的原理性概念开始,然后通过构建一个简单的一遍编译器来逐一解释这些概念。本书是编译原理课程的经典教材,作者曾多次使用本书的内容在贝尔实验室、哥伦比亚大学、普林斯顿大学和斯坦福大学向本科生和研究生讲授初等及高等编译课程。本书作者alfred v.aho、ravi sethi和jeffrey d.ullman是世界著名的计算机 科学家,他们在计算机科学理论、数据库等很多领域都做出了杰出贡献。本书 是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。本书一 直被世界各地的著名高等院校和科研机构(如贝尔实验室、哥伦比亚大学、普 林斯顿大学和斯坦福大学等)广泛用作本科生和研究生编译原理与技术课程的 教材,本书对我国计算机教育界也具有重大影响。书中深入讨论了编译器设计的重要主题,包括词法分析、语法分析、语法制 导分析、类型检查、运行环境、中间代码生成、代码生成、代码优化等,并在 最后两章中讨论了实现编译器的一些编程问题和几个编译器实例,而且每章都 提供了大量的练习和参考文献。书目名称:编译原理及实践

作者:(美)Kenneth C.Louden著,冯博琴,冯岚等译 出版社:机械工业出版社 版次:2000年3月第1版

内容提要:本书结合对现代编译器设计理论的详细研究,完整描述了一个可运行的小规模语言编译器(包括源代码)。本书反映了作者的这样一些观点:不掌握理论就不会理解实际的编译器设计;而对大学生来说,看不到理论在实际中的应用就不会真正地理解理论。把本书讨论的概念统一起来,就是一个完整的可运行的编译器,它使用每一章所讨论的技术进行开发,用C语言写成。每章最后有大量的练习,使学生的注意力集中在编程问题上。书目名称:编译程序构造原理和实现技术 作者:金成植

出版社:高等教育出版社

出版时间:2000年7月第1版 2004年4月第6次印刷

内容提要:本书经教育部高等学校计算机教学指导委员会推荐,列入“九五”国家级重点教材建设项目和“面向21世纪课程教材”。

本书是作者在其编著的《编译原理与实现》基础上编写的,结合了多年的教学经验,是一本比较成功的教材。它主要以Pascal类语言为模型,介绍过程式语言的编译程序构造原理和实现技术。本书共分十章,主要包括词法分析和语法分析的理论与技术,语义分析原理与技术,运行时的存储分配原则,动作文法和属性文法技术,中间代码生成、中间代码优化和目标代码生成的原理与技术等。本书的特点是概念清晰,层次分明,循序渐进,整体性强,便于教学,并反映当前的实用技术。

书目名称:编译原理(第2版)作者:(美)阿霍等著,赵建华等译 出版社:机械工业出版社 出版时间:2009-1-1 内容提要:本书是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。本书上一版自1986年出版以来,被世界各地的著名高等院校和研究机构(包括美国哥伦比亚大学、斯坦福大学、哈佛大学、普林斯顿大学、贝尔实验室)作为本科生和研究生的编译原理课程的教材。该书对我国高等计算机教育领域也产生了重大影响。第2版对每一章都进行了全面的修订,以反映自上一版出版20多年来软件工程。程序设计语言和计算机体系结构方面的发展对编译技术的影响。本书全面介绍了编译器的设计,深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术,并强调编译技术在软件设计和开发中的广泛应用。每章中都包含大量的习题和丰富的参考文献。并在相关章节中给出大量的实例。书目名称:编译原理课程设计 作 者: 王雷、刘志成、周晶 出 版 社: 机械工业出版社 出版时间: 2005-3-1 内容提要:编译理论和技术作为计算机科学研究和工程应用的基础,受到了广泛的重视。编译原理也是大学计算机专业的必修课程。本书使用优秀的开源java编译器gjc作为编译教学的基础平台,通过分析一个真正实用的现代编译系统,把编译理论应用到实际的工程实践中。全书不仅包括对编译器源代码的分析、对实例的讲解,还在最后给出3个具体的课程设计实验,介绍如何用书本上的编译理论实现一个真正的编译器。使用优秀的开源编译器作为教学平台,系统规模不大,且源程序有着很好的注释。通过详尽的源代码剖析和实例讲解,循序渐进地启发学生完成课程设计。结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实践需要。是一本注重应用的实验教程,因此可以和讲授编译理论的教材配合使用。编译原理是大学计算机专业的必修课程。本书使用优秀的开源java编译器gjc作为编译教学的基础平台,通过分析一个真正实用的现代编译系统,把编译理论应用到实际的工程实践中。全书不仅包括对编译器源代码的分析、对实例的讲解,还在最后给出3个具体的课程设计实验,介绍如何用书本上的编译理论实现一个真正的编译器。本书适合作为大专院校编译原理课程设计的指导用书,相关的从业人员和研究人员也可以从中获得有益的参考。

书目名称:《现代编译程序实现—Java语言》(第二版,英文影印版)原书名: Modern Compiler Implementation in Java,Second Edition 原出版社: Cambridge University Press 作 者:(美)A A.W.Appel等 出 版 社:电子工业出版社 出版时间:2004 年9月 内容提要:,本书是一本编译技术的教程,其特点是注重实现。从学习编译器的结构来掌握理论,并通过编程技术将编译理论融合于实践中。本书介绍了编译器的各个方面,包括词法分析,语法分析,抽象语法,语义行为,中间表示,通过树匹配选择指令,数据流分析,用色图法实现寄存器分配,运行时间系统。本书还讲述了通用的编译器实现技术,包括代码生成、寄存器分配以及大多数书籍未涉及的函数式编程语言和面向对象语言,并用实际的Java类详细说明了编译器各模块间的接口。本书的第一部分——编译器基础,适合作为第一学期编译器设计的入门课程。本书的第二部分ˉ一高级课题,包括面向对象语言和函数式语言的编译技术,无用信息收集,循环优化,静态单赋值表,指令调度以及高速缓冲存储器的分级优化,则适合作为第二学期的课程。本书第二版新增了关于Java和面向对象编程等概念,例如访问模型。本书的一大特色是利用Java子集重新实现了一个编译器项目。该项目包括前端和后端阶段,因此学生可以在一个学期内实现一个完整的编译器。

本书可作为高等院校编译技术课程的教材、教师参考书以及编译技术研究人员的参考资料。

书目名称:《程序设计语言编译原理》(第3版)作 者: 陈火旺 刘春林 谭庆平赵克佳 刘越 出 版 社:国防工业出版社 出版时间:2000年02月

内容提要:本书是在陈火旺、钱家骅、孙永强三位教授编写的《程序设计语言编译原理》的基础上,结合编译技术的最新研究成果和作者多年的教学经验编写而成的。

本书比较全面、系统地介绍了编译程序构造的一般原理和基本实现方法,内容包括词法分析、语法分析、属性文法与语法制导翻译、语义分析与中间代码产生、符号表与运行时存储空间组织、优化与目标代码生成、并行编译技术。与原教材相比,本书将编译技术的最新发展,例如属性文法、面向对象语言的编译技术、并行编译技术、编译程序自动构造工具等内容系统地融合到教材中;在语言背景方面,以C,Pascal替代原教材中的FORTRAN和Algol;并在一些重要的章节中增加了必要的例题,以帮助读者理解和自学。本书可作为高等(理、工)院校计算机科学(或工程)专业的教材,或作为教师、研究生、高年级学生或软件工程技术人员的参考书。书目名称:编译原理 技术与工具(第二版)(英文版)原书名: Compilers: Principles, Techniques, and Tools(2nd Edition)原出版社: Addison Wesley 作 者:(美)Alfred V.Aho Monica S.Lam Ravi Sethi Jeffrey D.Ullman 出 版 社:人民邮电出版社 出版时间:2008 年2月

内容提要:作为编译器设计的教程,本书重点主要放在解决设计语言翻泽器过程中普遍需要面对的一些问题上,而并不考虑源语言或者目标机器。本书共 12章。第一章是一些关于学习动机的资料,同时也给出了一些关于计算机体系结构和程序设计语言原理的背景知识。第二章开发了一个缩微的编译器,并介绍了很多重要的概念,这些概念将在后面的各个章节中深入介绍。这个编译器本身在附录中给出。第三章讨论了词法分析、正则表达式、有穷状态自动机和词法分析器的生成工具,这些内容是各种正文处理的基础。第四章讨论了主流的语法分析方法,包括自顶向下方法(递归下降法,ll技术)和自底向上方法(lr技术和它的变体)。第五章介绍了语法制导定义和语法制导翻译的基本思想。第六章介绍了如何使用第五章中的理论为一个典型的程序设计语言生成中间代码。第七章讨论了运行时刻环境,主要是运行时刻栈的管理和垃圾收集机制。第八章介绍了关于目标代码生成的内容,主要讨论了基本块的构造,从表达式和基本块生成代码的方法,以及寄存器分配技术。第九章介绍了代码优化技术,包括流图、数据流分析框架以及求解这些框架的迭代算法。第十章讨论了指令级优化。该章的重点是从小段指令代码中抽取并行性,并在那些可以同时做多件事情的单处理器上调度这些指令。第十一章讲的是大规模并行的检测和利用。这章的重点是数值计算代码,这些代码具有对多维数组进行遍历的紧致循环。第十二章介绍的是关于过程间分析技术的内容,讨论了指针分析、别名和数据流分析,这些分析中都考虑了到达代码中某个给定点时的过程调用序列。

本书可作为高校计算机专业本科和研究生编译原理的教科书,也可供从事计算机软件开发的人员参考。

四、读书报告范例

黑龙江大学

“编译原理课程设计”读书报告

学院 年级 专业 学号 姓名 报告日期 成绩

黑龙江大学计算机科学技术学院

黑龙江大学软件学院

一、开发环境简介

二、基本理论阐述、当前理论或实践应用现状

三、小型编译器系统架构

四、小型编译器主要功能模块与实现(1)功能介绍(2)相关理论(3)算法描述(4)程序流程图

(5)测试用例与实验结果

五、读书工程心得总结

六、参考文献

1.秦明,李波.计算机操作系统实验与实践:基于Windows与Linux[M].中国电力出版社,2004,4:第13-15页,第36-54页 2.

《编译原理课程设计》读书工程方案 第2篇

《编译原理》课程设计报告

院系:计算机科学与技术

班级:10级计科专升本1班学生姓名:赵鹏斐

学号:103210129

指导老师:李永明

计算机科学与技术学院监制

2011年6月

目录

1.课程设计的目的2.课程设计的内容和要求

3.问题分析和相关知识介绍

4.设计思路和关键问题及其解决方案

5.测试和结果分析

6.总结和心得体会

附件1:参考文献

《编译原理》网络课程设计探讨 第3篇

1 特点

编译原理网络课程设计具有资源共享性、开放性、即时更新性、时空不限性、交互性、自主性、协作性、非线性、多维性、整合性的特点。

2 制作软件和编程语言的使用

编译原理网络课程设计用到网页制作三剑客Dreamweaver MX、Flash、Fireworks。还用到其它工具如:SnagIt、Colorkey、EditPlus2、Ulead VideoStudio等,并使用了ASP技术和Access数据库实现。

3 基本结构及主要功能

3.1 基本结构

1) 首页

首页应该对这个网站的性质与所提供的内容做个扼要说明与导引,让别人判断要不要继续点击。首页要有很清楚的类别栏目选项,而且尽量人性化,让浏览者可以很快找到需要的东西。在设计上,坚持干净而清爽的原则。首页中,我们采用清晰的导航和简洁的页面设计,没有复杂过多的内容。登陆系统,和调查系统,保持一个完整的网站程序,友情连接具有一定的参考价值。打开首页能够清晰的了解到进入的是一个“编译原理”网络课程。

2) 课程简介

主要是对本课程的一些说明,方便学生从整体上去把握学习的内容,这是十分重要的。课程针对编译原理文本教程的内容,让学生了解到网上学习的主要内容,从而有选择性的去学习。

3) 网上学习

这是编译原理网络课程设计的主要内容。网上学习共分为三个部分:一部分是网上课堂;一部分是动画教程;最后一部分为课后习题。在网上学习首页上提示重点难点和学习建议,有助于学生对课程的文本学习有个充分的认识。

4) 信息公布

信息公布是对当前的编译原理网络课程改版、更新以及其它消息以公告的形式让学生知道,方便学生及时的关注网络课程的最新变化,从而让学生全面掌握课程动态,有利于进一步学习。这个栏目也是更新的主要内容之一,编译原理网络课程的学习离不开信息的公布,同时也是网站的维护重点,要注意到更新及时性。

5) 学习资源

编译原理网络课程应当提供一定数量的学习资源,学习包括图像、声音、视频等媒体素材,也包括与学习有关的网站地址,并要为学生提供一定数量的参考文献,供学生在自主学习中使用,也为学生进行研究和探索提供条件。在网络课程中,我们将会提供教师的课件、学生的作品还有网上收集的其它学习素材,做好收集方便学生学习。在学习资源的设计中,我们采用了一套教师管理系统,主要是通过教师将收集内容上传到服务器,提供给学生下载。同时这里也提供学生作业的下载文本,详细的说明作业的基本要求。这个网页的设计比较简单,主要是针对教师的管理课件和发布课件。

6) 习题集

学生在进行一段编译原理网络课程学习之后,应当通过做练习题以加深对所学知识的理解。我们不仅提供与编译原理课程相关的习题,还在网上收集了大量的习题,整理成一个习题库,让学生在学习编译原理课程内容的同时还能增长知识。这里我们让教师管理习题库,教师可以增加、删除、修改习题库的内容。同时系统还提供参考答案和任意选择答题,使得答题的方式更加灵活。习题集栏目中还有一个作业上传专区,这样让学生能够通过学习和完成习题,以及上传作业的形式达到一个与教师相互交流的目的。

7) 交流讨论

在编译原理课程设计中,网上讨论以论坛形式出现。网上讨论是传统教学中课堂讨论的另一种实现方式,是协作学习编译原理课程必备的一项功能。分为教师答疑专区和学生自由讨论专区。

8) 帮助系统

编译原理课程设计应当有完整的帮助系统,告诉学生如何利用此网站进行学习,如何利用网络资源。帮助学生解决在学习中遇到的问题,以及有特殊问题能够联系站长等信息。

3.2 主要功能

1) 网上学习功能

编译原理网络课程中提供了网上学习功能,只要是能正常上网就能访问网络课程页面,通过浏览器,正常观看网上学习,网络课程通过文本、动画形式把网络课程的知识展现给学生,给学生轻松的学习环境。

2) 网上测试功能

编译原理网络课程中提供了课后练习:我们是用“模拟练习”这个栏目来实现这个功能的,在这一栏目中给出要求完成的练习,覆盖基本知识点,学生可以网上完成作业,可打开答案自己核对。

在习题集中提供了在线练习,收集了许多有关编译原理知识,在习题中配有正确答案,方便及时检查和纠正错误。同时对某些作过以前习题的学生,可以通过跳转的方式选择性的练习,这样就节约了练习时间。

网上测试不仅让学生能够轻松愉快的练习,而且教师在这里也扮演了十分重要的角色。习题集中,教师通过验证后,可以对习题进行添加、删除和修改操作,很方便地对习题进行管理。

3) 作业提交功能

在我们以前的课程中,总是要经过一定的程序把自己的作品或者作业交给老师。我们开发的网络课程中作业上传功能方便了学生在完成作业后的上交程序,我们只需要把做好的作业或作品,压缩后就能很快上传,实现了在老师规定的期限内异地随时交作业。根据不同的时候网速可能不一样,增加了测速功能,这样可以在网速快的时候上传。

4) 师生交流功能

设置网上论坛环境,实现教学的跨时空交流。增强了师生之间网上交流,并且设置常见问题专区方便了学生快速查找常见问题。

5) 资源下载功能

网络课程学习资料栏目中提供学生下载功能。这里都是老师推荐的学习资源、教学课件。这个系统方便老师对资源的管理。每个老师都有自己单独的管理资源。从老师的注册、确认、登陆,教师可以把自己的整理的资料发送上传到网络课程中供学生下载使用,这个系统不仅方便了老师的管理还让学生拥有更多的学习资源,老师可以再这里布置作业文档,很方便让学生按照老师的要求去完成作业。

4 结束语

编译原理网络课程设计能提高学生对专业知识的深入理解,拓宽学生视野,引导学生自主学习,提高学习的主动性和培养独立思考问题的习惯,以期达到更好的教学效果。

参考文献

[1]廖常武.网站建设与维护[M].西安:西安电子科技大学出版社, 2004.

[2]李禹生.ASP实用技术:网络数据库应用系统设计[M].北京:中国水利水电出版社, 2004.

《编译原理》课程设计要求 第4篇

课程设计的具体内容以传至QQ群共享《编译原理课程设计具体内容.ppt》中,由于学校没有足够大的机房供我们课程设计,所以课程设计采取单独辅导形势,同学们有任何问题,可以来我办公室答疑。

设计报告提交要求

1提交的内容:

验收经过测试的程序

提交设计报告。报告可以包括以下内容:

<1> 任务与目的<2> 软件设计

a.软件的总体结构与模块划分

b.关键算法与重要数据结构

<3> 测试例程设计与测试结果分析

<4> 总结、体会、改进建议等

2.课程设计报告的字数(包括图表)不得少于10000字。

3. 禁止课程设计抄袭,发现原文抄袭网站或报刊内容以零分记。

4.禁止课程设计雷同,发现雷同以零分记。

提交方式

1.要求提交《课程设计报告》打印稿。

2.A4纸张排版,格式参考学年论文规范。

3.在提交论文时填写课程设计封面,详细注明课程名称、题目、学号、姓名、年级、专业班级等基本信息。

4.解释程序源程序(由各班班长统一用U盘拷贝给我)。

时间要求

第19周周五前,按班为单位,各班班长负责提交,过期不再受理,不记成绩。

99《编译原理》课程设计 第5篇

《编译原理》课程设计

一、课程设计的目的通过课程设计,真正掌握设计和构造编译程序的基本原理和常用的编译技术,具备系统软件调试能力和开能力,培养分析问题和解决问题的能力。

二、课程设计的要求

根据选择的课程设计题目提交一份课程设计报告,内容包括:设计要求,算法描述,程序结构,主要变量说明,程序清单,设计技巧,结果分析,心得体会等。

三、课程设计题目

(一)、编制和调试一个程序,它将用户从键盘上输入的正规式转换为以状态和矩阵形式表示的确定的有穷自动机。

1、将正规式转换为NFA2、把NFA确定化为DFA

 # 号作为输入正规式的终止符。

 考虑复合正规式。

例如,从键盘输入10|(01|1)*0|1*#,输出为矩阵形式表示的DFA和状态

图。

 开始符号为0。

(二)、1、试编写一个程序,用来计算给定文法的全部FIRST集及FOLLOW集,并判定所给文法是否LL(1)方法。

2、试编写一个程序,以给定文法作为输入,由程序自动生成文法的LL(1)分析表M。 确定文法的机内表示。

 确定LL(1)分析表的存放方式。

(三)、1、试编写一个程序,用来计算机给定文法的FIRST集,LASTVT集,并判定所给文法是否算符优先文法。

2、试编写一个程序,以给定的方法作为输入,由程序自动生成文法的优先关系矩阵。 确定文法的机内表示。

 确定优先关系矩阵的存放方式。

(四)、对以下文法,采用算符优先分析法,对G[S]所定义的赋值语句进行语法分析,并在语法分析过程中将所输入的赋值语句翻译为四元式。

1、直接输入根据已知文法构造的算符优先关系矩阵。

2、输入已知文法的FIRSTVT集和LASTVT集合,由程序自动生成该文法的算符优先

关系矩阵。

SA

AV := E

EE+T | T

TT * F | F

F(E)| i

Vi

 确定所给文法的机内表示。

 确定算符优先关系矩阵的存放方式。

(五)、设有文法G[P]:

Pbegin Z end

ZZ;S|S

SI:=E | if B then S else S

| while B do S

EE+E | E-E

| E*E

| E/E

|(E)

| I

| C

BE ROP E

ROP< | <= | = | > | >= | <>

IIL | ID | L

LA | B | C |……| X | Y | Z | a | b | c | ……| x | y | z

CCD | D

D0 | 1 | 2 | ……| 9

试采用SLR分析法,对G[P]所定义的语言进行语法分析,并生成四元式(逆波兰式)中间代码。

1、直接输入根据已知文法构造的SLR(1)分析表。

2、输入已知文法的项目集规范族C={I0,I1,……,In}和转换函数G0(Ii,a)=Ij,由程序自

动生成SLR(1)分析表。

 为便于进行语法制导翻译,对上述文法进行改写。

 确定SLR(1)分析表的存放形式。包括ACTION部分和GOTO部分。

 设置分析栈

 确定文法存放形式。

 词法分析中造标识符表。

(六)、设有如下文法:

SA

AV:=E

EE+T|T

TT*F|F

F(E)|digit

Vi

试采用SLR分析法,对所定义 的赋值语句进行语法分析,并在分析过程中将所输入的赋值语句翻译为伪代码并解释执行。

1、直接输入根据已知文法构造的SLR分析表。

2、输入已知文法的项目集规范族C={I0,I1,……,In}和转换函数G0(Ii,a)=Ij,由程序自动生

成SLR(1)分析表。

 确定文法的机内表示。

 确定SLR(1)分析表的存放形式。包括ACTION部分和GOTO部分。

 伪代码和寄存器个数由自己定。

(七)、根据(六)所给的文法,采用LL(1)分析法对所定义的赋值语句进行语法分析,并在语法分析过程中将所输入 的赋值语句翻译成四元式。

1、直接输入根据已知文法构造的分析表M。

2、输入已知文法的FIRST集和FOLLOW集,由程序自动生成分析表M。

3、输入已知文法,由程序自动生成分析表M。

 文法左递归应改写文法的规则式。

 确定文法的机内表示。

 确定LL(1)分析表的存放方式。

四、参考文献:

1.《编译原理》,陈火旺等,国防工业出版社,1984

2.《编译程序构造方法》,邱玉圃等,科学出版社,1991

3.《数字计算机编译程序构造》,D.格里斯,科学出版社,1976

联系方式:Email:huhuaijin@21cn.com

编译原理课程设计实验报告 第6篇

学 生 姓 名:

学 号:

班 级:同 组 人 :

(姓名、班级、学号)

大连理工大学

Dalian University of Technology

1.3 论文正文格式 ........................................................................................................... 2

1.4 章节标题格式 ........................................................................................................... 2

1.5 各章之间的分隔符设置 ........................................................................................... 3

1.6 正文中的编号 ........................................................................................................... 3

2 词法分析程序的实现 .......................................................................................................... 4

2.1 图的格式说明 ........................................................................................................... 4

2.1.1 图的格式示例 ................................................................................................ 4

2.1.2 图的格式描述 ................................................................................................ 4

2.2 表的格式说明 ........................................................................................................... 5

2.2.1 表的格式示例 ................................................................................................ 5

2.2.2 表的格式描述 ................................................................................................ 6

2.3 公式的格式说明 ....................................................................................................... 7

2.3.1 公式的格式示例 ............................................................................................ 7

2.3.2 公式的格式描述 ............................................................................................ 7

2.4 参考文献的格式说明 ............................................................................................... 7

2.4.1 参考文献在正文中引用的示例 .................................................................... 7

2.4.2 参考文献在正文中引用的书写格式 ............................................................ 7

2.4.3 参考文献的书写格式 .................................................................................... 7

2.4.4 参考文献的书写格式示例 ............................................................................ 8

2.5 量和单位的使用 ....................................................................................................... 8

2.5.1 使用方法 ........................................................................................................ 8

2.5.2 中华人民共和国法定计量单位 .................................................................... 8

2.6 规范表达注意事项 ................................................................................................. 12

2.6.1 名词术语 ...................................................................................................... 12

2.6.2 数字 .............................................................................................................. 12

2.6.3 外文字母 ...................................................................................................... 12

2.6.4 量和单位 ...................................................................................................... 13

2.6.5 标点符号 ...................................................................................................... 13

编译原理实验课程教学设计的改进 第7篇

1 编译课程实验的问题

1.1 学生对课程实验定位存在认知误区

在教学实践中发现很多学生对编译原理实验课程的认识上存在很多误区,这些认识误区如果不加以及时纠正,加上课程内容抽象、逻辑性强等特点,很容易加重学生的畏难情绪,产生一系列不利于课程学习的消极负面影响。

一种认识误区是简单地认为编译原理的学习目的就是设计和开发编译器,认为毕业后很少有从事编译器研发的机会,所以得出课程学了没用的错误结论。实际上编译原理包括的形式语言、自动机理论等语言定义、翻译与实现的基础知识,可以让学生领悟到计算机理论的精髓,可以让学生从程序编译的角度重新审视软件的开发,有助于提高学生对软件设计开发的认识,对于今后从事应用软件、语言开发平台甚至系统软件的开发等都是非常有好处的。

另一种认识误区是将编译的实验混淆于普通的程序设计实验,将实验重点没有放在算法的设计、原理的理解上,而是迷失在具体代码实现的细节上。编译原理课程是一个综合性的专业课,编译程序使用的一些数据结构和算法是“数据结构”、“离散数学”以及“算法设计与分析”等课程相关知识的典型应用,能够进一步加深了学生对相关课程知识的综合运用和专业素质的提升。

1.2 实验内容设计缺少层次性

通常的编译原理实验课的教学设计,是将学生已经学过的一种高级语言的词法和语法进行简化,作为实验的模型语言。针对编译过程的词法分析、语法分析、语义分析与中间代码生成、目标代码生成的四个重要阶段,每个阶段分别设计一个或多个实验题目,最终合成一个完整的编译程序。这样设计实验的好处是与授课内容紧密结合,模块分解清晰。但存在的问题是尽管对高级语言进行了简化,每个实验仍然存在着一系列的“难度阶梯”需要学生跨越,如果在实验的设计上仅从学科的理论体系上考虑,忽视了学生知识和能力水平的不同层次,只是一种理想化的设计,执行起来势必难以达到预期的实验效果。

以词法分析的实验设计为例:实验要求是给出某模型语言的文法规范,要求编写该语言的词法分析程序。输入源程序文件,输出关键词、专用符号以及其它标记。实验过程是编写主函数getToken,通过从文件中读取字符到缓冲区中并由C语言字符的状态转换图流程判断返回一个字符(Token)。分析出来的单词主要分为关键词,专用符号,标记符号等。

这个实验是编译阶段的第一个实验,在学生对编译程序理解不深,很多思维方式和知识框架还没有建立起来的情况下,给很多学生设置了一系列障碍,如形式化语言、有穷自动机的理论等,每一个障碍对于初学者都难度不小,这些问题同时出现在一个实验中,会使相当大一部分学生因难度过大而失去学习兴趣。实际教学中学生对编译程序的认知是循序渐进的,很多概念和原理的理解不可能一步到位。而且学生的知识结构、能力水平参差不齐,有的学生的先导课程如《数据结构》、《高级程序设计语言》等知识学得不牢固,有些甚至已经淡忘,因此在设计实验时需要首先弄清楚学生的情况,然后再“对症下药”有侧重点地进行实验内容的设计。

1.3 实验的组织形式比较单一

编译原理的实验组织形式通常是在机房每个学生一台计算机,实验课程开始后教师介绍实验内容、实验目的和实验要求等,然后每人独立完成,从设计到实现都由学生自己进行,教师在实验过程中随时解答学生的疑问,最后学生调试完成程序后撰写实验报告,教师根据学生的程序和实验报告给出分数。这样的实验组织和成绩的评判形式比较单一,整个过程由教师主导,能够训练学生个体的独立思考能力和动手能力,但学生之间的交流不够,实验课的大部分时间都是学生埋头写程序,实验课气氛比较枯燥沉闷,对学生团队协作能力的训练不够。

2 实验教学设计的改进

2.1 消除学生的认识误区

针对学生简单地把编译原理课程局限在编译器设计上的认识误区,教师在授课和实验过程中需要注意结合实际中运用编译技术的实例,比如常用的文本编辑工具中,很多带有字词的检查和校验功能,这就是编译原理技术中词法分析技术的具体应用;很多应用系统中对用户输入的字符串进行规则检查时常用正则表达式;网络搜索引擎对文档资源进行特征分析、提取与描述等工作中都用到编译的相关知识……通过各种现实生活中的实例让学生明确编译原理所学习的知识不仅是计算机专业理论知识的重要组成,而且编译程序所使用的一些原理、方法和技术在非编译系统的实际应用中也发挥了很大作用。

在进行实验设计时,除了原理性实验,可以根据学生的兴趣,安排一些应用型的实验,如简单的智能输入法的实现、识别某些单词的简单聊天机器人程序等,这样的小实验可以激发学生的学习兴趣,学生在这些应用性趣味实验中遇到了困难,自然会进一步深入学习教材中的原理,这样对基础理论的掌握也会更加牢固。

2.2 实验内容的改进

国内外的一些经典教材中,通常会采用一种模型语言的编译程序作为实例,如吕映芝等人编著的《编译原理》是以PL/0语言的编译程序为范例,Alfred V.Aho等人编著的《编译原理》先通过一个小的编译程序范例给学生带来对编译程序的直观感受。通过实例的学习,可以降低学生的学习难度,也可以辅助学生对原理加深理解。在设计实验时,可以更大地发挥这些实例的作用,事先让学生阅读这些实例的源代码,然后增加一个准备性的实验,要求学生结合已经学习过C、C++或JAVA等高级程序设计语言,自行对词法规则和语法规则的简化和裁减,设计出适合自己实验难度的模型语言,并给出文档描述。通过安排这个准备实验,促使学生复习必须的基础知识,增加学生查阅资料的能力和阅读源代码的能力,在学生的认知结构上起一个铺垫的作用。

词法分析、语法分析试验是编译原理实验的重点。在实验内容上,对一些比较复杂的实验进行拆解。词法分析实验可以拆分成三个小实验:设计源程序扫描器,去除空格和注释及其他无关字符后得到单词的集合;用自动机识别无符号数或某类单词;设计识别关键词、标识符等其他类型单词的识别程序。对语法分析实验,可以首先以典型的算术表达式文法为例,设计一个算术表达式文法的递归子程序分析实验,然后在此基础上安排其他的语法分析实验。这样在内容上也分成了若干层次,更加符合由简单到复杂、由特殊到一般的认知规律,也能够满足不同知识结构和能力水平的学生在实验中都能得到锻炼提高的目的。

实验难度的设计上应该体现出层次性,形成“阶梯状”的难度层次。每个实验要求分为基本要求、较高要求和探索性实验要求三个层次,基本要求即最低要求,所有学生都能完成的难度,鼓励成绩中上的学生完成较高要求,采用成绩加分、表扬等一些激励机制,提高兴趣,为一些学有余力的同学准备探索性实验。既能让优秀的学生“吃得饱”,也保证让所有学生“吃得了”,避免一部分学生因缺乏难度挑战失去兴趣而另一部分学生因门槛太高而无从下手的情况发生。比如在“利用自动机识别无符号数”的实验设计上,基本要求是能够识别整数,较高要求是识别带小数的无符号数,更高要求是能识别带指数形式的无符号数,将这一实验题目分成三个层次后,不同学习水平的学生都能够在一个学时内完成实验,对自动机这一重要工具也有了初步认识,达到了实验目的。

2.3 实验组织形式的改进

在实验的组织上可以采用协同式学习,以小组为单位,通过教师所提供的实验任务进行分析、讨论,明确需要解决问题的方法,经过一系列的协同学习活动,完成既定的任务,加深对所学知识的理解。这种组织形式可以培养学生的团队协作能力和学生之间的相互交流和相互学习。因为学生之间的年龄相仿、认知水平相似,交流起来会更加顺畅和有效。在这个过程中能够提高学生的参与感,而且通过团队协作解决困难,会给学生更多的积极反馈和成就感。

在实验内容的设计上,要便于学生进行协同工作,具有可操作性和合作性,确保小组中每个成员的任务饱满。在小组分配上,根据学生的兴趣让其自由结合小组,再根据学生的学习能力做适当调整,根据学生的性格特质等不同特点让其在小组中承担不同角色,如设计人员、开发人员、文档撰写人员以及兼任的汇报答辩人员等。实验实施阶段是协同模式中最重要的一个阶段,在这个阶段小组要对下达的实验任务进行分析,明确任务的基本要求,掌握解决问题的方法及需要具备的知识,在教师的帮助指导下进行小组的内部分工及职责的落实,进行协同学习,同时教师要对学生实验完成情况进行及时的检查和指导,直到最终共同完成小组的任务。

传统的独立模式的实验中对学生的评定比较简单,根据个人的完成情况给出成绩。采用分组式协同模式后,实验成绩的评判要做相应的调整,不仅要考核每个学生自己承担的任务完成情况,还要考核小组共同完成情况。考核的内容仍然包括程序和实验报告,但除了对每个学生独立完成的程序模块进行检查外,还需要对小组共同完成的整个任务情况进行验收,可以采用汇报和答辩的形式进行,每个小组推选答辩人在面对所有学生进行汇报,然后接受教师和其他小组的提问并进行答辩,最终成绩的评定除了个人评定之外还有小组评定,对小组成绩进行排序以鼓励小组间的竞争。

3 总结

为了在编译原理实验课中达到教学目标,根据发现的问题对实验课教学设计进行改进:采用应用型实验激发学生的兴趣,消除对课程的认识误区;重新设计和组织实验内容,更加符合学生的学习规律;采用协同方式组织实验培养学生的团队合作能力。这些改进措施已经在教学实践中采用,结果表明有助于降低学生学习过程中的困难,增强学习兴趣,提高实验教学的质量。

摘要:目前,编译原理实验课程中存在的一些问题影响了教学效果。主要原因是:学生的认识存在误区,实验内容和要求层次性不够明显,实验的组织形式比较单一。提出了改进方法:设计应用型实验提高学生的学习兴趣;重新设计实验内容和实验难度,更好地符合学生的认知规律;通过协同学习,提高学生的团队协作能力。

关键词:编译原理,实验课程,教学设计,协同学习

参考文献

[1]张素琴,吕映芝,蒋维杜,等.编译原理[M].第2版.北京:清华大学出版社,2005.

[2]Alfred VAho,Ravi Sethi,Jeffrey D.Ullman.Compilers:Principles,Techniques,and Tools[M].北京:人民邮电出版社,2002.

编译原理课程设计2011级 第8篇

一、课程设计的性质和目的编译原理课程设计是计算机专业课程,通过课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握编译程序编写的基本设计方法和技巧,进一步提高分析问题、解决问题及上机操作能力,为将来从事高层次的计算机软件开发工作打下一定的专业基础。

二、设计课题

课题一:应用编译原理的方法实现带括号的四则混合运算

给定条件:

1、词法符号定义如下:

INTC  D+

FLOATC (D+.D+)|(D+.)|(.D+)

FLOATC ((D+.D+)|(D+.)|(.D+)|(D+))(E | e)(+ | − | λ)D+

OPADD  +

OPSUB  −

OPMUL  *

OPDIV  /

LPAREN  ‘(’

RPAREN  ‘)’

LINE  ‘n’

ASSIGN  =

2、表达式文法定义如下:

01.S  E

02.E  T

03.E  EOPADDT

04.E  EOPSUBT

05.T  P

06.T  TOPMULP

07.T  TOPDIVP

08.P  INTC

09.P  FLOATC

10.P  LPARENERPAREN

基本要求:

1、以ASSIGN作为文法结束符号;

2、应用词法分析技术识别单词;

3、应用SLR(1)分析技术判别表达式的合法性;

4、应用尾动作文法技术计算表达式的类型与值;

5、要求表达式的类型与值严格一致。

课题二:Micro语言词法语法分析

给定条件:

1、词法符号定义如下:

ID  L(L|D)*

INTC  D+

REALC  D+  D+

PLUS  +

MULT  *

LPAREN (RPAREN )

COLON  :

ASSIGN  :=

SEMI  ;

LINE  ’n’

STOP  

FEOF  EOF2、表达式文法定义如下:

01.PROG  BEGINDECLBODYENDSTOP

02.DECL  DECLVARIDCOLONTYPESEMI

03.DECL  VARIDCOLONTYPESEMI

04.TYPE  REAL

05.TYPE  INTEGER

06.BODY  BODYSEMISTM

07.BODY  STM

08.STM  IDASSIGNEXP

09.STM  WRITELPARENEXPRPAREN

10.STM  READLPARENIDRPAREN

11.EXP  EXPPLUSFACT

12.EXP  FACT

13.FACT  FACTMULTPRIM

14.FACT  PRIM

15.PRIM  ID

16.PRIM  INTC

17.PRIM  REALC

18.PRIM  LPARENEXPRPAREN

基本要求:

1、以FEOF作为文法结束符号;

2、应用词法分析技术识别单词;

3、应用SLR(1)分析方法进行语法分析;

4、报错要指明所在行。

三、课程设计报告要求

1、课程设计报告必须按本系规定的格式要求打印成册;

2、课程设计报告每人一份,正文必须包含如下几个方面的内容:

1)基本设计思想;

2)主要数据结构;

3)总结与体会。

3、课程设计报告装订顺序:封面、任务书、目录、正文、源程序清单。

四、选题及考核办法

1、一人一组,学号为奇数者做课题一,学号为偶数者做课题二。

2、成绩考核按个人课题完成情况、设计报告质量及对课程设计的态度等综合评定。

五、设计进度安排

1、讲课时间安排:

待定

2、上机调试时间安排:

待定

3、答辩时间安排:

待定

《编译原理课程设计》读书工程方案 第9篇

一.课程设计目的通过课程设计,真正掌握设计和构造编译程序的基本原理和常用的编译技术,具备系统软件调试能力和开发能力,培养分析问题和解决问题的能力。

二.课程设计的要求

选择课程设计题目(6选1),提交一份课程设计报告,内容主要包括:设计要求、对题目描述问题的需求分析、算法描述、程序结构、主要变量及函数说明、设计中遇到的主要问题及解决过程、设计技巧、测试结果分析和心得体会等。附程序使用说明、程序清单。

三.课程设计题目

(一)正规式自动转换成DFA系统的设计与实现

编制和调试一个程序,它将用户输入的正规式转换为以状态图和矩阵形式表示的确定有穷自动机。

1.把正规式转换为NFA

2.将NFA确定化为DFA

·#作为正规式的终止符

·考虑复合正规式

·开始状态号为0

(二)赋值语句翻译系统的设计与实现

对以下文法,采用算符优先分析法,对G[S]所定义的赋值语句进行语法分析,并在语法分析过程中将所输入的赋值语句翻译为四元式。(可选用以下两种方法中的一种产生算符优先关系矩阵)

1.直接输入根据已知文法构造的算符优先关系矩阵。

2.输入已知文法的FIRSTVT和LASTVT集合,由程序自动生成该文法的算符优先关系矩阵。

S → A

A → V:=E

E → E + T | T

T → T * F | F

F →(E)| i

V → i

(三)简单语言翻译系统的设计与实现

设有文法G[P]:

P → beginZend

Z → Z;S |S

S → I := E

| ifBthenSelseS

| whileBdoS

E → E + E | E-E | E * E | E / E |(E)| I | C

B → E ROP E

ROP → < | > | <= | = | > | >= | <>

I → IL | ID | L

L → A | B | C |......| X | Y | Z

C → CD | D

D → 0 | 1 | 2 |......| 9

试采用SLR分析法,对G[P]所定义的语言进行语法分析,并生成四元式(逆波兰式)中间代码。(可选用以下两种方法中的一种产生分析表)

1.直接输入根据已知文法构造的SLR(1)分析表;

2.输入已知文法的项目集规范族C={ I0,I1,......,In}和转换函数GO(Ii,a)=Ij,由程序自动生成SLR(1)分析表。

·为便于进行语法制导翻译,对上述文法进行改写

·确定SLR(1)分析表的存放形式(ACTION,GOTO)

·设置分析栈

·确定文法存放形式

·词法分析中造标识符表

(四)赋值语句自上而下翻译系统的设计与实现

设有如下文法:

S → A

A → V:=E

E → E + T | T

T → T * F | F

F →(E)| digit

V → i

采用LL(1)分析法对所定义的赋值语句进行语法分析,并在语法分析过程中将所输入的赋值语句翻译为四元式。(可选用以下三种方法中的一种产生分析表)

1.直接输入根据已知文法构造的分析表M

2.输入已知文法的FIRST集合和FOLLOW集合,由程序自动生成分析表M

3.输入已知文法,由程序自动生成分析表M

(六)自由选题:利用编译技术完成一个应用,例如搜索引擎中的匹配;L-system的模拟植物等图形的构造等;与编译中的技术相关。

由于课程项目都有一定难度,参加编译原理课程设计的同学在暑假中完成程序的编写调试工作;开学后的设计时间用于部分收尾工作和最后检查。题目要求和难度有差别,请同学根据自身情况自行选择,不同的难度起评分有所不同。对题目有疑问请于放假前与骆婷老师联系:电话***,luoting@mail.hust.edu.cn,注明参加编译原理课程设计,最好以班为单位联系。

《编译原理》课程设计教学大纲 第10篇

揭金良 2006.10.20 1 目的

通过课程设计,将《编译原理》的相关理论和技术运用到软件开发中,提高学生的应用程序设计能力,提高分析问题、解决问题的能力。内容

利用编译原理的某种思想或方法,设计一个应用程序,实现的具体内容自拟(见下面的选题指导)。要求

进行简单的需求分析、设计说明,写出程序结构框架,阐明设计思路、用到的原理和方法。程序规模适中,着重于内核功能。估计时间

总共时间2.5周(150学时),其中:1.讲课2学时;2.上机48学时调试;3.其余非上机时间由同学自行安排分析、检查问题、绘制流程图、写相关文档,最后集成设计(实验)报告并自行打印。过程指导

5.1 选题

通过平时积累,找到适合于自己的应用或某种软件功能,该应用能利用编译原理中的某些理论。题目大小适中。参考题目如下: 表达式计算器

表达式计算器:这是一款算术表达式计算程序,通过输入表达式达到计算的目的,可代替目前普遍使用的计算器。使用了编译原理中的词法分析、算符优先分析等。根据功能的不同可分为:

⑴无符号整数表达式计算器:输入无符号整数表达式,输出结果。难度:较难。工作量:中等。

 整数表达式计算器:考虑负数。难度:较难。工作量:中等。 定点实数表达式计算器:难度:较难。工作量:中等。

 通用表达式计算器:考虑1.23e-2的形式输入。难度:难。工作量:中等。⑵函数表达式计算程序:这是一款能计算函数值的实用程序,输入含有自变量x的函数表达式被接受后,可接着输入自变量x的值,输出函数值y的值。使用了词法分析、算符优先分析。根据功能的不同可以分为:

 多项式函数计算程序:只处理多项式函数,如f(x)=x^3+x^2+5等。难度:较难。也可设计成其他专用函数计算程序,如幂函数计算、三角函数计算等。但要避免出现不同用,如不要设计成仅能处理f(x)=2^x的幂函数,因为这样的函数利用普通编程就能实现,无法体现编译原理。工作量:中等。

 通用初等函数计算程序:能处理所有的初等函数的计算。如f(x)=3*sin(x/2+3.1415)+x^2等。难度:难(因为涉及到函数名称和参数的识别问题)。工作量:较大。

 二元或多元函数的计算:如f(x,y)=x^2+y^2等。难度和工作量同一元函数的计算。⑶逻辑运算分析:输入逻辑表达式串,对表达式进行分析,并得出结果。难度:较难。2 字符串搜索程序

输入要查找的字符串的正规表达式,软件可在大量文本(要求不低于3000字符的文档资料文件)中找到符合描述的字符串。这个设计可参考微软.NET的正规表达式的功能。

⑴字符串搜索程序:使用到正规式、词法分析等,还需要有较大的设计技巧。根据功能的不同可以分为:

 名称查找程序(类似于文件名):存有大量的名称,如abc,123,a1,ab1245等,输入要查找的规则,找出符合规则的名称。

 方案1:通配符,把“*、?”当作通配符:如输入“a*”,显示“abc,a1,ab1245”;输入“a?”,输出“a1”。

 方案2:正规式,把“*”当作“闭包”,把“|”当作“或”:如输入“(a|b)1”,输出“a1”;输入“(a|b)*c”,输出“abc”。

 方案3:只要包含正规式即可,当名称中包含该正规式,就输出来:如输入“(a|b)1”,输出“a1,ab1245(含有b1)”;输入“(a|b)*”,输出“abc,a1,ab1245”。

 方案4:含有通配符的正规式,设“@”表示任意字母,“$”表示任意数字(其他可再设多一点,如表示符号等,但会减少名称中的符号种数):如输入“a@*” 输出“abc”;输入“a(@|$)*”,输出“abc,a1,ab1245”。

(以上涉及到正规式的方案难度较大,其他难度一般。注:以上的@$等符号是随便设定的,与.NET中通用的符号不同且有冲突的,请在实际编程时修改它。)

 文本搜索程序:在一连串文本中搜索所需的字符串。同“名称查找程序”中的有关正规式的方案,难度较大,具体正规式包含哪些符号和通配符可另定。

(关于正则表达式的介绍参见另一文档,详细信息见.NET框架联机文档)3 逻辑运算分析

可对关系表达式进行分析,并得出结果。这个设计结果可改变后用于电路分析、谓词演算等。源程序扫描程序

对某种高级语言的源程序进行分析,建立符号表,找出尽可能多的问题并输出相关的出错信息。转义符的识别

C语言的字符串常量书写时使用了大量的转义符,如“”表示单斜杠,而“n”表示换行(同“u000A”),“x20”表示十六进制表示形式(恰好两位)与 ASCII 字符匹配(这里代表值为32的ASCII字符,即空格)。请参照C语言教材,编制一个软件,输入包含转义符的字符串,输出没有转义符的真实字符串。难度:一般。工作量:一般。有限自动机的运行

设计一个确定的有限自动机,写出状态转换函数,或画出状态图,编制程序,输入一个字符串,程序能判别该字符串是否能被该有限自动机接受,可以考虑输出能否接受的同时,输出状态路径。难度:一般。

⑴整数的判断:写出整数的正规式,画出状态图,写出状态转换函数。编出程序。难度:简单。

⑵同上的过程还可以进行:正偶数的判断、自然数的判断、定点数的判断等。⑶实数的判断:过程同上。难度:一般。7 编写一个语法分析程序

编写一个语法分析程序,对输入到缓冲区的符号进行分析,建立相应的语法树,并输出相应的语法树。编写一个代码生成程序

编写一个代码生成程序,形成三地址程序并输出到文件中,打印三地址程序。9 学习使用LEX和YACC工具

LEX和YACC分别是生成词法分析程序和语法分析程序的工具,即编译程序的编译程序。其功能非常强大,可用于任何语言的分析。

学习使用LEX和YACC工具并编写相应程序。请参考有关文档资料。

5.2 分析

选好题目后,分析该题目的应用性,可用到编译原理的哪些理论?对它们进行简单阐述。同时对软件进行需求分析,通过回答下面问题得到:

1.软件提供哪些功能?软件有什么用?界面怎样?怎样使用该软件?对输入数据的格式有什么要求?用什么语言开发?怎样测试该软件?该软件开发的进度如何安排?

2.写出以上问题的答案,然后自问:你的分析材料别人能非常清楚地看懂吗?如果回答是肯定的,就可以搞设计了。

5.3 设计

对软件划分功能模块,将模块细化,设计出数据存放格式,写出各模块(函数)的功能、传递参数的格式和返回值的类型,画出模块结构图。最后画出较详细的程序流程图。

5.4上机

按课表的安排上机(修改设计/编码/调试/测试)。

1.根据流程图编制并输入代码,教师查看学生的设计,对设计提出修改意见。2.修改设计,继续完成输入代码,并作初步调试。3.调试,教师帮助解决学生设计和调试中出现的难题。4.修改设计中的缺陷,完善程序。„„

演示软件,教师根据实际情况提出测试用例,学生作最后的修改和完善,教师评分。继续完善程序,并完成设计说明书,上交成果。

5.5 注意事项

测试数据的设计:每组测试数据包括输入数据、预期的输出结果、实际的输出结果和预期的是否相吻合(如果不吻合,实际输出什么?可能错误的原因?检查源代码或设计进行查错,纪录结果)。上交文档

1.程序源代码(打印,文件名中包含姓名);

2.一组较完备的测试数据(存在一个文本文件中);

3.设计报告:有关的文档资料,包括:选题报告,简单的软件需求分析说明书,软件设计说明,设计经验总结。其中设计经验总结可以包括下列方面:你在编程过程中花时多少?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题?遇到了哪些难题?你是怎么克服的?你对你的软件如何评价?你的收获有哪些? 评分

教师对每个实验结果进行评分(优、良、中、及格、不及格),记入成绩。以下几方面可以提高分数: 7.1 软件实用性强;

7.2 软件使用了编译原理中的某些理论; 7.3 软件具有扩展性; 7.4 各类文档写的很规范;

上一篇:学校道路交通安全责任书(教师、学校)下一篇:爱如一束光600字作文