美文网首页
编译器笔记19-语法制导翻译-概述

编译器笔记19-语法制导翻译-概述

作者: 衣忌破 | 来源:发表于2019-11-26 16:03 被阅读0次
什么是语法制导翻译
编译的阶段.png

语法制导翻译使用CFG来引导对语言的翻译,是一种面向文法的翻译技术。

语法制导翻译的基本思想

问: 如何表示语义信息?
答: 为CFG中的文法符号设置语义属性,用来表示语法成分对应的语义信息。

问: 如何计算语义属性?
答: 文法符号的语义属性值是用与文法符号所在产生式(语法规则)相关联的语义规则;对于给定的输入串x,构建x的语法分析树,并利用与产生式(语法规则)相关联的语义规则来计算分析树中各结点对应的分析树语义属性值;

两个概念

将语义规则同语法规则(产生式)联系起来要涉及两个概念

  • 语法制导定义(Syntax-Directed Definitions, SDD)
  • 语法制导翻译方案(Syntax-Directed Translation Scheme,SDT)
语法制导定义(SDD)

SDD是对CFG的推广

  1. 将每个文法符号和一个语义属性集合相关联
  2. 将每个产生式和一组语义规则相关联,这些规则用于计算该产生式中各文法符号的属性值。
语义规则.png

注:L与L1表示的是同一个符号,下标的出现是为了方便讨论区别L在不同地方的出现。如果X是一个文法符号,a是X的一个属性,则用X.a表示属性a在某个标号为X。

语法制导翻译方案(SDT)

SDT是在产生式右部嵌入了程序片段的CFG,这些程序片段称为语义动作。按照惯例,语义动作放在花括号内。

例.png

一个语义动作在产生式中的位置决定了这个动作的执行时间

SDD与SDT
  • SDD
  1. 是关于语言翻译的高层次规格说明。
  2. 隐蔽了许多具体实现细节,使用户不必显式地说明翻译发生的顺序。
  • SDT
  1. 可以看作是对SDD的一种补充,是SDD。
  2. 显式地指明了语义规则的计算顺序,以便说明某些实现细节。

相关文章

网友评论

      本文标题:编译器笔记19-语法制导翻译-概述

      本文链接:https://www.haomeiwen.com/subject/jmaewctx.html