编译技术课程设计B试验报告-词法分析器设计+算符优先分析程序设计+基于算符优先分析方法的语法制导翻译程序设计.docVIP

编译技术课程设计B试验报告-词法分析器设计+算符优先分析程序设计+基于算符优先分析方法的语法制导翻译程序设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计报告 ( 2010 -- 2011年度第 1 学期) 名 称:编译技术课程设计B 题 目:词法分析器设计 算符优先分析程序设计 基于算符优先分析方法的语法制导翻译程序设计 院 系: 计算机系 一、课程设计《》1所示,单词符号中标识符由一个字母后跟多个字母、数字组成,常数由多个十进制数字组成。单词符号的内部表示,即单词的输出形式为二元式:(种别编码,单词的属性值)。 表1-1 单词符号及其内部表示 单词符号 种别编码 单词的属性值 BEGIN IF THEN ELSE END 标识符 整型常数 + * ** ( ) 1 2 3 4 5 6 7 8 9 10 11 12 — — — — — 在名字表中的地址 十进制整数 — — — — — 2.算符优先分析程序设计的目的和要求 2.1 算符优先分析程序设计的实验目的《》”结尾),如果输入串是句子则输出“YES”,否则输出“NO”和错误信息。 算符优先分析过程与非终结符号无关,当由文法产生了优先关系之后文法也就失去了作用,本题目给出文法的目的是为了便于对语法分析结果进行验证。 (1)文法 设算符优先文法为: 说明:i为整型常数或者为标识符表示整型变量;使用中↑用**表示。 (2)优先关系表 设优先关系表如表1-2所示。 表1-2 优先关系表 + * ↑ i ( ) # + * ↑ i ( ) # 3.基于算符优先分析方法的语法制导翻译程序设计的目的和要求 3.1 基于算符优先分析方法的语法制导翻译程序设计的实验目的《》”结尾),如果输入符号串是句子,则按照其语义进行翻译,输出等价的四元式序列(作为练习应显示输出)。 二、课程设计正文 词法分析器设计 1.1 以文件流的方式对词法进行输入句子。 1.2 标识符和常数的属性值 (1)标识符和常数的属性值为该单词在名次表或常数表中登机项的相对地址; (2)当识别出一个标识符或常数时,要查名字表或常数表,若表中有其登记项,则把得到的登记项地址作为其属性值; (3)若表中没有其登记项,则建立一个新登记项,该登记项地址作为其属性值,此处的地址为在表中的下标。 1.3 主要数据结构 (1)属性类Dog,内含某一单词的显示字符串和类别,类别包括关键字、标识符、常数; (2)输入缓冲区Buffer[100],类型为字符型; (3)关键字表Letter[],类型为Dog; (4)标识符表Varible[],类型为Dog,存储在句子中出现过的标识符; (5)常数表Constant[],类型为Dog,存储在句子中出现过的常数; (6)设置全局变量b,v,c,l记录输入缓冲区、标识符表、常数表、关键字表的当前最后一个指针。 1.4 词法错误处理:出错则显示错误所在字符位置。 算符优先分析程序设计 2.1 以文件流的方式对词法进行输入句子。 2.2 主要数据结构 (1)优先关系表XX[],全局变量,事先设定; (2)分析栈类Stack,内含数组array[]存储终结符号、“#”、非终结符N,和数组array[]的长度size; (3)数组str[],用于存放输入字符串。 2.3 算法主要使用两个while嵌套循环,外层为当前字符a不为#则继续,内层循环当前字符a与其后一个终结符的相对优先关系为大于时,则进行规约,否则执行移入操作; 2.4 当分析栈中进入‘#’,且分析栈中只剩三个字符时,表示分析成功,否则失败。 2.5 出错则显示错误所在字符位置。 基于算符优先分析方法的语法制导翻译程序的设计 3.1 该实验算法是在第二个实验的基础上,将规约后产生的N变为临时变量Ei或中间变量Ti,当产生中间变量的四元式时,则输出该四元式。 3.2 为实现算法,这里用到词法分析的思想,将输入字符串先通过词法分析,转化为各单词的属性值或地址值。此做法便于实现数组的输出和查看。 三、课程设计附录()#includeiostream #includestdlib.h #include ctype.h #includestring.h using namespace std; char strToken[20];//存当前构成字符串 class Dog { char info[20]; int race; public: Dog(char cc[20],int rr)//构造函数

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档