- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.3 中间代码翻译算法 7.3.1 属性文法 A=(G, V, E); 【定义】 属性文法是上下文无关文法在语义上的扩展,可定义为如下三元组: 其中: G(文法);V(属性集);E(属性规则集)。 ⑴ 属性 代表与文法符号相关的信息,这里主要指语义信息(类型、种类、值和值地址…);文法产生式中的每个文法符号都附有若干个这样的属性。 ⑵ 属性可以进行计算和传递,属性规则就是在同一产生式中,相互关联的属性求值规则。 ⑶ 属性分两类(按属性求值规则区分): 综合属性:其值由子女属性值来计算(自底向上求值); 继承属性:其值由父兄属性值来计算(自顶向下求值)。 说明 ※ 属性文法构造示例 : 【例7.7】 算术表达式的属性文法; ※ 设:X.val 为文法符号 X 的值属性; ※ 下述属性文法用于算术表达式的求值运算: E - E1 + T ; || E.val:= E1.val + T.val T - T1 * F ; || T.val:= T1.val * F.val E - T ; || E.val:= T.val T - F ; || T.val:= F.val F - ( E ) ; || F.val:= E.val F - i ; || F.val:= i.val E - E1 - T ; || E.val:= E1.val - T.val T - T1 / F ; || T.val:= T1.val / F.val 【注】可以看出: X.val 属性是综合属性。 ※ 属性计算过程示例 : 根据算术表达式属性文法及其相应的属性求值规则, 2+4*(5-9/3)的属性语法树: E.10 E1.2 + T.8 T.2 T.4 * F.2 F.2 F.4 ( E.2 ) 2 4 E.5 - T.3 T.5 T.9 / F.3 F.5 F.9 3 5 9 按 最左推导或 最左归约 传递规则: 计算规则: 7.3.2 语法制导翻译技术 【定义】语法制导(syntax_directed)是指根据语言的形式文法对输入序列进行分析、翻译处理;核心技术是构造 翻译文法 ---- 在源文法产生式中插入语义动作符号(翻译子程序),借以指明属性文法中属性求值时机和顺序。 ※以算术表达式文法为例,探讨翻译文法的构造! ※通俗地说,所谓语法制导翻译技术,是指: 语法分析技术 翻译文法构造技术 + 注 为叙述简便起见,除非临时详细指明,标识符 X 的属性一律视为符号表项指针,同时用: X 表示 X.point !! ※逆波兰式翻译文法构造示例: ※符号串 a*(b+c)的分析(翻译)过程(推导法): E =T =T*F{*} =F*F{*} =a{a}*F{*} =a{a}*(E){*} =a{a}*(E+T{+}){*} =a{i}*(T+T{+}){*} 导出序列 a{a}*(b{b}+c{c}{+}){*} = + ※ 分解导出序列: 去掉动作符号: a*(b+c) ………. 源表达式; 去掉文法符号: abc+* ………. 逆波兰式; 【例7.8】 算术表达式逆波兰式翻译文法 {a}:动作符号; 含义:输出(a) E - T | E+T{+} | E-T{-} T - F | T*F{*} | T/F{/} F - i{i} | (E) G`(E) 注 ※ 四元式翻译文法构造示例1: Ⅰ. 从逆波兰式的翻译到四元式的翻译: ⑴ t1 = c / d ⑵ t2 = t1 - e ⑶ t3 = b * t2 ⑷ t4 = a + t3 四元式 则 算术表达式 a+b*(c/d-e) 的 逆波兰式算符进栈之日,也就是四元式生成之时。 重要结论 逆波兰式(生成)计算顺序: {a} 即为 PUSH(a) --- 逆波兰式在栈中! 假定: t3 ⑷ a ⑴ t1 ⑵ ⑶ t2 t4 (结果) b c d / e - * + ⑵ GEQ(?) – 表达式四元式生成函数: G``(E):E - T | E+T{GEQ(+)} | E-T{GEQ(-)} T - F | T*F{GEQ(*)} | T/F{GEQ(/)} F - i{PUSH(i)} | ( E ) ※ 四元式翻译文法构造示例2: Ⅱ
您可能关注的文档
最近下载
- 中铁隧道集团有限公司工程项目管理考核办法.pdf VIP
- 人教版八年级上册道德与法治全册教学课件.pptx
- 2023年高考语文复习:新高考Ⅰ卷语言文字运用Ⅰ专项练习题(含答案).docx VIP
- 香港朗文英语3a测试卷1-3单元.pdf VIP
- 目前我国国产电动执行器市场分析.pdf VIP
- 附件1:地下车库色彩规划(基础版)(1)(1).pdf VIP
- 健全会计制度声明函.docx VIP
- 通桥[2005]2221-Ⅱ 时速250公里客运专线铁路 有碴轨道后张法预应力混凝土简支箱梁(双线)(跨度31.5m、直、曲线).pdf VIP
- 一建机电实务案例500问.pdf VIP
- 压疮事件原因分析及整改措施.docx VIP
文档评论(0)