translation(1).ppt - 1 E E E Preorder(T E id1 cfw id...

Info icon This preview shows pages 1–11. Sign up to view the full content.

View Full Document Right Arrow Icon
1 第五章 语法制导翻译
Image of page 1

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
2 树的前根遍历 前序遍历 Pre order ( T ) { if(T==NULL ) return; Visit(T->data) for ( 从左边开始,对 T 的每个孩子结点 C ) Preorder ( C ); } // 自顶向下 E E E + * E E id1 id 2 id 3
Image of page 2
3 树的后根遍历 后序遍历 Postorder ( T ) { if(T==NULL ) return; for ( 从左边开始,对 T 的每个孩子结点 C ) Postorder ( C ); Visit(T->data) } // 自底向上 E E E + * E E id1 id 2 id 3
Image of page 3

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
4 树的遍历 Mixorder ( T ) { if(T==NULL ) return; Visit1(T->data) for ( 从左边开始,对 T 的每个孩子结点 C ) Mixorder ( C ); Visit2(T->data) } E E E + * E E id1 id 2 id 3
Image of page 4
5 在文法中,文法符号通常都有明确的意义,文法符 号之间也有确定的语义关系。 属性 描述语义信息,用 语义规则 描述属性之间的 关系,将语义规则与语法规则相结合。 语法制导翻译 (Syntax-Directed Translations) :在语法分析的过程中计算语义属 性值。 SDT E E 1 +T E.code = E 1 .code || T.code || ‘+’
Image of page 5

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
6 介绍一种形式化的语义描述方法:语法制导的翻译,包 括两种具体形式 语法制导定义 ( Syntax-Directed Definitions, SDD ) :定义翻译所必须的语义属性和语义规则,一 般不涉及计算顺序。 E E 1 +T E.code = E 1 .code || T.code || ‘+’ 翻译方案 (translation schemes) : 给出语义规 则的计算顺序。 E E 1 +T { print ‘+’ } 介绍语法制导翻译的实现方法。 先构造语法分析树,然后通过访问树的结点来计算结点的属性的值。
Image of page 6
7 语法制导翻译的一般过程 输入符号串 分析树 依赖图 语义规则的计算顺序 一个句子的翻译过程可以与语法分析过程并行。
Image of page 7

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
8 5.1 语法制导定义 SDD 语法制导定义是对 CFG 的推广,每个文法符号都 有一个相关的属性集。 属性:语义信息。一个文法符号通常用一个或若干 个属性来描述它的语义信息。典型例子: 变量的数据类型 表达式的值 变量的存储位置 程序的目标代码 E E E + * E E id1 id 2 id 3 E E 1 +E 2 E.code = E 1 .code || E 2 .code || ‘+’ E.code =“id2 id3 *”
Image of page 8
9 5.1.1 综合属性和继承属性 综合属性 :在分析树结点 N 上的非终结符 A 的综合属 性是由 N 上的产生式所关联的语义规则来定义的。 A 是产生式的头。结点 N 上的综合属性只能通过 N 的子 结点的属性值或结点 N 本身的属性值计算得到。 E E 1 +T E.code = E 1 .code || T.code || ‘+’ 继承属性 :在分析树结点 N 上的非终结符 B 的继承属 性是由 N 的父结点上的产生式所关联的语义规则来定 义的。 B 出现在产生式的体中。结点 N 上的继承属 性只能通过 N 的父结点的属性值、结点 N 本身的属性 值或 N 的兄弟结点的属性值计算得到。 synthesize [‘sɪnθə,saɪz] vt. 综合 ; 合成 inherit [ɪn'hɛrɪt] vt. 继承 ( 传统、遗产等 )
Image of page 9

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
我们不允许结点 N 上的继承属性通过 N 的子结点上
Image of page 10
Image of page 11
This is the end of the preview. Sign up to access the rest of the document.