欢迎来到天天文库
浏览记录
ID:15647639
大小:219.00 KB
页数:6页
时间:2018-08-04
《《编译技术》课程设计b》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《编译技术》课程设计B任务书一、目的与要求为了巩固、理解课程《编译技术》所学知识,要求学生完成一个简单编译程序所涉及的主要模块。具体要求如下:1.独立完成词法分析器的设计与实现。通过设计、编写和调试词法分析程序(扫描器),了解扫描器的组成结构,不同种类单词的识别方法,掌握由单词的语法规则出发,画出识别单词的状态转换图,然后再用程序实现的扫描器设计方法。2.独立完成算符优先分析的设计与实现。通过设计、编写和调试算符优先分析程序,了解算符优先分析器的组成结构以及对文法的要求,掌握实现通用算符优先分析算
2、法的方法。3.基于算符优先分析方法的语法制导翻译的设计与实现。通过设计、编写和调试语法制导翻译程序,掌握从一种语句的语法和语义出发,构造相应的语义子程序,实现基于算符优先分析方法的语法制导翻译的方法。这里假设采用的语法分析是自下而上的算符优先分析方法,采用的中间代码形式是四元式。二、主要内容1.词法程序设计一个扫描器,该扫描器是一个子程序,其输入是源程序字符串,每调用一次,输出一个以内部形式表示的单词符号。为了避免超前搜索,提高运行效率,简化扫描器的设计,假设该程序设计语言中,基本字(也称关键字)
3、能作一般标识符用,如果基本字、标识符和常数之间没有确定的运算符或界符作间隔,则用空白作间隔。单词符号及其内部表示如下表所示,单词符号中标识符由一个字母后跟多个字母、数字组成,常数由多个十进制数字组成。单词符号的内部表示,即单词的输出形式为二元式:(种别编码,单词的属性值)。单词符号及其内部表示单词符号种别编码单词的属性值BEGINIFTHEN123———ELSEEND标识符常数(整型)=+***,()4567891011121314——在名字表中的地址在常数表中的地址———————识别单词符号的状
4、态转换图如下图所示。*2字母非字母与数字空白0字母或数字1数字数字*4非数字3=56+*非**8*97,10(111其它13)12识别单词符号的状态转换图对于该状态转换图需要说明几个问题:(1) 0状态是初始状态,在该状态滤掉无用空格。(2) 从初态出发读进一个字符串到达终态就识别了一个单词,即状态转换图每运行一次识别一个单词。(3) 若在标有“*”号的终态结束,意味着多读进一个不属于现行单词的字符,这个字符应该回退。(4) 在2状态结束,意味着接受了一个基本字或标识符,还需要查一张基本字表,来区
5、分这个单词是基本字还是标识符。(5) 13状态是错误状态,在该状态进行错误处理。用程序实现识别单词符号的状态转换图就能得到所要求的扫描器,其方法是对应每一个状态结点设计一个程序段,完成在读进可能输入的符号后该状态下所做的工作,再设计一个控制程序,通过判别当前状态和输入字符确定执行哪个状态对应的程序段。1.设计算符优先分析程序算符优先分析属于自下而上的分析方法,该语法分析程序的输入是终结符号串(即单词符号串,以一个“”结尾),如果输入串是句子则输出“YES”,否则输出“NO”和错误信息。算符优先分析
6、过程与非终结符号无关,当由文法产生了优先关系之后文法也就失去了作用,本题目给出文法的目的是为了便于对语法分析结果进行验证。(1) 文法 设算符优先文法为:说明:i为整型常数或者为标识符表示整型变量;使用中↑用**表示。(2) 优先关系表 设优先关系表如下表所示。优先关系表+*↑i()#+*↑i()# (3) 算符优先分析算法 算符优先分析算法中需要使用分析栈存放文法符号,变量为栈的栈顶指针,变量存放当前输入符号。为错误处理程序,分析算法如下:BEGINp:=1;/*置分析栈S初值:“#”进空栈*
7、/S[p]:=‘#’;REPET将下一个输入符号读入a;IFS[p]∈VTTHENj:=pELSEj:=p-1;WHILES[j]>aDOBEGINREPEATQ:=S[j];IFS[j-1]∈VTTHENj:=j-1ELSEj:=j-2;UNTILS[j]8、’;END.算法结束时,若分析栈呈现出:“”,则说明输入串是句子,否则输入串不是句子。1.基于算符优先分析方法的语法制导翻译程序算符优先分析方法是通过反复把输入符号移进分析栈,使用优先关系表在分析栈顶寻找最左素短语,将其归约为一个非终结符号而实现的。这个分析过程与非终结符号无关,当由文法产生了优先关系之后文法也就失去了作用(所以本题目无需给出文法)。基于算符优先分析方法的语法制导翻译是在算符优先语法分析的基础上进行翻译工作(即语义分析),每当将一个最左素短语归约为一个非终结符号时,
8、’;END.算法结束时,若分析栈呈现出:“”,则说明输入串是句子,否则输入串不是句子。1.基于算符优先分析方法的语法制导翻译程序算符优先分析方法是通过反复把输入符号移进分析栈,使用优先关系表在分析栈顶寻找最左素短语,将其归约为一个非终结符号而实现的。这个分析过程与非终结符号无关,当由文法产生了优先关系之后文法也就失去了作用(所以本题目无需给出文法)。基于算符优先分析方法的语法制导翻译是在算符优先语法分析的基础上进行翻译工作(即语义分析),每当将一个最左素短语归约为一个非终结符号时,
此文档下载收益归作者所有