- 5
- 0
- 约5.58万字
- 约 193页
- 2018-07-18 发布于湖北
- 举报
第五章 语法制导翻译及中间代码生成 §5.1 语法制导翻译概述 一、语法制导翻译定义 语法制导翻译就是以语法分析为主导的语义处理。在自顶向下语法分析 过程中嵌入语义动作,即调用对应的语义子程序。 例如在前面语法分析时分析a+b*c表达式,其分析语法树如下: §5.1 语法制导翻译概述 二、语法制导翻译原理 语法制导翻译的原理就是先为每个文法规定相应的语义,即编写出相应语义处理子程序,整个分析是以语法分析为主导。在自顶向下语法分析时,若某一个规则右部与输入串相匹配时,或者,在自底向上语法分析时,当一个规则被用于归约时,此时该规则对应的语义子程序就进入工作,完成既定翻译任务,产生与语义相应的中间代码或目标代码。 语义动作:给每个文法符号X赋以各种不同的语义值 这里的语义值不一定指具体数值,可以是“类型”、“种属”、“地址”或“代码”等,我们用记号X·TYPE、X·CAT或X·VAL来表示这些值。如果某规则的右部有若干个同一符号出现,那么我们就用上角标来区别这些符号。例如,假定有如下规则和语义动作 : 例如,假定有输入串1+2+3,我们通过语法树的分析来看如何进行语法 制导翻译,来求出该句子最后值。 输入串1+2+3的语法树如下图所示: 在图所示子树中,子树根处E·VAL的语义值是3,这可用语义动作 E·VA
原创力文档

文档评论(0)