学习-编译原理_第1页
学习-编译原理_第2页
学习-编译原理_第3页
学习-编译原理_第4页
学习-编译原理_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

语义处理(1)在编译程序中的逻辑位置词法分析语法分析静态语义分析中间代码生成中间代码优化(可选)目标代码生成目标代码优化(可选)语义处理(2)语义处理的工作静态语义分析类型检查控制流检查名字的作用域分析一致性检查中间或目标代码生成从 生成,个别编译程序可能直接生成目标代码语义处理跨

两个阶段语义处理(3)语义处理技术语法制导的语义处理编译程序的设计中,

语义分析和中间代码(目标代码)

生成的实现多采用许多时候直接称之为完成一旦 出来一个,,立即对其翻译技术的基础应用属性文法属性文法(Attribute

grammar)也称作

,syntax-directed

definitions

SDD语义分析与语法制导翻译的在

的基础上,

为每个配备若干相关的

“ ”

(称为

)属性的例子:数值,符号表属性文法的定义A=

(G,

V,F)G:上下文无关文法V:属性的有穷集F:

关于属性的断言和谓词,类型,代码序列E

E+

T

|

TT

T

*

F

|

FF

digit

|

id

|

(

E

)语义规则在一个属性文法中,对每个产生式都配备了一组––语义规则的形式产生式 语义规则,其中f

是一个函数属性

b

属性

c1,

c2,

…,ck综合属性,synthesized

attributeb

是 的一个属性,

c1,

c2,

,

ck是产生式文法符号的属性

A的其他属性,称b

是A

的一个继承属性

,

inherited

attributeb

是产生式 某文法符号

X

的一个属性,

且c1,c2,

,

ck是 或

产生式

文法符号

的属性,称

b

X

的一个例:计算器求值需求算术表达式的求值设计编制算术表达式的文法引入将表示作为下列文法符号的:表达式E项T因子F用描述表达式的求值L

EE

E

+

TE

TT

T

*

FT

FF

(

E)F

digit3

*

5+4

的分析树与属性计算print(E.val)产生式L

EE

E1

+TE

TT

T1

*

FT

FF

(

E

)F

digit语义规则print(

E.val)E.val

:=

E1.val

+

T.valE.val

:=

T.valT.val

:=

T1.val

*

F.valT.val

:=

F.valF.val

:=

E.valF.val

:=

digit.lexvallexval

=3val

=3lexval

=5val

=3val

=5val

=15val

=15val

=4val

=4lexval

=4val

=1919计算器的属性文法产生式L

EE

E +

TE

TT

T1

*

FT

FF

(

E

)F

digit语义规则print(

E.val)E.val

:=

E

.val

+

T.valE.val

:=

T.valT.val

:=

T1.val

*

F.valT.val

:=

F.valF.val

:=

E.valF.val

:=

digit.lexvallexval

是单词

digit

的属性--固有属性print(val)是输出函数,作为L的虚属性E.val

是还是?例:说明语句的类型信息统计说明语句的作用支持语义分析,提供语义检查的依据设计编写说明语句的文法将类型信息作为类型描述

的属性变量表

的属性目的分析说明语句D获取变量的类型信息D

T

LT

intT

realL

L,

idL

idint

a,

breal

id1,id2,id3

的分析树和属性计算产生式语义规则D

T

LL.in

:=

T.typeT

intT.type

:=

‘integer’T

realT.type

:=

‘real’L

L1

,idL1.in

:=L.inaddtype(

id.entry,

L.in

)L

idaddtype(

id.entry,

L.in)addtype(id.entry,

L.in

)addtype(id.entry,

L.in

)addtype(id.entry,

L.in

)type

=realin

=realin

=realin

=real描述类型信息提取的属性文法产生式D

T

LT

intT

realL

L1,

id语义规则L.in

:=

T.typeT.type

:=

‘integer’T.type

:=

‘real’L1.in

:=

L.inaddtype(

id.entry,

L.in

)addtype(

id.entry,

L.in

)L

identryaddtype单词

id

的属性(符号表

)在符号表中为变量填加类型信息的子程序属性文法的作用描述语义处理的要求语义信息及其计算关系适用于各种语义处理(分析、翻译、计算)语义处理的步骤属性求值计算、断言检查语义处理算法的描述方法一种通用的语义处理算法设计方法属性的计算(1)构造

,

应用综合属性计算属性一个结点的的值由其及

的属性值确定按照语义规则来计算各结点的综合属性值AA属性的计算(2)继承属性一个结点的

由其的某些属性确定需要探讨计算次序和/或XiXib属性的计算(3)固有属性单词属性归类于语言中的标识符、常数(数值的、符号的)、常量,

它们的属性是用户给定的、不变的例:F

digitF.val

:=

digit.lexval3

*

5+4

的分析树与属性计算print(E.val)产生式L

EE

E1

+

TE

TT

T1

*

FT

FF

(E

)F

→digit语义规则print(

E.val)E.val

:=

E1.val

+

T.valE.val

:=

T.valT.val

:=

T1.val

*

F.valT.val

:=

F.valF.val

:=

E.valF.val

:=

digit.lexvallexval

=3val

=3lexval

=5val

=3val

=5val

=15val

=15val

=4val

=4lexval

=4val

=1919注释分析树Annotated

parse

tree带有

和的lexvalprint(E.val)lexval

=3val

=3lexval

=5val

=15val

=3val

=5val

=15val

=4val

=4val

=1919依赖图Dependency

graph一个有向图描述特定分析树中print(E.val)lexval

=3val

=3lexval

=5val

=15val

=3val

=5val

=15val

=4val

=4lexval

=4val

=1919real

id1,id2,id3

的分析树和属性计算产生式语义规则D

T

LL.in

:=

T.typeT

intT.type

:=

‘integer’T

realT.type

:=

‘real’L

L1

,idL1.in

:=L.inaddtype(

id.entry,

L.in

)L

idaddtype(

id.entry,

L.in)addtype(id.entry,

L.in

)addtype(id.entry,

L.in

)addtype(id.entry,

L.in

)type

=realin

=realin

=realin

=realS-属性文法仅包括对于所有A

X1

X2

…Xn

,A的属性计算仅用X1,X2,…,Xn或A的属性例算术表达式求值的属性文法计算方法可以在分析输入符号的同时,

的语法分析程序来计算L-属性文法(1)一个属性文法称为要么是

,要么是满足下列限制的,

如果每个属性:假设存在一个产生式A

X1

X2

…Xn

,是Xi

的一个A的产生式中XiXi自身的成(1≤i

≤n),

仅依赖于;符号X1,

X2

,

,Xi-1

;,

且Xi的属性不会导致 中形XiaL-属性文法(2)例说明语句的属性文法计算方法可以在

的语法分析的同时实现的计算翻译模式属性文法可以看作是关于语言翻译的隐去了实现细节—翻译顺序(translation

schemes)的另一种描述方式适合特征规定在语法分析中

的保证当动作使用某属性时,该属性必须是可用的实现方法将

到例:建立说明语句的翻译方案(1)将语义动作中的计算向前移,使继承属性的计算出现在其文法符号之前产生式D

T

LT

intT

realL

L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论