编译器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译器设计
一、实习目的及意义
编译器是将便于人类编写、阅读、维护的计算机高级语言程序翻译为机器能够识别、运行的计算机低级语言程序的一种系统软件。通过上学年《编译原理》课程的学习,我们已经理解了编译程序的组成结构,基本掌握的编译程序的各个阶段以及各阶段涉及到的基础知识。本次实习的目的是应用编译原理的基础知识完成一个简单编译器的设计与实现,加深对编译原理的理解,提高应用理论知识解决实际问题的能力及软件开发的能力。
二、实习内容及要求
1.使用C语言完成一个简单的C语言编译器的设计
与实现。
2.重点实现符号表的构造,词法分析,语法分析等
子程序(其中词法分析、语法分析及语义分析功
能必须实现)。
三、实习考核方式及成绩评定
1.完成编译器的设计与实现,撰写设计报告。
2.功能实现,设计报告合格者参加答辩。
3.最终成绩=出勤(20%)+源代码及设计报告(30%)
+答辩成绩(50%)
4.实习期间以自主解决问题为主,可以查阅各种资
料,相互讨论交流,但严禁抄袭,抄袭者与被抄袭者一律取消实习答辩资格,成绩为零。
5.具体时间安排:
09.08-09.14设计与实现编译器
09.18答辩(按规定时间答辩)
四、设计要求
1.设计符号表
确定符号表的组织方式,一般应包括名字栏和信息栏,其中名字栏作为关键字。要考虑能够存储有关名字的信息,并可以高效地完成查找、更新和删除操作。
1)查找:根据给定的名字,在符号表中查找其
信息。如果该名字在符号表中不存在,则将
其加入的符号表中,否则返回指向该名字的
指针。
2)删除:从符号表中删除指定名字的表项。
2.设计词法分析器
设计各单词的状态转换图,并为不同的单词设计种别码。将词法分析器设计为语法分析器的子程序,供其调用。功能包括:
1)具备预处理功能。删除程序中的注释和空格
等。设计为一个预处理子程序。
2)要求能识别C语言中的各类单词。
3)返回单词序列(单词种别+属性值)
4)将识别出的标识符填入符号表
5)源程序以.c格式存在文件中,符号表以.txt
格式存在文件中
3.设计语法分析器
要求采用预测分析法、递归下降分析法、LR 分析法中的一种实现对表达式、说明语句和控制语句的语法分析。
4.目标代码生成器(选做)
注:以上实际设计过程必须体现在设计报告中。源代码中的主要代码必须有注释,主要变量、函数的功能,函数参数、返回值等必须有详细的说明。