- 1、本文档共81页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[编译原理课程教案第5章中间代码生成
产生式6: BT→BF,3: BE→BT的翻译与7相似,都是将右边的真假出口直接赋值到左边 (5)(4)构成and逻辑运算 (2)(1)构成or逻辑运算 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 说明语句的翻译 说明语句的作用: 就是说明类型等属性信息,在翻译时主要是填符号表 说明语句分多种,此处举例两种的翻译: 变量说明语句的翻译 常量说明语句的翻译 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 变量说明语句的翻译 1. 变量说明语句的文法描述 2. 变量说明语句的翻译 例如: var a,b,c: integer; 策略:先翻译第3,4产生式,再翻译2,1产生式,以便记录IDS的类型,即在写程序时,读完一个说明语句,开始归约,再开始翻译,变量的类型朝前传递。 1.D→var IDS 2.IDS→i, IDS(1) 3.IDS→i: integer 4.IDS→i: char Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 3. 翻译的语义动作 Name a 4 TYPE integer KIND VAL ADDR 符号表: 1.D→var IDS 2.IDS→i, IDS(1) 3.IDS→i: integer 4.IDS→i: char (nop) FILL(ENTRY(i), IDS(1).TYPE) IDS.TYPE:=IDS(1).TYPE FILL(ENTRY(i),integer) IDS.TYPE:=integer FILL(ENTRY(i),char) IDS.TYPE:=char FILL(entry(i),Type)表示将类型Type填入符号表中 entry(i) 表示变量名i在符号表中的入口 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. VAR id1,id2,id3:integer;的归约过程 integer : id3 , id2 , id1 VAR …… (a) IDS , id2 , id1 VAR …… (b) IDS , id1 VAR …… (c) IDS VAR …… (d) …… (e) 1.D→var IDS 2.IDS→i, IDS(1) 3.IDS→i: integer 4.IDS→i: char (nop) FILL(ENTRY(i), IDS(1).TYPE) IDS.TYPE:=IDS(1).TYPE FILL(ENTRY(i),integer) IDS.TYPE:=integer FILL(ENTRY(i),char) IDS.TYPE:=char Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 常量说明语句的翻译 1. 常量说明语句的文法描述 2. 常量说明语句的翻译 策略:和变量说明一样,先翻译后面的产生式,再翻译前面的产生式,以便在归约时,执行语义动作,将常量的值、类型、种属填入符号表。 例: Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. Constant A=123 3. 翻译的语义动作 将常量INT在符号表中的入口或值直接填入常量符号i所指符号表的VAL栏 将常数的类型填入符号表的Type栏 3,4产生式的翻译与5,6产生式的翻译相同 1,2产生式没有语义动作 Name A 4 TYPE integer KIND 数值常数 VAL 123 ADDR 将常数的种属填入符号表的Kind栏 Evaluation only. Created wi
文档评论(0)