- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理;6.1 属性文法;属性
综合属性:“自下而上”传递信息
继承属性:“自上而下”传递信息
在一个属性文法中,对应于每个产生式A→?都有一套与之相关联的语义规则,每条规则的形式为:
b:=f(c1,c2,…,ck)
这里,f是一个函数,而且或者
1. b是A的一个综合属性并且c1,c2,…,ck是产生式右边文法符号的属性,或者
2. b是产生式右边某个文法符号的一个继承属性并且c1,c2,…,ck 是A或产生式右边任何文法符号的属性。
属性b依赖于属性c1,c2,…,ck。;4;5;6;例,考虑非终结符A,B和C,其中,A有一个继承属性a和一个综合属性b,B有综合属性c,C有继承属性d。产生式A→BC可能有规则
C.d:=B.c+1
A.b:=A.a+B.c
而属性A.a和B.c在其它地方计算 ; 产 生 式
L→En
E→E1+T
E→T
T→T1*F
T→F
F→ (E)
F→digit
;综合属性
在语法树中,一个结点的综合属性的值由其子结点的属性值确定。
使用自底向上的方法在每一个结点处使用语义规则计算综合属性的值
仅仅使用综合属性的属性文法称S-属性文法; 产 生 式
L→En
E→E1+T
E→T
T→T1*F
T→F
F→ (E)
F→digit
;3*5+4n的带注释的语法树 ;继承属性
在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定
用继承属性来表示程序设计语言结构中的上下文依赖关系很方便; 产 生 式 语 义 规 则
D→TL L.in := T.type
T→int T.type := integer
T→real T.type := real
L→L1, id L1.in :=L.in
? addtype(id.entry, L.in)
L→id addtype(id.entry, L.in) ;句子real id1,id2,id3的带注释的语法树 ;6.2 基于属性文法的的处理方法 ;6.2 基于属性文法的的处理方法 ;6.2.1 依赖图 ;;;句子real id1,id2,id3的带注释的语法树的依赖图;;属性的计算次序 ;句子real id1,id2,id3的带注释的语法树的依赖图;6.2 基于属性文法的的处理方法 ;6.2.2 树遍历的属性计算方法;While 还有未被计算的属性 do
VisitNode(S) /*S是开始符号*/
procedure VisitNode (N:Node) ;
begin
if N是一个非终结符 then
/*假设它的产生式为N→X1…Xm*/
for i :=1 to m do
if Xi?VN then /*即Xi是非终结符*/
begin
计??Xi的所有能够计算的继承属性;
VisitNode (Xi)
end;
计算N的所有能够计算的综合属性
end; 产 生 式 语 义 规 则
S→XYZ Z.h := S.a
X.c := Z.g
S.b := X.d -2
Y.e := S.b
X→x X.d :=2*X.c
Y→y Y.f := Y.e*3
Z→z Z.g :=Z.h+1 ;假设S.a的初始值为0,输入串为xyz;6.2 基于属性文法的的处理方法 ;6.2.3 一遍扫描的处理方法 ;;6.2.4 抽象语法树 ;建立表达式的抽象语法树 ;建立抽象语法树的语义规则; a-4+c的抽象语法树;一遍扫描的处理方法 ;6.3 S-属性文法的自下而上计算 ;在分析栈中使用一个附加的域来存放综合属性值
假设语义规则A.a:=f(X.x,Y.y,Z.z)是对应于产生式A→XYZ的 ; 产生式 代 码 段
L→En print(val[top])
E→E1+T val[ntop] := val[top-2]+val[top]
E→T
T→T1*F val[ntop] := val[top-2]*val[top]
T→F
F→ (E) val[ntop] :=val[top-1]
F→digit ; 输入
您可能关注的文档
最近下载
- CECS14-2002 游泳池和水上游乐池给水排水设计规程.docx VIP
- 实施指南(2025)《CBT 3153-2019 船舶机舱监视报警装置技术条件》.pptx VIP
- 火力发电厂厂址选择与总图运输设计——2025年注册咨询继续教育考试全正确答案.pdf VIP
- 科学教科版五年级上册全册单元复习教案.doc VIP
- YBJ-PS03-2004埋地无压预制混凝土排水圆形管管基及接口.docx VIP
- 《青年友谊圆舞曲》音乐课件10.ppt VIP
- 2010版强制性条文.docx VIP
- 珠海市香洲区招聘公办中小学教师考试真题及答案2022 .pdf VIP
- 华为PDT经理角色认知培训教材(87p).pdf VIP
- 2025年《自动控制原理》A卷期末考试试题及参考答案.docx VIP
原创力文档


文档评论(0)