《编译原理》课程设计教学大纲(优秀)_编译原理课程设计简介

2020-02-27 其他范文 下载本文

《编译原理》课程设计教学大纲(优秀)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“编译原理课程设计简介”。

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

揭金良 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 各类文档写的很规范;

7.5 设计时非常投入,设计后很有心得; 7.6 其他优点。

《《编译原理》课程设计教学大纲(优秀).docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
《编译原理》课程设计教学大纲(优秀)
点击下载文档
相关专题 编译原理课程设计简介 教学大纲 课程设计 原理 编译原理课程设计简介 教学大纲 课程设计 原理
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文