大校11计算机《编译原理》课程设计安排
时间:18周(12月30日-1月3日)地点:信息馆317、318实验室
一、 设计目的:研究、改进或自行设计、开发一个简单的编译程序或其部分功能,加深对编译理论和编
译过程的理解。编程语言不限。
二、 设计任务 (学号最后一位%4+1): 1.扩展PL/0编译程序功能
目的:扩充PL/0编译程序功能,
要求:(1)阅读、研究PL/0编译程序源文件。
(2)在上述工作基础上,可有选择地补充、完善其中词法分析、语法分析、语义分析、目标代码
生成、目标代码解释执行等部分的功能。如以语法分析部分为例,则可以增加处理更多语法成分的功能,如可处理一维数组、++、--、+=、-=、*=、/=、%(取余)、!(取反)、repeat、for、else、开方、处理注释、错误提示、标示符或变量中可以有下划线等。还可以增加类型,如增加字符类型、实数类型;扩充函数如有返回值和返回语句的,有参数函数等;
(3)设计编制典型的运行实例,以便能反映出自己所作的改进。
2. 基于LL(1)方法的语法分析程序
目的:设计、编制和调试一个典型的语法分析方法,进一步掌握常用的语法分析方法。 要求:
(1)根据LL(1)分析法编写一个语法分析程序,可根据自己实际情况,选择以下一项作为分析算法的输入:a.直接输入根据已知文法构造的分析表M;
b.输入文法的FIRST(α)和FOLLOW(U)集合,由程序自动生成文法的分析表M; c.输入已知文法,由程序自动构造文法的分析表M。
(2)所开发的程序可适用于不同的文法和任意输入串,且能判断该文法是否为LL(1)文法。
(3)如完成前两项,可增加运行实例,对于输入的文法和符号串,所编制的语法分析程序应能正确
判断此串是否为文法的句子,并要求输出分析过程。
3.基于LR(0)方法(或SLR(1)方法、或LR(1)方法)的语法分析程序
要求:
可根据自己实际情况,选择以下一项作为分析算法的输入:
(1)直接输入根据己知文法构造的LR(0)(或SLR(1) 、或LR(1))分析表。
(2)输入已知文法的项目集规范族和转换函数,由程序自动生成LR(0) ( 或SLR(1) 、或LR(1))分析表;
(3)输入已知文法,由程序自动生成LR(0) ( 或SLR(1) 、或LR(1))分析表。 目的和其它要求参考“基于LL(1)方法的语法分析程序”
4.词法分析程序设计
目的:设计、编制和调试一个具体的词法分析程序,加深对词法分析的理解。 要求:
通过对PL/0词法分析程序(GETSYM)的分析,编制一个具有以下功能的词法分析程序: a. 输入为待进行词法分析的源程序,输出为单词串,即由(单词,类别)所组成的二元组序列;
b. 有一定的错误检查能力,例如能发现2a这类不能作为单词的字符串。
选作题目:若以上题目均不感兴趣,可申请做选作题目。 ①基于Lex和Yacc的C-Minus编译器。
基于W indows环境下的Lex和Yacc集成环境Parser Generator, 实现了以C _ M inus ( C
语言子集) 语言为源语言的编译器。主要从编译技术的角度对C _ M inus语言的词法分析、语法 分析、符号表的建立以及目标代码生成的过程进行详细的阐述。
②利用Lex和Yacc工具制作一个小型的计算器编译器。
功能如下:1. 分别能够完成十进制、八进制、十六进制的一些基本运算。可以通过DEC_ON,OCT_ON,HEX_ON三个开关进行控制。
2.能够完成一些基本的算术运算和逻辑运算,如:加、减、乘除、乘方、取模、与、或、非等运算。 3.提供帮助提示操作,如:HELP命令,清屏命令CLEAR等,错误提示信息等。
1
三、提交设计报告
报告内容包括:课程设计任务、设计目的,设计思想,主要变量说明,算法描述,程序结构,调试情况,运行结果,设计技巧,心得体会等。
报告用B5打印。封面内容包括“编译原理课程设计”、课程设计题目、姓名、班级、学号、日期等信息,左侧面装订。注意排版格式的重要性。
四、 课程设计要求
1. 课程设计视同课堂教学,上午8:00、下午2:00开始。请全体同学遵守机房要求,文明上机。 2. 验收时学生将设计报告交给负责验收的老师并参加验收。验收时每位学生应重点说明自己做了哪
些修改、完善或设计工作。验收老师以此作为评定成绩的主要依据。 3. 若有雷同的程序或报告按不及格处理。
五、辅导值班及验收安排
日期(星期) 上午 下午 12月30日(星期一) 王璿、王宝文 穆云峰、苑炜弢 12月31日(星期二) 邹晓红、穆云峰 张世辉、崔永强 1月1日(星期三) 放假 1月2日(星期四) 张世辉、王宝文 邹晓红、崔永强 1月3日(星期五) 王璿、苑炜弢 验收
验收安排:
计算机应用1和计算机应用2班 张世辉、王宝文、邹晓红 计算机应用3班和计算机科学2班 王璿、苑炜弢、崔永强 计算机科学1班 穆云峰
六、课程设计辅导要求
1. 上午8:00、下午2:00开始。 2. 辅导教师负责解答学生课程设计过程中提出的相关问题。 3. 检查学生的编程习惯(如程序描述、注释、缩进、空格、变量命名等),强制学生逐渐养成良好的
编程习惯。 4. 文件管理指导:使学生明白学会正确的文件管理技术非常重要,优秀的软件开发者往往具有很好
的文件管理技巧。 5. 备份工作指导:学生可能意识不到备份的重要性,应该强制要求学生采用某种备份策略,如将资
料备份到不同的设备上。 6. 验收时请老师们逐一检查报告,若有雷同则不及格或退回重写。 7. 验收老师根据讲解、演示、设计报告等评出每位学生的成绩(给出具体分数值)。并按学校要求评
阅报告后,在报告封面右上角写上分数,在最后一页注明“阅”、签名和评阅日期。
2