翻译模式p172 ■语法制导翻译的两种描述形式 ◆属性文法(语法制导定义) (Grammar Directed Definition) 语义的抽象说明,隐去实现细节 ◆翻译模式(Translation Scheme) 规定实现方法,表明计算次序 ■翻译模式的特征 ◆规定在语法分析中使用语义规则进行计算的次序 ◆保证当动作使用某属性时,该属性必须是可用的 ■翻译模式的构造方法 ◆将{语义动作}插入到产生式中的某个位置 2025/4/2 可☑11
2025/4/2 11 翻译模式 p172 语法制导翻译的两种描述形式 属性文法(语法制导定义) (Grammar Directed Definition) 语义的抽象说明,隐去实现细节 翻译模式 (Translation Scheme) 规定实现方法,表明计算次序 翻译模式的特征 规定在语法分析中使用语义规则进行计算的次序 保证当动作使用某属性时,该属性必须是可用的 翻译模式的构造方法 将{语义动作}插入到产生式中的某个位置
表达式文法的翻译模式p173 1.E→E1+T E.val:=E1.val+T.val} 2.E→T E.val:=T.vall 3.T→T1*F {T.val:=T1.val*F.val} 4.T→F {T.val:=F.val} 5.F→(E) F.val:=E.val} 6.F→1 F.val:=i.lexvall 20251412 12
2025/4/2 12 表达式文法的翻译模式 p173 1. E→E1+T {E.val:=E1.val+T.val} 2. E→T {E.val:=T.val} 3. T→T1*F {T.val:=T1.val*F.val} 4. T→F {T.val:=F.val} 5. F→(E) {F.val:=E.val} 6. F→i {F.val:=i.lexval}
中间代码形式p208 (Intermediate language/code/representation) ■许多编译程序采用的独立于机器的、复杂性 界于源语言和机器语言之间语言 ■源程序的一种内部表示一中间代码序列 (中间语言的语句) ■用中间语言过渡的好处 ◆便于进行与机器无关的优化工作 ◆使编译程序改变目标机容易,便于移植 ◆使编译程序的结构在逻辑上更为简单明确 2025/4/2 ☒13
2025/4/2 13 中间代码形式 p208 (Intermediate language/code/representation) 许多编译程序采用的独立于机器的、复杂性 界于源语言和机器语言之间语言 源程序的一种内部表示——中间代码序列 (中间语言的语句) 用中间语言过渡的好处 便于进行与机器无关的优化工作 使编译程序改变目标机容易,便于移植 使编译程序的结构在逻辑上更为简单明确
中间语言p208 ■常见形式 ◆图表示法 抽象语法树、DAG图 ◆三地址代码(抽象描述) 四元式(具体实现) ■特点 ◆形式简单、语义明确、便于翻译 ◆独立于目标语言 202514/2 章节目绿☑☑14
2025/4/2 14 中间语言 p208 章节目录 常见形式 图表示法 抽象语法树、DAG图 三地址代码(抽象描述) 四元式(具体实现) 特点 形式简单、语义明确、便于翻译 独立于目标语言
三地址代码p209 ■表达式x+y*z的三地址代码 (1)T1:=y*z 操作数 运算符 (2)T2:=x+T1 结果、 人 操作数 般形式x:=yop (1)三个地址xyz为变量、 常数或编译产生的临时变量 (2)每条语句的右边只能有一个运算符op ■赋值语句a:=b*-c+b*-c的三地址代码 (1)T1:=-c (4)T4:=b*T3 (2)T2:=b*T1 (5)T5:=T2+T4 (3)T3:=-C (6)a:=T5 2025/4/2 ☒15
2025/4/2 15 三地址代码 p209 一般形式 x := y op z (1)三个地址x y z为变量、常数或编译产生的临时变量 (2)每条语句的右边只能有一个运算符op 表达式x+y*z的三地址代码 (1)T1:=y*z (2)T2:=x+T1 赋值语句a:=b*-c+b*-c的三地址代码 (1)T1:=-c (2)T2:=b*T1 (3)T3:=-c (4)T4:=b*T3 (5)T5:=T2+T4 (6)a:=T5 结果 操作数 操作数 运算符