编译原理课程设计指导书-Read
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《编译原理课程设计指导书》
一、前言
《编译原理课程设计》是在学习完专业基础课《编译原理》后,对《编译原理》课程的内容的一次综合运用,它是一门独立课程,课时数为1.5周,学分为1.5学分。
本教学大纲适用于“计算机科学与技术”专业。
二、课程设计目的和任务
《编译原理》是一门理论性和实践性非常强的课程,特别是其中涉及的文法理论、自动机理论和优化方法等内容都比较抽象,仅仅通过课堂教学不足以深刻理解和掌握这方面的知识。
另一方面,虽然,所培养的学生今后真正从事编译程序的开发的机会并不多,但是,编译原理作为计算机科学与技术专业知识体系中为数不多的大型系统软件开发的理论方法的介绍,其意义决不仅仅局限在开发编译系统本身。
因为,在实现编译程序的过程中,涉及了多方面的理论方法和技术,这些理论方法和技术对其他领域有着重要的借鉴价值。
同时,来了巩固和加深理解《编译原理》重点章节的知识,有必要加强实践训练,并将编译原理所涉及的理论方法应用到解决实际问题中去,这就是本课程设计的基本出发点。
本课程设计的目的是要求学生运用《编译原理》重点章节的相关知识和思想方法,结合《高级语言程序设计》等相关课程的知识,去解决实际问题。
通过这样的实践,训练学生理论联系实际的能力,特别是引导学生在面临实际问题时候进行发散思维,开拓思路,解决问题。
同时也对学生进行复杂程序设计的技能训练和培养良好程序设计的习惯。
三、课程设计基本要求和方法
本课程设计要求学生在《高级语言程序设计》等相关课程的知识的基础上,将《编译原理》重点章节的相关知识和思想方法,应用于解决实际问题。
这就要求训练学生理论联系实际的能力,特别是训练学生对实际问题进行发散思维,独立、并尽可能创造性地找出解决问题的方法。
要求通过算法研究及其程序实现来解决特定的实际问题,并且在解决这些特定的问题中要求应用到《编译原理》重点章节的相关知识和思想方法。
课程设计完成后,每位同学必须提交课程设计报告,课程设计报告中应包括问题的理论分析、应用有关理论知识解决问题的思路和方案、详细设计、调试分析、测试结果、附录等内容,课程设计报告的详细要求及格式请参见计算机与信息学院的有关规定。
课程设计采用分组的方式进行,每组人数不超过5人,设一位组长,同组同学做同一个题目,他们可以互相讨论,但必须独立完成,每位同学的实现方式有所不同。
课程设计主要由学生独立进行,为了方便同学们之间及与老师的交流,课程设计开设网上讨论组,同学们可以在网上进行学习与交流,老师也会及时在网上解决学生的各种问题,最后,将在机房安排集中指导。
四、课程设计题目及其指导意见
【设计题目1】算术表达式的语法分析及语义分析程序设计。
1.目的
通过设计、编制、调试一个算术表达式的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。
2.设计内容及要求:
考虑+、-、*、?、/运算,构造出符合要求的文法。
(1)第一组的同学选择递LL(1)、第二组的同学选择算符优先分析法(或简单优先法)、第三组的同学选择LR法完成以上任务,中间
代码选用四元式。
(2)写出算术表达式的符合分析方法要求的文法,给出分析方法的思想,完成分析程序设计。
(3)编制好分析程序后,设计若干用例,上机测试并通过所设计的分
析程序。
【设计题目2】布尔表达式的语法分析及语义分析程序设计。
1.目的
通过设计、编制、调试一个布尔表达式的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。
2.设计内容及要求
考虑∧、∨、!运算,构造出符合要求的文法。
(1)第四组的同学选择LL(1)、第五组的同学选择算符优先分析法(或简单优先法)、第六组的同学选择LR法完成以上任务,中间代码
选用四元式。
(2)如1题写出符合分析方法要求的文法,给出分析方法的思想,完成分析程序设计。
(3)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。
【设计题目3】有限自动机的运行
1.设计目的:
(1)理解有限自动机的作用
(2)利用转态图和状态表表示有限自动机
(3)以程序实现有限自动机的运行过程
2.设计内容:
利用状态表和有限自动机的运行原理编制程序,使得程序能够识别一个输入串是否为一个有效的符号串。
3.基本要求:
(1)第七组同学完成对无符号定点实数识别
(2)第八组同学完成对合法标识符识别
【设计题目4】非确定有限自动机确定化和最简化(第九组同学完成)
1.设计目的:
(1)理解有限自动机的意义
(2)理解非确定有限自动机和确定有限自动机的关系
(3)理解确定有限自动机最简化的重要作用
(4)一程序实现非确定有限自动机确定化和最简化
2.设计内容:(注:题目详细要求)
设计一个程序能够识别一个NFA,用一个数据结构对其保存,并对其进行确定化和最简化。
3.基本要求:能对源NFA和得到的最简DFA可视显示
【设计题目5】词法分析程序设计。
1.目的
通过设计、编制、调试一个词法分析程序,加深对词法分析原理的理解。
2.设计内容及要求
通过设计、编制、调试一个对于C语言词法的词法分析程序,加深对词法分析原理的理解,并实现输出单词序列的词法检查和分析。
其中
(1)第十组的同学完成以上任务。
(2)自己设计出五种单词的符号表和对应的TOKEN代码,给出分析方法
的思想,完成分析程序设计。
(3)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析
程序。
【设计题目9】有限自动机的实际应用――人、狼、山羊和白菜过河问题。
1、问题描述:一个人带着狼、山羊和白菜在一条河的左岸。
有一条船,
大小正好能装下这个人和其它三件东西中的一件。
人和他的随行物都要求过到河的右岸。
人每次只能将一件东西摆渡过河。
但若人将狼和羊留在同一岸而没人照看的话,狼将把羊吃掉。
类似地,若羊和白菜留下来无人照看,羊也将把白菜吃掉。
请问是否有可能渡过河去的方法,使得羊和白菜都不被吃掉?如果可能请用有限自动机写出渡河的方法。
2、基本要求:
(1)要求给出问题的有限自动机描述;
(2)要求程序实现这个有限自动机的操作;
(3)要求将有限自动机的状态转换过程(即计算机解题过程)可视化地演示出来;
(4)不限所使用编程语言。
(5)第十一组的同学完成以上任务。
3、实现思路
(1)有限自动机的状态
把人、狼、山羊和白菜过河过程的每一种格局定义为一种状态。
初态为人、狼、山羊和白菜都在河的左岸,终态为人、狼、山羊和白菜都在河的右岸。
从初态出发,按照由约束条件限制到达终态的一条路径就是问题的解。
(2)状态转移的约束条件
从一个状态到达另一个状态,必须满足问题的约束条件,即在任何情况下不能允许山羊和白菜单独在一切,也不能允许狼和山羊单独在一起。
满足约束条件的每一种状态转移,就是一个允许的状态转移,并且由此画出状态间的矢线及其标识。
(3)将状态及其之间的可能的转移通路,编制成状态转移矩阵,然后编程,从初态出发,通过查询这个状态矩阵,给出从初态到达终态的所有可能的路径,即问题的所有的解。
(4)将有限自动机的状态转换过程(即计算机解题过程)可视化地演示
出来。
【设计题目10】正则式到有限自动机的自动转换(第十二组同学完成)1.设计目的:
(1)理解正则式的意义
(2)理解有限自动机的作用
(3)一程序实现由正则式到有限自动机的转换
2.设计内容:(注:题目详细要求)
设计一个程序能够识别一个正则式,并自动生成对应的FA。
3.基本要求:
(1)对任意的正则式都可以变换为FA
(2)对得到的有限自动机能可视显示。