1、 编译原理 课课 程程 设设 计计 院院 系系 信息科学与技术学院信息科学与技术学院 专专 业业 软件工程软件工程 年年 级级 20112011 级级 学学 号号 姓姓 名名 20132013 年年 1212 月月 1 目录目录 课程设计 1 词法分析器. 2 1.1 设计题目. 2 1.2 设计内容. 2 1.3 设计目的. 2 1.4 设计环境. 2 1.5 需求分析. 2 1.6 概要设计. 2 1.7 详细设计. 4 1.8 编程调试. 5 1.9 测试. 11 1.10 结束语. 13 课程设计 2 赋值语句的解释程序设计. 14 2.1 设计题目. 14 2.2 设计内容. 14
2、2.3 设计目的. 14 2.4 设计环境. 14 2.5 需求分析. 15 2.6 概要设计. 16 2.7 详细设计. 16 2.8 编程调试. 24 2.9 测试. 24 2.10 结束语. 25 2 课程设计一课程设计一 词法分析器设计词法分析器设计 一、一、设计题目设计题目 手工设计 c 语言的词法分析器(可以是 c 语言的子集) 。 二、设计内容二、设计内容 处理 c 语言源程序,过滤掉无用符号,判断源程序中单词的合法性,并分解出正确 的单词,以二元组形式存放在文件中。 三、设计目的三、设计目的 了解高级语言单词的分类,了解状态图以及如何表示并识别单词规则,掌握状态图到 识别程序的
3、编程。 四、设计环境四、设计环境 该课程设计包括的硬件和软件条件如下: 4.1.硬件硬件 (1)Intel Core Duo CPU P8700 (2)内存 4G 4.2.软件软件 (1)Window 7 32 位操作系统 (2)Microsoft Visual Studio c#开发平台 4.3.编程语言编程语言 C#语言 五、需求分析五、需求分析 5.1.源程序的预处理源程序的预处理:源程序中,存在许多编辑用的符号,他们对程序逻辑功能无任何 影响。例如:回车,换行,多余空白符,注释行等。在词法分析之前,首先要先剔除掉这些 符号,使得词法分析更为简单。 5.2.单词符号的识别单词符号的识别并
4、判断单词的合法性并判断单词的合法性:将每个单词符号进行不同类别的划分。单词 符号可以划分成 5 中。 (1)标识符:用户自己定义的名字,常量名,变量名和过程名。 (2)常数:各种类型的常数。 (3) 保留字(关键字) :如 if、else、while、int、float 等。 (4) 运算符:如+、-、*、=等。 (5)界符:如逗号、分号、括号等。 5.3.将所有合法的单词符号转化为便于计算机处理的二元组形式将所有合法的单词符号转化为便于计算机处理的二元组形式: (单词分类号,单词自 身值) ;以图形化界面显示出来。 5.4.可选择性地将结果保存到文件中可选择性地将结果保存到文件中。 六、概要
5、设计六、概要设计 6.1数据类型数据类型 6.1.1.单词的分类:本词法分析器演示的是 C 语言的一个子集,故字符集如下: 3 (1)标识符:以字母开头的字母数字串。 (2)整数或浮点型 (3)保留字:auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, un
6、signed, void, volatile, while (4)运算符:+、-、*、/、%、: cp = NoWs( aCopy, cp ); if( aCopy cp = = ) cp+; break; case V=E|E?|clear E-E+T|E-T|T T-T*F|T/F|F F-(E)|V|c V-i 2.3.给定单词种别码给定单词种别码 表 1 单词种别码表 单词 种别码 单词 种别码 = 1 ? 2 + 3 - 4 * 5 / 6 ( 7 ) 8 v 9 c 10 clear 11 # 12 N 13 2.4.测试数据测试数据 a=5 b=a+10 b? b+a*a? a=a+10 三、设计目的三、设计目的 1.了解掌握算符优先分析的基本方法;