当前位置:文档之家› 编译原理课程设计题目 (1)

编译原理课程设计题目 (1)

编译原理课程设计
一、课程设计的基本要求和方法
(一)、目的
进一步培养学生编译器设计的思想,加深对编译原理和应用程序的理解,针对编译过程的重点和难点内容进行编程,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格,并综合使用程序设计语言、数据结构和编译原理的知识,熟悉使用开发工具VC /JA V A/C#/.NET 。

(二)、课程设计步骤
1、问题理解和分析
充分地分析和理解问题本身,弄清要求做什么。

2、确定解决问题的方法(设计)
主要是找到解决问题的主要思路,是怎么做。

在此阶段可考虑系统的功
能和模块划分等。

3、详细设计和编码
确定算法的主要流程,再进行编程。

在此阶段应提醒学生程序可先在纸上写,尽量想清楚了再动手上机,在编程过程中注意程序结构的清晰性,避免出现很多明显的程序逻辑错误和语法错误,提高后面程序调试效率。

4、程序调试和运行
使学生掌握程序调试和排错的基本方法,增加编程的感觉和解决问题的成就感。

5、完成课程设计报告(使用华东交通大学课程设计报告,需学生自己购买)
1)问题描述
题目要解决的问题是什么
2)分析、设计、实现
解决问题的基本方法说明,包括主要算法思想,算法的流程图。

程序中主要函数或过程的功能说明。

3)运行结果分析。

4)总结
遇到的主要问题是如何解决的、对设计和编码的回顾讨论和分析、进一步改进设想、经验和体会等。

5)附录,包括源程序关键代码和运行结果。

(三)、考核评估
通过程序实现、总结报告和学习态度综合考评,并结合学生的动手能力,独立分析解决问题的能力和创新精神。

成绩分优、良、中、及格和不及格五等。

考核标准包括:
(1)编译器思想的正确性,包括是否采用了合适的数据存储结构等。

(2)程序实现的正确性,包括程序整体结构是否合理、编程风格是否规范等。

(3)程序功能的完善程度,包括功能的基本实现、基本完善、完全实现(4)学生的工作态度、独立工作能力。

(5)课程设计报告。

以上五项考核内容,每项占的权重均为20% 。

二、 编译原理设计题目
以下有六个课程设计题目,要求学生从中选择一个题目做本次课程设计。

(一) First 集和Follow 集生成算法模拟
【问题描述】
设计一个由正规文法生成First 集和Follow 集并进行简化的算法动态模拟。

(算法参见教材)
【基本要求】
动态模拟算法的基本功能是: (1) 输入一个文法G ;
(2) 输出由文法G 构造FIRST 集的算法; (3) 输出First 集;
(4) 输出由文法G 构造FOLLOW 集的算法; (5) 输出FOLLOW 集。

【测试数据】
输入文法: E->TE ’
E ’->+TE ’|ε T->FT ’
T ’->*FT ’|εF->(E)|i
【实现提示】
用数据库存储多行文法,用LIST 控件显示算法,用GRID 类依据算法进行作图。

并实现算法与生成过程的关联。

