1 / 62
文档名称:

编译原理 第六章属性文法和语法制导翻译.ppt

格式:ppt   页数:62
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译原理 第六章属性文法和语法制导翻译.ppt

上传人:小猪猪 2011/11/30 文件大小:0 KB

下载得到文件列表

编译原理 第六章属性文法和语法制导翻译.ppt

文档介绍

文档介绍:编译原理
第六章
属性文法和语法制导翻译
本章主要内容
语法制导翻译与属性文法
综合属性与 S 属性文法
S 属性文法的自底向上计算
继承属性与 L 属性文法
L 属性文法的自顶向下计算
L 属性文法的自底向上计算
语法制导的翻译
词法分析,语法分析:单词和语言成分的识别及词法和语法结构的检查。
编译器的接下去的任务是将高级语言翻译成目标代码
lvalue d
push 9
rvalue y
+
push 2
-
:=
d := 9 + y – 2
翻译
语法制导的翻译
这个翻译的过程是在语法分析过程中同步完成的,所以我们称为语法制导翻译
在自顶向下或是自底向上过程中同步完成翻译,分析一条语句,翻译一条语句
本章介绍比较流行的:
基于属性文法的语法制导翻译方法
属性文法
是上下文无关文法的拓展。在上下文无关文法的基础上,为每个文法符号(终结符或非终结符)配备若干相关的“值”(称为属性)。
属性代表与文法符号相关信息,如类型、值、代码序列、符号表内容等
属性可以进行计算和传递
语义规则:对于文法的每个产生式都配备了一组属性的计算规则
属性文法:上下文无关文法的扩展
附加了一组属性和运算(语义)规则的文法
文法符号 X 的属性 t 常用 来表示
1. 属性

语义信息
语义之间的关系
一个简单的计算器属性文法
产生式
语义规则
L  E n
print ()
E  E1 + T
:= E1 .val +
E  T
:=
T  T1 * F
:= *
T  F
:=
F(E)
:=
F  digit
:=
属性
每个文法符号有一组属性,例如
属性可以表示
数值(比如“27”, “”的值)
字符串(比如“Hello”)
内存位置,例如一个局部变量或函数参数在内存中的地址
某个变量的作用域,例如:全局还是局部
程序的中间代码表示:如(+, t2, t3, t5)
属性的类型
综合属性:“自下而上”传递信息
继承属性:“自上而下”传递信息
在一个属性文法中,对应于每个产生式A→都有一套与之相关联的语义规则,每条规则的形式为:
b:=f(c1,c2,…,ck)
这里,f是一个函数,而且或者
1. b是A的一个综合属性并且c1,c2,…,ck是产生式右边文法符号的属性,或者
2. b是产生式右边某个文法符号的一个继承属性并且c1,c2,…,ck 是A或产生式右边任何文法符号的属性。
这两种情况下称属性b依赖于属性c1,c2,…,ck。