华北电力大学编译课程设计报告书.doc
《华北电力大学编译课程设计报告书.doc》由会员分享,可在线阅读,更多相关《华北电力大学编译课程设计报告书.doc(14页珍藏版)》请在三一文库上搜索。
1、课程设计报告( 2011 - 2012年度第 1 学期)名 称:编译技术课程设计B 题 目:词法分析器设计 算符优先分析程序设计 基于算符优先分析方法的语法制导翻译程序设计院 系:计算机系 班 级:网络 学 号: 学生姓名: 指导教师:岳燕 黄建才 设计周数:1周 成 绩: 日期:2012年1月6日一、课程设计的目的与要求1 词法分析器设计的目的与要求11 词法分析器设计的目的实验是为计算机科学与技术专业的学生在学习编译技术课程后,为加深对课堂教学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译程序设计的原理和技术设计出词法分析器,了解扫描器的组成结构,不同种类单
2、词的识别方法。能使得学生在设计和调试编译程序的能力方面有所提高。为将来设计、分析编译程序打下良好的基础。12 词法分析器设计的要求设计一个扫描器,该扫描器是一个子程序,其输入是源程序字符串,每调用一次识别并输出一个单词符号。为了避免超前搜索,提高运行效率,简化扫描器的设计,假设该程序设计语言中,基本字(也称关键词)不能做一般标识符用,如果基本字、标识符和常数之间没有确定的运算符或界符作间隔,则用空白作间隔。单词符号及其内部表示如表1-1所示,单词符号中标识符由一个字母后跟多个字母、数字组成,常数由多个十进制数字组成。单词符号的内部表示,即单词的输出形式为二元式:(种别编码,单词的属性值)。表1
3、1单词符号及其内部表示单词符号种别编码单词的属性值BEGINIFTHENELSEEND标识符整型常数+*()123456789101112在名字表中的地址十进制整数2 算符优先分析程序设计的目的与要求2.1 算符优先分析程序设计的目的本实验是为计算机科学与技术专业的学生在学习编译技术课程后,为加深对课堂教学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译程序设计的原理和技术, 设计、编写和调试算符优先分析程序,了解算符优先分析程序的组成结构,掌握实现通用算符优先分析算法的方法。能使得学生在设计和调试编译程序的能力方面有所提高。为将来设计、分析编译程序打下良好的基
4、础。2.2 算符优先分析程序设计的要求算符优先分析属于自下而上的分析方法,该语法分析程序的输入是终结符号串(即单词符号串,以一个“”结尾),如果输入串是句子则输出“YES”,否则输出“NO”和错误信息。算符优先分析过程与非终结符号无关,当由文法产生了优先关系之后文法也就失去了作用,本题目给出文法的目的是为了便于对语法分析结果进行验证。(1)文法设算符优先文法为:说明:i为整型常数或者为标识符表示整型变量;使用中用*表示。(2)优先关系表设优先关系表如表1-2所示。表1-2优先关系表+ * i ( ) # + * i ( ) # 3 基于算符优先分析方法的语法制导翻译程序的设计的目的和要求3.1
5、 基于算符优先分析方法的语法制导翻译程序的设计的目的本实验是为计算机科学与技术专业的学生在学习编译技术课程后,为加深对课堂教学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译程序设计的原理和技术, 通过设计、编写和调试语法制导翻译程序,掌握从一种语句的语法和语义出发,构造相应的语义子程序,实现基于算符优先分析方法的语法制导翻译的方法。能使得学生在设计和调试编译程序的能力方面有所提高。为将来设计、分析编译程序打下良好的基础。3.2 基于算符优先分析方法的语法制导翻译程序的设计的要求算符优先分析方法是通过反复把输入符号移进分析栈,使用优先关系表在分析栈顶寻找最左素短语
6、将其归约为一个非终结符号而实现的。这个分析过程与非终结符号无关,当由文法产生了优先关系之后文法也就失去了作用(所以本题目无需给出文法)。基于算符优先分析方法的语法制导翻译是在算符优先语法分析的基础上进行翻译工作(即语义分析),每当将一个最左素短语归约为一个非终结符号时,就调用对应产生式的语义子程序,去完成相应的语义翻译工作,这步归约使用的产生式对非终结符号不加区分(即将所有的非终结符号用一个通用的非终结符号表示)。语法制导翻译程序的输入是终结符号串(即单词符号串,以一个“”结尾),如果输入符号串是句子,则按照其语义进行翻译,输出等价的四元式序列(作为练习应显示输出)。二、课程设计正文1 词法
7、分析器设计11 设计思想 对输入的字符串逐个分类处理,若所取字符为字母,检验其是关键字或标识符,返回其种别码,标识符还要记录其在名字表中地址并输出;若所取字符为数字,记录其在常数表中的位置,返回种别码及其位置;若所取字符是运算符,返回其相应的种别码。12 使用的相关函数及变量 (1)void scanner() 在这个函数部分进行单词符号的识别,开始进行第一次扫描的时候,对数组token进行初始化,然后ch得到输入的字符串的第一个字符,对ch进行判断。a 若ch是字母,则将ch存入token数组,然后指针p和指针m向后移动,ch一直在变化,一直将ch存入token直到ch不是字母或者数字的时候
8、然后分析token存入的单词,将该单词和关键字进行比较,若是关键字,则输出(关键字在table中的的位置,),若不是关键字则当做标识符来处理;b 若ch是数字,则当做常数处理;c 若ch是“=”,“+”,“*”,“*”,“,”,“(”,“)”,则单独处理。(2)isdigit(ch) 用来判断ch中存放的是否是数字型字符。(3)isalpha(ch) 用来判断ch中存放的是否是字母型字符。(4)void main()用来输入要进行识别的语句(5)token8字符数组,存放构成单词符号的字符串。(6)prog80字符数组,存放所有用户输入的字符。(7)syn整数,存放当前单词的种别码。 (8)
9、sum 存放无符号整数 。2 算符优先分析程序设计2.1设计思想(1)首先建立char Terminal7=+,*,&,i,(,),#用来存放文法的终结符(其中*用&来表示),然后根据设计报告中的文法和其对应的预先关系表用char Table77来表示,其中两个终结符无优先关系的话用!表示。(2)建立符号栈,并首先将#号置于栈中;从当前输入符号和栈顶元元素来确定优先关系表的下标值。(3)根据优先关系表中的优先关系,定义”移进”和”规约”的函数,来进行对输入符号串的处理。最后当输入符号串的字符未#”时,表示符号串规约完毕。其中处理到输入的符号串不合法时,立即给以报错处理。2. 2使用的相关函数及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华北电力 大学 编译 课程设计 报告书