(二)LL(1)分析过程模拟
【问题描述】
设计一个给定LL (1)分析表,输入一个句子,能由依据LL (1)分析表输出与句子对应i )
(
*
+
F 的f i r s t 集
T 的f i r s t 集 E 的f i r s t 集 1
1
1
1 1
1
1 1 1
的语法树。

能对语法树生成过程进行模拟。

(算法参见教材)
【基本要求】
动态模拟算法的基本功能是:
(1) 输入LL (1)分析表和一个句子; (2) 输出LL (1)总控程序;
(3) 输出依据句子构成的对应语法树的过程;
【测试数据】
输入句子:i*i+i
输入LL (1)分析表
【实现提示】
用结构体数组存储多行正规式,用LIST 控件显示算法,用CDC 类依据进行算法进行
作图。

并实现算法与生成过程的关联。

(三)FirstVT 集和LastVT 集生成算法模拟
【问题描述】
设计一个由正规文法生成FirstVT 集和LastVT 集的算法动态模拟。

(算法参见教材)
【基本要求】
动态模拟算法的基本功能是: (1) 输入一个文法G ;
(2) 输出由文法G 构造FIRSTVT 集的算法; (3) 输出FirstVT 集;
(4) 输出由文法G 构造LastVT 集的算法; (5) 输出LastVT 集。

→(E )
→i
F →ε → ε →*F T '
→ ε
T ' →F T ' →F T '
T →ε → ε →+T E ' E ' →T E '
→T E '
E
#
) (
* + i
【测试数据】
输入文法: E->TE ’
E ’->+TE ’|ε T->FT ’
T ’->*FT ’|εF->(E)|i
【实现提示】
用数据库存储多行文法,用LIST 控件显示算法,用GRID 类依据算法进行作图。

并实现算法与生成过程的关联。

(四) 算符优先分析表生成模拟
【问题描述】
设计一个给定文法和对应的FIRSTVT 和LASTVT 集,能依据依据文法和FIRSTVT 和LASTVT 生成算符优先分析表。

(算法参见教材)
【基本要求】
动态模拟算法的基本功能是:
(1) 输入一个给定文法,及FIRSTVT 和LASTVT 集; (2) 输出算符优先分析表生成算法;
(3) 输出算法优先分析表构造过程的过程;
【测试数据】
输入文法: E->TE ’
E ’->+TE ’|ε T->FT ’
T ’->*FT ’|εF->(E)|i
【实现提示】
用结构体数组存储多行正规式,用LIST 控件显示算法,用CDC 类依据进行算法进行作图。

并实现算法与生成过程的关联。

i )
(
*
+
F 的f i r s t V T
T 的f i r s t V T E 的f i r s t V T 1
1
1
1 1
1
1 1 1
(五)算符优先分析过程模拟
【问题描述】
设计一个给定算符优先分析表,输入一个句子,能由依据算符优先分析表输出与句子对应的语法树。

能对语法树生成过程进行模拟。

(算法参见教材)
【基本要求】
动态模拟算法的基本功能是:
(1)输入算符优先分析表和一个句子;
(2)输出算符优先分析总控程序;
(3)输出依据句子构对应的语法树的过程;
【测试数据】
输入句子:i*i+i
输入算符优先分析表
【实现提示】
用结构体数组存储多行正规式,用LIST控件显示算法,用CDC类依据进行算法进行作图。

并实现算法与生成过程的关联。

(六)L R分析过程模拟
【问题描述】
设计一个给定LR分析表,输入一个句子,能由依据LR分析表输出与句子对应的语法树。

能对语法树生成过程进行模拟。

(算法参见教材)
【基本要求】
动态模拟算法的基本功能是:
(1)输入LR分析表和一个句子;
(2)输出LR总控程序;
(3)输出依据句子构对应的语法树的过程;
【测试数据】
输入句子:i*i+i
输入LR分析表
【实现提示】 用结构体数组存储多行正规式,用LIST 控件显示算法,用CDC 类依据进行算法进行作图。

并实现算法与生成过程的关联。

【注释】
本次课程设计共6道题目,各同学的选题可自由选择,也可自己结合感兴趣知识点自行命题,鼓励创新性设计。

r 5
r 5
r 5
r 5
11
r 1 r 1 S 7 r 1 9 r 3 r 3 r 3 r 3 10
S 11 S 6 8 10 S 4
S 5
7 3 3
3 F S
4 S 4
S 4 ( r 6 r 4
r 2 ) 9 r 1
S 5 6 r 6 r 6 r 6
5 2 8
S 5
4
r 4
r 4
r 4
3
r 2 S 7 r 2 2 a c c S 6 1
2 1
S 5 0
T E # * +
i
G o T o
A C T I O N 状态。

相关主题