第06章语法制导翻译技术精品.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 6.4.1 综合属性 基本操作数带有属性的表达式文法G[E]: 1. E→E+F 4. T→F 2. E→T 5. F→(E) 3. T→T*F 6. F→i ? C 此文法能够产生如下的输入序列: (i ? 3 +i ? 9) * i ? 2 * 根据给定的文法,可写出该输入序列的语法树 自底向上 的属性计算 E T * T F F ( E ) E + T T F i ? 3 i ? 2 F i ? 9 所以,用?表示属性计算是自底向上的,称为综合属性。 E T * T F F ( E ) E + T T F i? 3 i ? 2 F i ? 9 ? 3 ? 3 ? 9 ? 3 ? 9 ? 12 ? 12 ? 12 ? 2 ? 24 ? 24 * 产生式 求值规则 1.E ? p4 →E ? q5 + T ? r2 p 4 = q 5 + r 2 ; 2.E ? p3 →T ? q4 p 3 = q 4 ; 3.T ? p2 →T ? q3 * F ? r1 p 2 = q 3 * r 1 ; 4.T ? p2 →F ? q2 p 2 = q 2 ; 5.F ? p1 → (E ? q1) p 1 = q 1 ; 6.F ? p1 → i ? q1 p 1 = q 1 ; 说明: p,q,r为属性变量名。 属性变量名局部于每个产生式,也可使用不同的名字。 求值规则:综合属性是自底向上求值。 为了形式地表示上述表达式的属性求值过程,可以改写上述文法: * 6.4.2 继承属性 考虑下列文法:G[说明]: 1. 说明 → Type id 变量表 2. 变量表 → , id 变量表 3. 变量表 → ε 符号表 A 整型 BC 整型 其中 Type: 类型名(值:int, real, bool等) id: 变量名(值:指向该变量符号表项的指针) 上述文法所产生的语句:int A,BC 该文法的翻译任务:将声明的变量填入符号表 完成该工作的动作符号:@set_table * 翻译文法: 1. 说明 → Type id @set_table 变量表 2. 变量表 → ,id @set_table 变量表 3. 变量表 → ε 填表时需要的信息:类型,名字,以及填的位置 如何得到? 类型和名字在词法分析时得到,可设两个综合属性。 * Type ? t t中放类型值 id ? n    n中放变量名 填表动作符号也可带有属性: @set_table↓t1 , n1  ↓t1,n1  可从前面得到,所以称为继承属性,       继承前面的值 变量表 ↓t 2 ↓t2 同上 属性翻译文法: 1.说明 → Type?t id?n @set_table↓t1,n1 变量表 ↓t2 t2=t;  t1 = t;  n1 = n; 2.变量表 ↓t2 → ,id ? n @set_table↓t1,n1 变量表↓t3   t3=t2; t1 = t2; n1 = n; 3.变量表 ↓t2 → ε * 例:int a,b ? Type ?int

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档