编译技术课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译技术课程设计
一、目的
<<编译技术>>是理论与实践并重的课程,而其课程设计要综合运用一、二年级所学的多门课程的内容,用来完成一个小型编译程序。从而巩固和加强对词法分析、语法分析、语义分析、代码生成和报错处理等理论的认识和理解;培养学生对完整系统的独立分析和设计的能力,进一步培养学生的独立编程能力。
二﹑题目
题目1 表达式的小型编译器
题目2 程序的小型编译器
题目3 输入文法,自动生成分析表,并完成语法分析工作。
因时间关系,只要求选做一个题目,请每位同学根据自己的情况选择难度适宜的题目来完成。
三、要求
题目1表达式的小型编译器
1.词法分析产生语言的单词序列
2.语法分析能识别由加+ 乘* 括号()操作数(变量或常数)所组成的算术表达式,其文法如下:
E→E+T|T
T→T*F|F
F→(E)|i
使用的分析方法可以是:递归下降分析法或LR分析法。
3.中间代码生成产生上述算术表达式的中间代码
4.错误处理给出错误信息
输入:算术表达式
输出:符号表,常数表。
递归下降分析法:递归调用过程
LR分析法:语义栈和符号栈
四元式序列
题目2程序的小型编译器
1.词法分析产生语言的单词序列
2.语法分析
(1)识别由加+ 乘* 括号()操作数所组成的算术表达式
(2)识别布尔表达式
(3)识别条件语句
(4)识别循环语句
3.中间代码生成产生包含上述语句的程序的中间代码
4.错误处理错误定位及出错信息
输入:程序
输出:符号表,常数表。
递归下降分析法:递归调用过程
LR分析法:语义栈和符号栈
四元式序列
题目3文法编译器的自动生成器
输入文法,自动生成分析表,并完成语法分析工作。
语法分析方法可以是:LL(1)分析法或LR分析法。
为文法构造分析表,并对输入串进行语法分析,判别是否符合语法规则,如果不符合,则输出错误信息。
输入:文法,文法符号串
输出:分析表、分析栈、分析结果
四、任务
题目1表达式的小型编译器
1.扩充单词
词法分析器可以识别题目(算术表达式)中包含的各类单词。
2.语法分析程序调用词法分析器
算术表达式里可以有变量、常数,而不是固定的i或以i开头的标识符。
3.增加语义分析
(1)递归下降分析法
语法制导翻译程序参考课本P135
定义:数据结构、函数、主程序、递归子程序
(2) LR分析法
语义子程序参考课本P110
分析表参考《习题解析与上机指导》P88
定义:数据结构、函数、分析表、控制程序、语义子程序
4.出错处理
给出错误信息
题目2程序的小型编译器
1.扩充单词
词法分析器可以识别题目(算术表达式、布尔表达式、条件语句、循环语句)中包含的各类单词。
2.语法分析程序调用词法分析器
3.增加语义分析
(1)布尔表达式的语法制导翻译
语义子程序参考课本P114
分析表参考《习题解析与上机指导》P89
定义:数据结构、函数、分析表、控制程序、语义子程序
(2)控制结构的语法制导翻译
语义子程序参考课本P120
分析表参考《习题解析与上机指导》P90
定义:数据结构、函数、分析表、控制程序、语义子程序
4.出错处理
给出错误信息
题目3文法编译器的自动生成器
1.接收输入的文法,构造语法分析表
LL(1)分析法语法分析表参考实例P53
LR分析法语法分析表参考实例P71
2.对输入的文法符号串,进行语法分析
LL(1)分析法分析过程参考实例P54
LR分析法分析过程参考实例P72
五、实验环境
开发环境VC++;Visual Studio;Java开发环境
语言C;C++;C#;Java
说明:课程设计可以使用任何一种语言工具,课程设计报告中请按照自己实际采用的开发工具及技术来写。
六、考核
采取上机演示和提问的考核方式。
出勤率+课程设计报告+其他=综合评定成绩。
其他评定的标准如下:
1.回答问题的正确。(主要考核该设计是否为自己独立完成,或对设计理解掌握的程度)
2.完成任务的多少;质量的高低。
3.完成设计的速度,先完成的分数高;后完成的分数低。
4.根据完成较高要求的多少,酌情加分。
课程设计结束:
1. 提交资料——课程设计报告+源程序;
2. 将课程设计报告和源程序的电子文档压缩成一个压缩包,压缩包文件的命名规则:班级+学号(末2位)+姓名(例如:计算机110101孙亚楠)
3. 将压缩包上传至FTP服务器,同时将打印的课程设计报告(用A4纸打印)上交班长,班长收齐后交给任课教师。
地址:ftp://202.195.168.13/up/编译课程设计/计算机1101-2,网络1101-2
用户名:nianyi
密码:123456