chpt7-2属性文法和语法制导.ppt

chpt7-2属性文法和语法制导.ppt

ID:48182851

大小:793.00 KB

页数:86页

时间:2020-01-18

chpt7-2属性文法和语法制导.ppt_第1页
chpt7-2属性文法和语法制导.ppt_第2页
chpt7-2属性文法和语法制导.ppt_第3页
chpt7-2属性文法和语法制导.ppt_第4页
chpt7-2属性文法和语法制导.ppt_第5页
资源描述:

《chpt7-2属性文法和语法制导.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、7.2属性文法和语法制导翻译程序设计语言的语义静态语义是对程序约束的描述,这些约束无法通过抽象语法规则来妥善地描述,实质上就是语法规则的良形式条件,它可以分为类型规则和作用域/可见性规则两大类如:类型相容性变量先声明后引用名称相关要求动态语义程序单位描述的计算编译程序的语义处理工作静态语义审查执行动态语义(计算)生成代码...语法分析后的源程序Þ语义处理语义形式化语义建模形式语义学(如指称语义学、公理语义学、操作语义学等)的研究已取得了许多重大的进展文法模型----属性文法命令式或操作式模型-----操作语义

2、学应用式模型-----指称语义学公理式模型-----公理语义学属性文法和语法制导翻译在实际应用中比较流行的语义描述和语义处理的方法1属性文法概述2基于属性文法的处理方法3S-属性文法的自下而上计算L-属性文法L-属性文法和自顶向下翻译自下而上的分析中实现L-属性文法7.2.1属性文法概述表达式文法E—>T+T

3、TorT T—>n

4、bET1+T2{T1.type=intT2.type=T1.typeE.type:=int}ET1orT2{T1.type=boolT2.type=T1.typeE.type:=

5、bool}Tn{T.type:=int}Tb{T.type:=bool}input:/*emptystring*/

6、inputline;line:''

7、exp''{printf("t%.10g",$1);}

8、error‘’;exp:NUM{$$=$1;}

9、exp'+'exp{$$=$1+$3;}

10、exp'-'exp{$$=$1-$3;}

11、exp'*'exp{$$=$1*$3;}

12、exp'/'exp{$$=$1/$3;}

13、'-'exp%precNEG{$$=-$2;}

14、exp'^'exp{

15、$$=pow($1,$3);}

16、'('exp')'{$$=$2;};属性文法属性文法(attributegrammar)是一个三元组:A=(G,V,F),其中G:是一个上下文无关文法V:有穷的属性集,每个属性与文法的一个终结符或非终结符相连,这些属性代表与文法符号相关信息,如它的类型、值、代码序列、符号表内容等等.属性与变量一样,可以进行计算和传递。属性加工的过程即是语义处理的过程。F:关于属性的属性断言或一组属性的计算规则(称为语义规则).断言或语义规则与一个产生式相联,引用该产生式左端或右端的终结符或非终

17、结符相联的属性.属性通常分为两类:综合属性和继承属性。简单地说,综合属性用于“自下而上”传递信息,而继承属性用于“自上而下”传递信息。属性文法中,对应于每个产生式A都有一套与之相关联的语义规则,每条规则的形式为b:=f(c1,c2…ck)f是一个函数,b和c1,c2…ck是该产生式文法符号的属性.并且(1)如果b是A的一个属性,c1,c2…ck是产生式右部文法符号的属性或A的其他属性,则称b是A的综合属性(2)如果b是产生式右部某个文法符号X的一个属性,并且c1,c2…ck是A或产生式右边任何文法符号的属

18、性,则称b是文法符号X的继承属性在两种情况下,我们都说属性b依赖于属性c1,c2…ck一般,对出现在产生式左边的继承属性和出现在产生式右边的综合属性都必须提供一个计算规则。属性计算规则中只能使用相应产生式中的文法符号的属性,然而,出现在产生式左边的继承属性和出现在产生式右边的综合属性不由所给定的产生式的属性计算规则进行计算,它们由其它产生式的属性规则计算或者由属性计算器的参数提供。AX1X2…XnA的综合属性S(A)计算公式S(A):=f(I(X1),…,I(Xn))Xj的继承属性T(Xj)计算公式T(Xj

19、):=f(I(A),...I(Xn))1)非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性.2)终结符只有综合属性,它们由词法程序提供.如非终结符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是在其他地方计算的。语义规则所描述的工作可以包括属性计算、静态语义检查、符号表操作、代码(中间)生成等等。有些语义规则可能产生副作用(如产生代码),也可能是个函数,通常把这

20、样的语义规则写成过程调用或过程段一个属性文法和综合属性的例子例.1非终结符E、T及F都有一个综合属性val,符号digit有一个综合属性,它的值由词法分析器提供。与产生式L→E对应的语义规则仅仅是打印由E产生的算术表达式的值的一个过程,我们可认为这条规则定义了L的一个虚属性。某些非终结符加上标是为了区分一个产生式中同一非终结符多次出现语义规则LEEE1+TETTT1*FTFF(E)FdigitPri

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。