- 1、本文档共119页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华东师范大学计算机科学技术系课件
第五章 语法制导翻译和中间代码生成;一、静态语义检查;(3) 有关名字的匹配检查。
可以对某些程序段命名,该名字出现在程序段的开始和结束处,如同语句括号一般,应检查它们的配对。
(4) 一致性检查。
如在相同作用域中标识符只能说明一次(重复定义),case语句的标号不能相同,枚举类型的元素不能重复,没有定义数据类型等。
;二、语法制导翻译;若采用自底向上的句法分析,规定当用产生式A??归约时,调用相应的语义子程序,则翻译结束后输出 64264154632。
若采用自顶向下的句法分析,规定当用产生式A??推导时,调用相应的语义子程序,则翻译结束后输出 23451246466。
应根据输出(翻译)目标,配备适当的语义子程序,这就是所要做的工作。;三、翻译要解决的问题;2. 何时进行这种翻译?;3. 如何实现这种翻译?;结论;§5.2 中间语言;后缀表示??以机械地计算。
中缀表示可以机械地转换为后缀表示。(E.W.Dijkstra)
例2: (-a*b+c)-d的后缀表示为:a b* uminus c+d-
其中uminus表示一元运算‘-’。
后缀表示的推广:
O1,O2,……,On,? 其中?是n元的运算符,Oi为运算对象 i=1,2……n。
假定:后缀表示存放在一维数组S中,S[i]是一个单词;例3:赋值语句 V:=E 若V,E’分别为V、E的后缀表示,赋值语句的后缀表示为:V E’:=
如:A:=B*C+D 则为 ABC*D+:=
例4:条件语句 ifEthenS1elseS2的后缀表示为:E’ i1 BZ S1’ i2 BR S2’
其中: E’, S1’, S2’分别是E,S1,S2的后缀 表示。
i1是S2’的首符号在S数组中的下标
i2是S2’的尾符号在S数组中的下标加1
BZ是运算符表示“零转”
BR是运算符表示“无条件转”;试将语句if x5 then x:=a;else x:=b;表示成逆波兰表示
引入二元运算符BZ、一元运算符BR。逆波兰表示 T,i,BZ的含义为若T的值为零,则转到位置为i处执行。i,BR的含义为无条件转移到位置i处执行。
假定上述语句的逆波兰表示存放在一维数组S中,用数组的下标表示转向的位置。S数组可描述为: ;二、图(树、抽象句法树)表示;三、三地址代码;三地址语句通常包含三个地址,两个用来存放运算对象,一个用来存放运算结果。在实现时,用户定义的名字将由指向符号表中该名字项的指针所代替。
;四、三地址语句的种类;(4) goto L
无条件转移语句,下一个将被执行的语句是标号为L的语句。
(5) if x relop y goto L 或 if x goto L
条件转移语句, relop为关系运算符如、=、、=等,若x和y满足关系relop就转而执行标号为L的语句,否则顺序执行本语句的下一语句。;(6) param X 和 call P,n
过程调用语句,源程序中的过程调用语句
call P(x1, x2, …, xn)可以用下列三地址代码表示:
param x1
param x2
……
param xn
call P, n
其中整数n为实参个数。
过程返回语句为return y,其中y为返回值。;(7) 变址赋值:
x:=y[i],表示将从地址y开始的第i个地址单元的值赋给x。
x[i]:=y,表示将y的值赋给从地址x开始的第i个地址单元。
(8) 地址和指针赋值:
x:=y 表示将y的地址赋给x,y可认为是一个名字或者为一个临时变量,而x是指针名或临时变量。
x:=*y 表示将y指示的地址单元中的内容赋给x。y是一个指针或临时变量。
*x:=y 表示将y的值于x的地址单元中。;五、多元组表示;四元组(式);例6:对于赋值语句a:=b*-c+b*-c相应四元组代码为:
0:(uminus, c, /, t1)
1:(*, b, t1, t2)
2:(uminus, c, /, t3)
3:(*, b, t3, t4)
4:(+, t2, t4, t5)
5:(:=, t5, /, a);三元组(式);间接三元组(式);比较(一);比较(二);§5.3 属性(翻译)文法(ATG);一、语法制导定义;解释;每个产生式相应的属性计算规则需满足的条件集用B(p)表示,并不是每个属性规则的计算都是有条件的,它常常缺省。;二、属性的分类;对于属性X.a,如果存在产生式 p:X→? ?P , 而 X.a?AF(p),则称X.a为综合(合成)属性(Synthesized Attribute)。
也可以这样表述:
对X →? ?P
文档评论(0)