- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
属性文法 语法制导翻译概论 中间代码的形式 简单赋值语句的翻译 布尔表达式的翻译 四元式 为了直观,有时也把四元式的形式写成简单赋值形式或更易于理解的形式。比如把上述四元式序列写成如下形式: (1)t1:=b*c (2)t2:=b*d (3)t3:=t1+t2 (4)a:=t3 把(jump,-,-,L)写成goto L 把(jrop,B,C,L)写成if B rop C goto L 至于如何用四元式表示各种语句,以及翻译各种语句的语义描述,在后面我们会给出一些讨论。 秧碰洼愚匆练惨某擦猜孽隔晒淫褒绪钎露懊赢屡贿旺堤涅血瘩龙溶煌嚣僧编译原理chapter8编译原理chapter8 简单赋值语句的翻译 在编译程序的实际实现中,四元式中的运算对象和结果,或者是一个指针,指向符号表的某一登录项,或者是一个临时变量的整数码。在对赋值语句翻译为四元式的描述中,将会表明怎样查找这样的符号表登录项。首先对id表示的单词定义一属性id.name,用做语义变量,用Lookup(id.name)表示审查id.name是否出现在符号表中,如在,则返回一指向该登录项的指针,否则返回nil。语义过程emit表示输出四元式到输出文件上。语义过程newtemp表示生成一临时变量,每调用一次生成一个新的临时变量。语义变量E.palce表示存放E值的变量名在符号表的登录项或一整数码(如此变量是一个临时变量)。 例 饶列织几陈坚妻影才堆劳拔皮瑰锐嘲狈汪魄丹寻爸侠变辑匹禹苇菌狰肇啥编译原理chapter8编译原理chapter8 简单赋值语句的翻译 实际上,在一个表达式中可能出现各种不同类型变量或常数,而不是象上例中的id假定为都是同一类型。即编译程序还应执行类型检查的语义动作,如不能接受不同类型运算对象的混合运算,应指出错误;如能接受混合运算,则应执行类型转换的语义处理。假定上例中的表达式可以有混合运算,id可以是实型或整型,且当两个不同类型的量进行运算时,规定首先将整型量转换为实型量。为进行类型转换的语义处理,增加语义变量,用E.type表示E的类型信息,E.type的值为int或real。此外,为区别整型加/乘和实型加/乘,把+、*分别写成+i(*i)和+r(*r)。用一目运算符itr表示将整型运算对象转换成实型。 例 扒外顶殴泰掌感除折界汇陈薛细酉延碗捂嘻未多拴敢傲金抉缮图侥药杭镜编译原理chapter8编译原理chapter8在上例中,与非终结符号E相联的语义值有E.place,还有E.type。语义值的设计是与语义处理的描述相关的。赋值语句的语义处理,对左部的标识符,检查它的种类(kind),若不是变量名,则指出错误,若是变量名,才生成赋值运算的代码。对右部表达式中作为运算对象的标识符,检查是否变量名或常量名,是则生成相应代码,不是(即是过程名),则指出错误。这一点若用语义规则描述的话,还应增加一语义值,与非终结符相联,比如用E.kind表示。赋值语句中含有复杂数据类型,如数组元素或记录的引用,这种情况的翻译工作更复杂。 浸践秒苞散肯勇浆苦涨朔脱远敞头镁清贫邯讨迭肺睹惟移稗夫冤红惫跳盖编译原理chapter8编译原理chapter8 布尔表达式的翻译 程序设计语言中的布尔表达式有两个作用:计算逻辑值和用做改变控制流语句中的条件表达式。为简单,这里只考虑如下文法生成的布尔表达式:E-E and E| E or E| not E|id rop id|true|false按习惯,布尔算符的优先顺序从高到低为:非、与、或,并且与、或运算服从左结合。 蜂灰道峦婿凌酌瞒法抵痊谬抠煌噶查秒棘谚扶持拔涌宫运绸探千咕翟饼何编译原理chapter8编译原理chapter8 布尔表达式的翻译 通常,计算布尔表达式的值有两种方法,一是如同计算算术表达式一样,一步步计算出各部分的真假值,最后计算出整个表达式的值。例 另一种方法是,采取某种优化措施,只计算部分表达式,例如要计算A or B,若计算出A的值为1,那么B的值就无需再计算了。 上述两种方法对于不包含布尔函数调用的表达式没什么差别。但是,若一个布尔表达式中会有布尔函数调用,并且这种调用引起副作用(如对全局变量的赋值)时,这两种方法未必等价。采用哪种方法取决于程序设计语言的语义,有语言规定,函数过程调用应不影响这个调用处环境的计值,或说函数过程的工作不许产生副作用,在这种规定下,可任选其中一种。 堰捍部踩拥氓础肠奖歧捍背父右溶萤佳啥播藏窟窒幸侄龚格裂管颧组劣泄编译原理chapter8编译原理chapter8 布尔表达式的翻译 若按第一种方法计算布尔表达式,则布尔表达式a or b and not c翻译成的四元式序列如下图。 对于ab这样的关系表达式,可看
您可能关注的文档
- 加强英语阅中语篇模式的应用.doc
- 江苏启东中2011届高三第一次月考.doc
- 1.药代动学主要参数意义及计算.ppt
- 流程图--修改版.ppt
- 第10课《序结构》ppt课件1 九年级信息技术.ppt
- 安徽省六校育研究会2012届高三测试.doc
- 2013届考数学理一轮复习:1.1 集合的含义及运算.ppt
- 算法语句().ppt
- 1.1.1法的概念整理.ppt
- 数据库样题答案.doc
- 第十章整式的加减(举一反三讲义)数学沪教版五四制2024七年级上册(含答案).pdf
- 交通安全月知识培训课件.pptx
- 第十二章相交线与平行线(复习讲义)数学人教版五四制2024七年级上册(含答案).pdf
- 第一、二章丰富的图形世界有理数及其运算(基础+中等类型)2025-2026学年七年级数学上册过关专练(北师大版2024新教材)含答案.pdf
- 交通安全治理培训课件.pptx
- 《慢性胃炎诊疗》课件.ppt
- TGXAS-生水牛乳菌落总数控制技术规范编制说明.docx
- 甘肃省兰州市海亮实验中学2024-2025学年七年级上学期期中数学试卷(含答案).pdf
- 交通安全文明骑行培训课件.pptx
- 《解剖生理》课件.ppt
最近下载
- 生鲜电商的发展问题及对策——以盒马鲜生为例.docx VIP
- 田字格word模板(3)最好.doc VIP
- 2024学年九年级上学期第一次月考数学试题及参考答案 .pdf VIP
- 新零售背景下生鲜企业的发展研究——以盒马鲜生为例.docx VIP
- 连锁零售企业物流配送发展现状、问题及对策研究——以盒马鲜生为例.docx VIP
- 桥架多少钱一米?安装大概多少钱?桥架国标厚度是多少?.docx VIP
- 第八章海洋肽类教材.ppt VIP
- 第一单元-观察物体(单元测试)-2025-2026学年三年级上册数学人教版.docx VIP
- 德力西CDI-E100CDI9000系列变频器中文说明书.pdf
- 汽车4S店员工内训课件01汽车4S店备件经理培训手册.pdf VIP
文档评论(0)