编译技术课程设计b试验报告词法分析器设计 算符优先分析程序设计 基于算符优先分析方法的语法制导翻译程序设计.doc
《编译技术课程设计b试验报告词法分析器设计 算符优先分析程序设计 基于算符优先分析方法的语法制导翻译程序设计.doc》由会员分享,可在线阅读,更多相关《编译技术课程设计b试验报告词法分析器设计 算符优先分析程序设计 基于算符优先分析方法的语法制导翻译程序设计.doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计报告( 2010 - 2011年度第 1 学期)名 称:编译技术课程设计B 题 目:词法分析器设计 算符优先分析程序设计 基于算符优先分析方法的语法制导翻译程序设计院 系: 计算机系 班 级: 网络0802 学 号: 学生姓名: 指导教师: 设计周数: 1周 成 绩: 日期:2010年12月31一、课程设计的目的与要求1词法分析器设计的目的与要求1.1 词法分析器设计的实验目的本实验是为计算机科学与技术专业的学生在学习编译技术课程后,为加深对课堂教学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译程序设计的原理和技术设计出词法分析器,了解扫描器的组成结构,
2、不同种类单词的识别方法。能使得学生在设计和调试编译程序的能力方面有所提高。为将来设计、分析编译程序打下良好的基础。1.2 词法分析器设计的实验要求设计一个扫描器,该扫描器是一个子程序,其输入是源程序字符串,每调用一次识别并输出一个单词符号。为了避免超前搜索,提高运行效率,简化扫描器的设计,假设该程序设计语言中,基本字(也称关键词)不能做一般标识符用,如果基本字、标识符和常数之间没有确定的运算符或界符作间隔,则用空白作间隔。单词符号及其内部表示如表1-1所示,单词符号中标识符由一个字母后跟多个字母、数字组成,常数由多个十进制数字组成。单词符号的内部表示,即单词的输出形式为二元式:(种别编码,单词
3、的属性值)。表1-1单词符号及其内部表示单词符号种别编码单词的属性值BEGINIFTHENELSEEND标识符整型常数+*()123456789101112在名字表中的地址十进制整数2算符优先分析程序设计的目的和要求2.1 算符优先分析程序设计的实验目的本实验是为计算机科学与技术专业的学生在学习编译技术课程后,为加深对课堂教学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译程序设计的原理和技术, 设计、编写和调试算符优先分析程序,了解算符优先分析程序的组成结构,掌握实现通用算符优先分析算法的方法。能使得学生在设计和调试编译程序的能力方面有所提高。为将来设计、分析编
4、译程序打下良好的基础。2.2 算符优先分析程序设计的实验要求算符优先分析属于自下而上的分析方法,该语法分析程序的输入是终结符号串(即单词符号串,以一个“”结尾),如果输入串是句子则输出“YES”,否则输出“NO”和错误信息。算符优先分析过程与非终结符号无关,当由文法产生了优先关系之后文法也就失去了作用,本题目给出文法的目的是为了便于对语法分析结果进行验证。(1)文法设算符优先文法为: 说明:i为整型常数或者为标识符表示整型变量;使用中用*表示。(2)优先关系表设优先关系表如表1-2所示。表1-2优先关系表+ * i ( ) # + * i ( ) # 3基于算符优先分析方法的语法制导翻译程序设
5、计的目的和要求 基于算符优先分析方法的语法制导翻译程序设计的实验目的本实验是为计算机科学与技术专业的学生在学习编译技术课程后,为加深对课堂教学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译程序设计的原理和技术, 通过设计、编写和调试语法制导翻译程序,掌握从一种语句的语法和语义出发,构造相应的语义子程序,实现基于算符优先分析方法的语法制导翻译的方法。能使得学生在设计和调试编译程序的能力方面有所提高。为将来设计、分析编译程序打下良好的基础。3.2 基于算符优先分析方法的语法制导翻译程序设计的实验要求算符优先分析方法是通过反复把输入符号移进分析栈,使用优先关系表在分析
6、栈顶寻找最左素短语,将其归约为一个非终结符号而实现的。这个分析过程与非终结符号无关,当由文法产生了优先关系之后文法也就失去了作用(所以本题目无需给出文法)。基于算符优先分析方法的语法制导翻译是在算符优先语法分析的基础上进行翻译工作(即语义分析),每当将一个最左素短语归约为一个非终结符号时,就调用对应产生式的语义子程序,去完成相应的语义翻译工作,这步归约使用的产生式对非终结符号不加区分(即将所有的非终结符号用一个通用的非终结符号表示)。语法制导翻译程序的输入是终结符号串(即单词符号串,以一个“”结尾),如果输入符号串是句子,则按照其语义进行翻译,输出等价的四元式序列(作为练习应显示输出)。二、课
7、程设计正文1 词法分析器设计1.1 以文件流的方式对词法进行输入句子。1.2 标识符和常数的属性值(1)标识符和常数的属性值为该单词在名次表或常数表中登机项的相对地址;(2)当识别出一个标识符或常数时,要查名字表或常数表,若表中有其登记项,则把得到的登记项地址作为其属性值;(3)若表中没有其登记项,则建立一个新登记项,该登记项地址作为其属性值,此处的地址为在表中的下标。1.3 主要数据结构(1)属性类Dog,内含某一单词的显示字符串和类别,类别包括关键字、标识符、常数;(2)输入缓冲区Buffer100,类型为字符型;(3)关键字表Letter,类型为Dog;(4)标识符表Varible,类型
8、为Dog,存储在句子中出现过的标识符;(5)常数表Constant,类型为Dog,存储在句子中出现过的常数;(6)设置全局变量b,v,c,l记录输入缓冲区、标识符表、常数表、关键字表的当前最后一个指针。1.4 词法错误处理:出错则显示错误所在字符位置。2 算符优先分析程序设计2.1 以文件流的方式对词法进行输入句子。2.2 主要数据结构(1)优先关系表XX,全局变量,事先设定;(2)分析栈类Stack,内含数组array存储终结符号、“#”、非终结符N,和数组array的长度size;(3)数组str,用于存放输入字符串。2.3 算法主要使用两个while嵌套循环,外层为当前字符a不为#则继续
9、,内层循环当前字符a与其后一个终结符的相对优先关系为大于时,则进行规约,否则执行移入操作;2.4 当分析栈中进入#,且分析栈中只剩三个字符时,表示分析成功,否则失败。2.5 出错则显示错误所在字符位置。3 基于算符优先分析方法的语法制导翻译程序的设计3.1 该实验算法是在第二个实验的基础上,将规约后产生的N变为临时变量Ei或中间变量Ti,当产生中间变量的四元式时,则输出该四元式。3.2 为实现算法,这里用到词法分析的思想,将输入字符串先通过词法分析,转化为各单词的属性值或地址值。此做法便于实现数组的输出和查看。三、课程设计总结或结论1词法分析器设计在做这个实验以前一直认为编译的词法分析器是计算
10、机内部某个硬件部分。由于该门课程结课较早,有些内容需要重新翻书查找。通过这次实验,我对之前学过的内容有了更深的理解,了解了扫描器的组成结构、不同种类单词的识别方法,掌握了由单词的语法规则触发、画出识别单词的状态转换图、然后再用程序实现的扫描器设计方法。2算符优先分析程序设计该程序的主要难点在于何时规约和何地规约,以及规约前后对几个指针位置的处理。通过本次实验一定程度上提高了软件开发能力,对编译原理这一门课程也有了比较深刻的了解,掌握了算符优先分析方法。最后,由于所学知识不够全面,实验在很多方面还有待完善,在以后的学习过程中,会掌握更多知识,力求做到更好。3基于算符优先分析方法的语法制导翻译程序
11、的设计关于语法制导的内容之前未在课堂上有学过,首先锻炼了我的自学能力,通过学习和实践掌握了从一种语句的语法和语义出发,构造相应的语义子程序,实现语法制导翻译的方法。这个实验有着第二个实验的基础,保持算符优先分析的整体思想,在此基础上利用词法分析器的思想设计了一段模数转换程序,将字符串转换为数字形式。通过自己思考摸索,不断调试,最终使程序得以正常运行。四、参考文献1 陈火旺,刘春林. 程序设计语言编译原理. 北京:国防工业出版社,第三版. 2008,92 宋雨,程晓荣,黄志强. 计算机综合实践指导. 北京:清华大学出版社,第一版. 2004,2附录(设计流程图、程序、运行结果等)(一)流程图1
12、词法分析器设计开始结束初始化读入需要分析的句子还有单词未分析?否是是字母?是否其他单词分析程序是数字?否输出单词二元式关键字或标识符分析程序读一个字符是常数分析程序2 算符优先分析程序设计开始结束初始化,显示算符优先矩阵打开需要读入的文档a的优先关系大于arry中最后一个终结符?是是Array为空?否是将array中优先关系一样的字符规约为N构造字符串s ,存储需要分析的句子从s 中读取一个字符a将a压入数组array3. 基于算符优先分析方法的语法制导翻译程序的设计开始结束初始化,显示算符优先矩阵打开需要读入的文档da的优先关系大于arry中最后一个终结符?是是Array为空?否是将arra
13、y中优先关系一样的字符规约为临时变量或中间变量,如有产生四元式则输出构造字符串s ,存储需要分析的句子从digital 中读取一个字符da将da压入数组array对s里的每个字符进行模数转换,存入digital(二)程序代码1 词法分析器设计#include#include#include #includeusing namespace std;char strToken20;/存当前构成字符串class Dogchar info20;int race;public:Dog(char cc20,int rr)/构造函数strcpy(info,cc);race=rr;int comp(char
14、ss20)/比较strToken是否为此类别,否返回0if(strcmp(info,ss)=0)return race;return 0;char Buffer100;/输入缓冲区int b;/Buffer指针char ch;/当前读进字符Dog* Varible20;/符号表Dog* Constant20;/常数表Dog* Letter20;/已有单词表int v,c,l;/对应尾指针的后一个int a2;void init0()b=0;v=0;c=0;l=0;Letterl+=new Dog(BEGIN,1);Letterl+=new Dog(IF,2);Letterl+=new Dog(
15、THEN,3);Letterl+=new Dog(ELSE,4);Letterl+=new Dog(END,5);void init()ch= ;a0=-1;a1=-1;strcpy(strToken,);void GetChar()/取当前字符ch=Bufferb;b+;void GetBC()/取字符直到不为空格while(ch= )GetChar();bool IsLetter()/判断是否为字母if(ch=A&ch=a&ch=0&ch=9)return 1;return 0;void Concat()/把字符连接到当前短语后边strcat(strToken,&ch);void Retr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译技术课程设计b试验报告词法分析器设计 算符优先分析程序设计 基于算符优先分析方法的语法制导翻译程序
链接地址:https://www.taowenge.com/p-92380367.html
限制150内