文档介绍:第四章语法制导的翻译
本章内容
介绍一种形式化的语义描述方法:语法制导的翻译,包括它的两种具体形式:语法制导的定义和翻译方案
介绍语法制导翻译的实现方法
语法制导的定义
例 简单台式计算器的语法制导定义
产生式
语义规则
L E n
print ()
E E1 + T
:= E1 .val +
E T
:=
T T1 * F
:= *
T F
:=
F(E)
:=
F digit
:=
语法制导的定义
语法制导定义的形式
基础文法
每个文法符号有一组属性
每个文法产生式A 有一组形式为b := f(c1, c2, …, ck )的语义规则,其中f 是函数,b和c1, c2, …, ck 是该产生式文法符号的属性
综合属性:如果b是A的属性,c1 , c2 , …, ck 是产生式右部文法符号的属性或A的其它属性
继承属性:如果b是产生式右部某个文法符号X的属性
语法制导的定义
综合属性
S属性定义:仅仅使用综合属性的语法制导定义
产生式
语义规则
L E n
print ()
E E1 + T
:= E1 .val +
E T
:=
T T1 * F
:= *
T F
:=
F(E)
:=
F digit
:=
语法制导的定义
8+5*2 n的注释分析树
= 2
L
= 18
n
= 10
= 8
= 8
= 8
= 8
= 5
+
*
= 5
= 2
= 5
语法制导的定义
分析树各结点属性的计算可以自下而上地完成
= 2
L
= 18
n
= 10
= 8
= 8
= 8
= 8
= 5
+
*
= 5
= 2
= 5