编译原理课程设计指导书(含参考选题)(2016版) 下载本文

内容发布更新时间 : 2024/5/18 16:23:27星期一 下面是文章的全部内容请认真阅读。

《 编 译 原 理 》

课 程 设 计 指 导 书

李宏芒 编 写

适用专业:计算机科学与技术

合肥工业大学计算机与信息学院

2016年 6月

第1页

《编译原理》是计算机专业的一门重要的专业课程,其中包含大量软件设计

思想。大家通过课程设计,实现一些重要的算法,或设计一个完整的编译程序模型,能够进一步加深理解和掌握所学知识,对提高自己的软件设计水平具有十分重要的意义。课程设计的内容主要包括:

? 词法分析。利用状态转换图设计词法分析器。从正规式构造非确定有限自动

机(NFA)。用子集法把非确定有限自动机(NFA)确定化为确定有限自动机(DFA)。确定有限自动机(DFA)状态最少化。

? 语法分析。自上而下分析。递归子程序分析和预测分析。自下而上分析。算

符优先分析法和LR分析程序。

? 语义分析和中间代码产生。基于一遍扫描的语法制导翻译方法。算术表达式、

赋值语句、布尔表达式、控制语句等语法单位的翻译模式。

大家在进行课程设计时,可以选择本指导书提供给大家的一些参考选题,或者可以从上述课程设计的内容中选择某个主题,抽象成一个模型,以确定自己的设计题目,上机完成软件开发。软件开发可选择C++、C#、Java等语言(也可以是你熟悉的任何语言)。

最后每位同学都要认真撰写课程设计报告,格式要规范,内容要详尽,

主要包括:

? 设计题目(封面含姓名、学号等), ? 设计目的及设计要求

? 设计内容(问题的描述及解决的方法)、主要算法描述(流程图), ? 设计的输入和输出形式

? 程序运行(测试、模拟)的结果(屏幕拷贝、生成结果的打印输出), ? 总结(体会)

? 源程序清单(部分核心代码)作为报告的附件。

希望每个同学尽可能不要都选择完全一样的题目(原则上同一个班学生不重复选题)。大家可以自主选题,或选择本指导书提供的题目,也可以把几个题目合起来做以增加工作量或难度(如开发一个小的编译器等)。鼓励选择有一定技术难度、有一定工作量、综合性较强的题目,在评定成绩时将会给予好的成绩。

第2页

编译原理课程设计部分参考选题: 1. 题目: FORTRAN语言实型常数识别程序设计

设计内容及要求: 将教材P.41的图3.2(d)识别FORTRAN实型常数的状态

转换图用程序实现。程序能够从用户输入的任意一个字符串中识别出FORTRAN实型常数,显示输出。

2. 题目: 简化的FORTRAN语言词法分析程序设计

设计内容及要求:将教材P.42上的表3.1的词法分析器构造出来,限制

条件如教材所述。保留字的识别按标识符一样识别,通过查找保留字表区分是保留字还是标识符。程序能够从用户输入的源程序中,识别出的单词符号,并用二元式表示,显示输出或输出到文件中。

3. 题目: ε-CLOSURE(I)构造算法的程序实现

设计内容及要求:将ε-CLOSURE(I)构造算法用程序实现。要求:对任意

给定的一个NFA M(其状态转换矩阵及初态、终态信息保存在指定文件中)的某一个状态子集I,显示输出构造出的ε-CLOSURE(I)。

4. 题目: 从右线性文法构造与之等价的有限自动机的程序实现

设计内容及要求:构造一转换程序,实现将用户任意给定的右线性文法,

转换为与之等价的有限自动机FA M,输出其状态转换矩阵(显示输出或输出到文件中)。

5. 题目: 从有限自动机构造与之等价的右线性文法的程序实现

设计内容及要求:构造一转换程序,实现将用户任意给定的有限自动机FA

M,转换为与之等价的右线性文法,显示输出或输出到文件中。 6. 题目: 有限自动机的状态转换图显示程序的实现

设计内容及要求:构造一程序,实现:将任一给定的有限自动机M(其状态

转换矩阵及初态、终态信息保存在指定文件中),在屏幕上显示输出M的状态转换图。程序应具有通用性,状态节点在屏幕上的分布应合理、美观。 7. 题目: 从NFA构造与之等价的正规式r的程序实现

设计内容及要求:对给定的任意NFA M(其状态转换矩阵及初态、终态信息

分别保存在指定文件中)。构造一程序,从NFA构造与之等价的正规式r,并显示输出。

8. 题目: 构造正规式r1|r2(或运算)的NFA的程序实现

设计内容及要求:对给定的正规式r1、r2,已知它们的NFA分别为M1、

M2(其状态转换矩阵及初态、终态信息分别保存在指定文件中)。构造一程序,由

第3页