语法制导翻译和中间代码生成2.pptVIP

  • 0
  • 0
  • 约1.44千字
  • 约 35页
  • 2024-01-24 发布于广西
  • 举报

第8章语法制导翻译

和中间代码生成;语义分析是指审查语法结构合法的程序

是否真正有意义。即审查源程序有无语义错

误,为代码生成收集信息。

中间代码,又称中间语言,是复杂性介

于源程序和机器语言的一种形式。

语法制导翻译是指在语法分析过程中,

完成附加在所使用的产生式上的语义规那么描

述的动作。;教学内容:;教学方式:

讲授式+启发式;教学目的:;教学重点:

1、语法制导翻译根本思想。

2、基于属性文法的处理方法。

3、自下而上分析制导翻译概述。;教学难点:

属性文法的处理方法

教学时数:

2学时;8.1属性文法;属性文法;表达式文法E→T+T|TorT

T→n|b

E→T1+T2

{T1.type=int

T2.type=T1.type E.type:=int}

E→T1orT2

{T1.type=bool

T2.type=T1.type

E.type:=bool}

T→n

{T.type:=int}

T→b

{T.type:=bool};一个简单算数表达式求值的语法制导定义;惟独digit只使用综合属性;继承属性;Realid1,id2,id3;8.2语法制导翻译概论;8.4中间代码的形成;逆波兰记号〔后缀式〕;逆波兰记号的扩充用途;逆波兰例如;三元式和树形表示;四元式;四元式的特点;四元式的直观表示;8.4一些语句翻译

简单赋值语句的翻译;(2)E?E1+E2

{E.place:=newtemp;

emit(E.place“:=〞E1.place“+〞E2.place)}

(3)E?-E1

{E.place:=newtemp;

emit(E.place“:=〞“uminus〞E1.place)}

(4)E?(E1)

{E.place:=E1.place}

(5)E?id

{E.place:=newtemp;

P:=lookup(id.name);

ifP?nilthenE.place:=P

elseerror}

;布尔表达式翻译;条件语句的翻译;E.false;1;以上的转移地址并不能在产生四元式时得知,是在整个四元式产生完毕才知,因此需回填地址。

为了记录回填地址的四元式,常采用一种“拉链〞的方法。把需回填E.true的四元式拉成一链,把需回填E.false的四元式拉成一链,分别称为“真〞链和“假〞链。;;(1);;自下而上分析中的一种翻译方案:;

文档评论(0)

1亿VIP精品文档

相关文档