北邮-语义的分析.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文档。上传文档
查看更多
北邮-语义的分析

编译原理程序设计3 语义分析By坏学长实验题目和要求题目:语义分析程序的设计与实现。实验内容:编写语义分析程序,实现对算术表达式的类型检查和求值。要求所分析算术表达式由如下的文法产生。实验要求:用自底向上的语法制导翻译技术实现对表达式的分析和翻译。写出满足要求的语法制导定义或翻译方案。编写分析程序,实现对表达式的类型进行检查和求值,并输出:分析过程中所有产生式。识别出的表达式的类型。识别出的表达式的值。实验方法:可以选用以下两种方法之一。自己编写分析程序。利用YACC自动生成工具。实验分析自底向上的LR分析该文法的拓广文法E - EE - E + TE - E - TE - TT - T * FT - T / FT - FF - idF - ( E )F - numFIRST和FOLLOW集ETFFIRSTid, (, numid, (, numid, (, numFOLLOW$, ), +, -$, ), +, -, *, /$, ), +, -, *, /该文法的LR(0)项目集规范族:CLOUSURE I0E - .EE - .E+TE - .E-TE - .TT - .T*FT - .T/FT - .FF - .idF - .(E) F - .numCLOUSURE I1E - E. E - E.+TE - E.-TCLOUSURE I2E - T. T - T.*FT - T./FCLOUSURE I3T - F.CLOUSURE I4F - id.CLOUSURE I5F - num.CLOUSURE I6F - (.E) E - .E+TE - .E-TE - .TT - .T*FT - .T/FT - .FF - .idF - .(E) F - .numCLOUSURE I7E - E+.TT - .T*FT - .T/FT - .FF - .idF - .(E) F - .numCLOUSURE I8E - E-.TT - .T*FT - .T/FT - .FF - .idF - .(E) F - .numCLOUSURE I9T - T*.FF - .idF - .(E) F - .numCLOUSURE I10T - T/.FF - .idF - .(E) F - .numCLOUSURE I11F - (E.) E - E.+TE - E.-TCLOUSURE I12E - E+T. T - T.*FT - T./FCLOUSURE I13E - E-T. T - T.*FT - T./FCLOUSURE I14T - T*F.CLOUSURE I15T - T/F.CLOUSURE I16F - (E).构造SLR(1)分析表状态actiongoto+-*/idnum()$ETF0s4S6S51231s7s8acc2r3r3s9s10r3r33r6r6r6 r6r6r64r7r7r7r7r7r75s4s6s511236r9r9r9r9r9r97s4s6s51238s4s6s51339s4s6s51410s4s6s51511s7s8s161612r1r1s9s10r1r113r2r2s9s10r2r214r4r4r4r4r4r415r5r5r5r5r5r516r8r8r8r8r8r8S属性定义的制导翻译自底向上的制导翻译需要在LR分析的基础上进行扩展,进行综合属性的记录和计算,完成类型检查和结果计算.扩充分析栈目的:用于保存综合属性实现:栈由state和value类的容器类实现,state元素是指向LR(1)分析表中状态的指针(或索引),val中就存放分析树中对应的属性值。假设综合属性刚好在每次归约前计算 A-XYZ对应的语义规则是A.a=f(X.x,Y.y,Z.z)定义一个结构栈,value结构里有两个变量,一个为val, 一个为type。Val存在两种情况,一个表示int时的值,一个表示float时的值,因为无法公用一个类型的变量。定义type只有三种情况,一种为int, 一种为float, 一种为type_error(由于输入值只有int和float两种类型,所以type_error即类型不同时,四则运算默认结果为float)。改造分析程序综合属性记录:终结符号的综合属性值由词法分析程序产生,当分析程序执行移进操作时,其属性值随终结符号(或状态符号)一起入栈。为每个语义规则编写一段代码,以计算属性值。归约计算:在归约时完成类型检查和求值。对每一个产生式A-XYZ,把属性值的计算与归约动作联系起来:归约前,执行与产生式相关的代码段归约时,右部符号及其属性出栈,左部符号及其属性入栈翻译方案主要算法分析词法分析:void Lexval(string);对输入子串进行分解,由单个string按照不同类型

文档评论(0)

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

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

1亿VIP精品文档

相关文档