首页 开发技术 C     /    在语法分析器的基础上构造的三地址代码生成器

在语法分析器的基础上构造的三地址代码生成器

上传者: bjutlife | 上传时间:2023/10/15 21:58:03 | 文件大小:3KB | 文件类型:rar
在语法分析器的基础上构造的三地址代码生成器
三地址代码是编译原理语法分析后的中间语言的一种,这是我刚完成的三地址代码生成器,符合的语法规则及其语义规则如下(S→ifCthenS1elseS2,这条规则没有加,其余都已完成,也许还有bug,欢迎大家给予指正):产生式 语义规则S→id=E S.code=E.code||gen(id.place’:=’E.place)S→ifCthenS1 C.true=newlabel;C.false=S.next;S1.next=S.next;S.code=C.code||gen(E.true’:’)||S1.codeS→ifCthenS1elseS2 C.true=newlabel;C.false=newlabel;S1.next=S2.next=S.next;S.code=C.code||gen(E.true’:’)||S1.code||gen(‘goto’,S.next)||gen(E.false’:’)||S2.codeS→whileCdoS1 S.begin=newlabel;C.true=newlabel;C.false=S.next;S1.next=S.begin;S.code=gen(S.begin’:’)||C.code||gen(E.true’:’)||S1.code||gen(‘goto’S.begin);C→E1>E2 C.code=E1.code||E2.code||gen(‘if’E1.place’>’E2.place’goto’C.true)||gen(‘goto’C.false)C→E1<E2 C.code=E1.code||E2.code||gen(‘if’E1.place’<’E2.place’goto’C.true)||gen(‘goto’C.false)C→E1=E2 C.code=E1.code||E2.code||gen(‘if’E1.place’=’E2.place’goto’C.true)||gen(‘goto’C.false)E→E1+T E.place=newtemp;E.code=E1.code||T.code||gen(E.place’:=’E1.place’+’T.place)E→E1-T E.place=newtemp;E.code=E1.code||T.code||gen(E.place’:=’E1.place’-’T.place)E→T E.place=T.place;E.code=T.codeT→F T.place=F.place;T.code=F.codeT→T1*F T.place=newtemp;T.code=T1.code||F.code||gen(T.place’:=’T1.place’*’F.place)T→T1/F T.place=newtemp;T.code=T1.code||F.code||gen(T.place’:=’T1.place’/’F.place)F→(E) F.place=E

文件下载

资源详情

[{"title":"(1个子文件3KB)在语法分析器的基础上构造的三地址代码生成器","children":[{"title":"sandizhifinal.c <span style='color:#111;'>22.74KB</span>","children":null,"spread":false}],"spread":true}]

评论信息

  • G-chaos:
    运行有些警告,正在改,谢谢分享2015-02-28
  • zhengyu19920423:
    可以用的不错2013-05-30

免责申明

【好快吧下载】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【好快吧下载】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【好快吧下载】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,8686821#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明