附录一第二篇第5章语义分析中语义子程序的设计C型程序.docVIP

附录一第二篇第5章语义分析中语义子程序的设计C型程序.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文档。上传文档
查看更多
附录一第二篇第5章语义分析中语义子程序的设计C型程序

附录一 第二篇第5章语义分析中语义子程序的设计(C型程序) 实习题5.2 基于自顶向下方式翻译方案的属性值计算 关于所给翻译方案的各个语义子程序(C型)可设计如下: void _1( ) /* { R.i:=T.val } */ { NR=分析栈[tops].结点序号; U=注释分析树[NR].文法符号序号; NT=注释分析树[NR].左兄结点序号; NTval=search(NT,(val(); /*实现参看实习题5.1,下同*/ Tval=属性信息表[NTval].属性值; PTval=Dpointer({NTval,NULL});/*实现参看实习题5.1,下同*/ A=A+1; 属性信息表[A]={A,U,(i(,(I(,Tval,PTval,NR}; /*实现参看实习题5.1,下同*/ 注释分析树[NR].属性信息链=Apointer({A,NULL}); /*由下面两行实现,下同 */ /*pA=Apointer({A,NULL}); //指向属性结点 注释分析树[NR].属性信息链=pA; */ } void _2( ) /* { E.val:=R.s } */ { NR=CurR; /*CurR是全局变量*/ NRs=search(NR,(s(); Rsval=属性信息表[NRs].属性值; PRs=Dpointer({NRs, NULL}); NE=注释分析树[NR].父结点序号; U=注释分析树[NE].文法符号序号; A=A+1;属性信息表[A]={A,U,(val(,(I(,Rsval,PRs,NE}; 注释分析树[NE].属性信息链=Apointer({A,NULL}); } void _3( ) /* { R1.i:=R.i+T.val } */ { NR1=分析栈[tops].结点序号; U=注释分析树[NR1].文法符号序号; NR=注释分析树[NR1].父结点; NRi=search(NR,(i(); NT=注释分析树[NR].左兄结点序号;NTval=search(NT,(val(); PTval=Dpointer({NTval, NULL}); PRi=Dpointer({NRi, PTval}); R1ival=属性信息表[NRi].属性值+属性信息表[NTval].属性值; A=A+1;属性信息表[A]={A,U,(i(,(I(,R1ival,PRi,NR1}; 注释分析树[NR1].属性信息链=Apointer({A,NULL}); } void _4( ) /* { R.s:=R1.s } */ { NR1=CurR; NR1s=search(NR1, (s(); R1sval=属性信息表[NR1s].属性值; PR1sval=Dpointer({NR1s, NULL}); NR=注释分析树[NR1].父结点序号;CurR=NR; U=注释分析树[NR].文法符号序号; A=A+1;属性信息表[A]={A,U,(s(, (I(,R1sval, PR1sval, NR}; /*把属性信息表序号A链入注释分析树中结点NR的属性信息链*/ pA=Apointer({A,NULL});/*指向属性结点*/ 注释分析树[NR].属性信息链= AppendAlink(pA, 注释分析树[NR].属性信息链); } void _5( ) /* { R1.i:=R.i-T.val } */ { NR1=分析栈[tops].结点序号; U=注释分析树[NR1].文法符号序号; NR=注释分析树[NR1].父结点; NRi=search(NR, (i(); NT=注释分析树[NR].左兄结点序号;NTval=search(NT,(val(); R1ival=属性信息表[NRi].属性值-属性信息表[NTval].属性值; PTval=Dpointer({NTval, NULL}); PRi=Dpointer({NRi, PTval}); A=A+1;属性信息表[A]={A,U,(i(, (I(,R1ival, PRi, NR1}; 注释分析树[NR1].属性信息链=Apointer({A,NULL}); } void _6( ) /* R::=( { R.s:=R.i } */ { NR=注释分析树[N].父结点序号; CurR=NR; U=注释分析树[NR].文法符号序号; NRi=search(NR, (i(); Rsval=属性信息表[NRi].属性值; PRi=Dpointer({NRi,NULL}); A=A+1;属性信息表[A]={A,U,(s(, (I(,

文档评论(0)

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

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

1亿VIP精品文档

相关文档