1、 课程设计报告课程设计报告 ( 2010 - 2011 年度第 1 学期) 名 称: 编译技术课程设计 B 题 目: 词法分析器设计 算符优先分析程序设计 基于算符优先分析方法的语法制导翻译程序设计 院 系: 计算机系 班 级: 计科 1001 学 号: 学生姓名: 指导教师 设计周数: 1 周 成 绩: 日期:2013 年 1 月 9 日 1 一、课程一、课程设计设计的目的与要求的目的与要求 1.1 词法分析器设计的实验目的 本实验是为计算机科学与技术专业的学生在学习编译技术课程后,为加深对课堂教 学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译 程序设计的原
2、理和技术设计出词法分析器, 了解扫描器的组成结构, 不同种类单词的识别方 法。能使得学生在设计和调试编译程序的能力方面有所提高。为将来设计、分析编译程序打 下良好的基础。 1.2 词法分析器设计的实验要求 设计一个扫描器,该扫描器是一个子程序,其输入是源程序字符串,每调用一次识别并 输出一个单词符号。为了避免超前搜索,提高运行效率,简化扫描器的设计,假设该程序设 计语言中,基本字(也称关键词)不能做一般标识符用,如果基本字、标识符和常数之间没 有确定的运算符或界符作间隔,则用空白作间隔。 单词符号及其内部表示如表 1-1 所示, 单词符号中标识符由一个字母后跟多个字母、 数 字组成,常数由多个
3、十进制数字组成。单词符号的内部表示,即单词的输出形式为二元式: (种别编码,单词的属性值) 。 表 1-1 单词符号及其内部表示 单词符号 种别编码 单词的属性值 BEGIN IF THEN ELSE END 标识符 整型常数 + * * ( ) 1 2 3 4 5 6 7 8 9 10 11 12 在名字表中的地址 十进制整数 2 2算符优先分析程序设计的目的和要求 2.1 算符优先分析程序设计的实验目的 本实验是为计算机科学与技术专业的学生在学习编译技术课程后,为加深对课堂教 学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译 程序设计的原理和技术, 设计、编
4、写和调试算符优先分析程序,了解算符优先分析程序的组 成结构, 掌握实现通用算符优先分析算法的方法。 能使得学生在设计和调试编译程序的能力 方面有所提高。为将来设计、分析编译程序打下良好的基础。 2.2 算符优先分析程序设计的实验要求 算符优先分析属于自下而上的分析方法, 该语法分析程序的输入是终结符号串 (即单词 符号串,以一个“#”结尾) ,如果输入串是句子则输出“YES” ,否则输出“NO”和错误 信息。 算符优先分析过程与非终结符号无关, 当由文法产生了优先关系之后文法也就失去了作 用,本题目给出文法的目的是为了便于对语法分析结果进行验证。 (1)文法文法 设算符优先文法G为: TTEE
5、| FFTT| PFPF| iEP|)( 说明:i 为整型常数或者为标识符表示整型变量;使用中用*表示。 (2)优先关系表优先关系表 设优先关系表如表 1-2 所示。 表 1-2 优先关系表 + * i ( ) # + * i ( ) # 3 3基于算符优先分析方法的语法制导翻译程序设计的目的和要求 3.1 基于算符优先分析方法的语法制导翻译程序设计的实验目的 本实验是为计算机科学与技术专业的学生在学习编译技术课程后,为加深对课堂教 学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译 程序设计的原理和技术, 通过设计、编写和调试语法制导翻译程序,掌握从一种语句的语
6、法 和语义出发,构造相应的语义子程序,实现基于算符优先分析方法的语法制导翻译的方法。 能使得学生在设计和调试编译程序的能力方面有所提高。 为将来设计、 分析编译程序打下良 好的基础。 3.2 基于算符优先分析方法的语法制导翻译程序设计的实验要求 算符优先分析方法是通过反复把输入符号移进分析栈, 使用优先关系表在分析栈顶寻找 最左素短语,将其归约为一个非终结符号而实现的。这个分析过程与非终结符号无关,当由 文法产生了优先关系之后文法也就失去了作用(所以本题目无需给出文法) 。 基于算符优先分析方法的语法制导翻译是在算符优先语法分析的基础上进行翻译工作 (即语义分析) ,每当将一个最左素短语归约为一个非终结符号时,就调用