编译原理实验报告三.docxVIP

  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文档。上传文档
查看更多
实验三语义剖析程序实现 一、实验目的与要求 在实现词法、语法剖析程序的基础上,编写相应的语义子程序,进行语义办理,加深对语法制导翻译原理的理解,进一步掌握将语法剖析所识其余语法范围变换为某种中间代码(四元式)的语义剖析方法,并达成有关语义剖析器的代码开发。 二、一般实现方法 语法制导翻译模式是在语法剖析的基础上,增添语义操作来实现的,其实是对前后文没关文法的一种扩展。一般而言,第一需要依据进行的语义剖析工作,达成对给定文法的必需拆分和语义动作的编写,进而为每一个产生式都装备相应的语义子程序,以便在进行语法剖析的同时进行语义解说。即在语法剖析过程中,每当用一个产生式进行推导或归约时,语法剖析程序除履行相应的语法剖析动作以外,还要调用相应的语义子程序,以便达成生成中间代码、查填有关表格、检查并报告源程序中的语义错误等工作。每个语义子程序需指明相应产生式中各个符号的详细含义,并规定使用该产生式进行剖析时所应采纳的语义动作。这样,语法制导翻译程序在对源程序从左到右进行的一遍扫描中,既达成语法剖析任务,又达成语义剖析和中间代码生成方面的工作。本实验要求从编译器的整体设计出发,要点经过对实验二中语法剖析程序的扩展,达成一个编译器前端程序的编写、调试和测试工作,形成一个将源程序翻译为中间代码序列的编译系统。 三、实验内容 基本实验题目: 对文法G2[算术表达式]中的产生式增添语义办理子程序,达成运算对象是简单变量(表记符)和无符号数的四则运算的计值办理,将输入的四则运算变换为四元式形式的中间代码。 输入: 1/23 包括测试用例(由表记符、无符号数和+、-、*、/、(、)组成的算术表达式)的源程序言件。 输出: 将源程序变换为中间代码形式表示,并将中间代码序列输出到文件中。若源程序中有错误,应指犯错误信息。 五、源程序 includestdio.h includectype.h includestring.h includemath.h includestdlib.h defineUNKNOWN-1 defineLB0 defineRB1 definePL2 defineMI3 defineMU4 defineDI5 defineUCON6//Supposetheclassnumberofunsignedconstantis7#define OVER defineLT8 defineLE9 2/23 defineEQ10 defineNE11 defineGT12 defineGE13 defineIS19//14至18被五个要点字占用 defineID20 #defineMAX_KEY_NUMBER20/*要点字的数目*/ #defineKEY_WORD_ENDwaitingforyourexpanding/*要点字结束标志*/char*KeyWordTable[MAX_KEY_NUMBER]={begin,end,if,then,else,KEY_WORD_END}; charTOKEN[20]=;//储存已扫描的单词 charch=;//用于储存带判断的字符 introw=1; ////////////////////////无符号数部分 #defineDIGIT1 #definePOINT2 #defineOTHER3 #definePOWER4 #definePLUS5 #defineMINUS6 #defineClassOther200 #defineEndState-1 3/23 intindex=0; intw,n,p,e,d; intClass;//Usedtoindicateclassoftheword intICON; floatFCON; staticintCurrentState;//Usedtopresentcurrentstate,theinitial value:0////////////////////////语法剖析部分 ////////////////////////产生式 // 1、E-E+T 2、E-E-T 3、E-T 4、T-T*F 5、T-T/F 6、T-F 7、F-(E) 8、F-i #defineSMAX256 ///////////////////////goto表的列项 #defineE0 #defineT1 4/23 #defineF2 intStateStack[SMAX];//状态栈 intStackPoint;//状态栈指针 intTopState;//作为状态栈盏栈顶指针 intInputWordType;//输入的单词种类 ////////////////( )+-*/i#charAction[16][8][4]={s4,,,,,,s5,, ,,s6,s7,,,,A, r3

文档评论(0)

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

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

1亿VIP精品文档

相关文档