语法制导的翻译

语法制导定义

Syntax-Directed Definition,SDD

语法制导的翻译

Syntax-Directed Translation,SDT

基本知识

通过向一个文法的产生式附加一些规则或程序片段

1.继承属性 inherited

父结点、本身、兄弟结点

2.综合属性 synthesized

子结点、本身

3.终结符号可以由综合属性,不能由继承属性

--语法分析树(parse tree) P28

用图形的方式展现了从文法的开始符号推导出相应语言中的符号串的过程

--语法树(syntax tree)P25

表示了源程序的层次化语法结构

L属性的定义(L-attributed definition)

每个属性必须是一个综合属性,或一个继承属性(1、产生式头关联的继承属性 2.是左边文法符号的继承或综合属性,3.不存在环)

应用

构造抽象语法树

语法制导的翻译方案

在产生式体中嵌入程序片段的一个上下文无关文法

在语法分析过程中,产生式体中的一个动作在它左边的所有文法符号都被匹配之后立刻执行

 将L属性的SDD转换为一个SDT的规则

 1.非终结符号A的继承属性的动作插入到 产生式体 中紧靠A的本次出现之前的位置上

 2.产生式头的综合属性的动作放置在产生式体的最右端

任何SDT都可以通过下面的方法实现

 1.建立一个棵语法分析树

 2.按照从左到右的深度优先顺序执行这些动作,在一个前序遍历的过程中执行

posted @ 2023-12-10 11:03  kashin05  阅读(63)  评论(0)    收藏  举报