第八章 语法制导翻译
学习目标 语义分析程序将依据语言的语义规则对语法分析得到 的语法结构进行静态语义检查(确定类型、 的语法结构进行静态语义检查(确定类型、类型和运算合法 性检查、 性检查、识别含义与相应的语义处理及其它一些静态语义检 ),并用另一种内部形式表示出来 并用另一种内部形式表示出来, 查),并用另一种内部形式表示出来,或者直接用目标语言 表示出来。 表示出来。
8.1.1 一般原理
翻译的任务:首先是语义分析和正确性检查,若正确, 翻译的任务:首先是语义分析和正确性检查,若正确, 则翻译成中间代码或目标代码。 则翻译成中间代码或目标代码。 语义分析通常采用语法制导翻译。基本思想是,根据翻 语义分析通常采用语法制导翻译。基本思想是 语法制导翻译 译的需要设置文法符号的属性,以描述语法结构的语义。 译的需要设置文法符号的属性,以描述语法结构的语义。 例如,一个变量的属性有类型,层次,存储地址等。 例如,一个变量的属性有类型,层次,存储地址等。表 达式的属性有类型,值等。 达式的属性有类型,值等。属性值的计算和产生式相联 随着语法分析的进行,执行属性值的计算, 系。随着语法分析的进行,执行属性值的计算,完成语 义分析和翻译的任务。 义分析和翻译的任务。
(3)
8.1.1 一般原理
例如: 例如 SDTS T1=({a,b,c,+,,[,]},{E,T,A},{ADD,SUB,N EG,x,y,z},R,E),其中 由下 ,其中R由下 列翻译规则组成: 列翻译规则组成: ①E→ E+T,T E ADD → E→ ②E→ E-T,E T SUB ③E→ –T,T NEG → ④E→ T,T → ⑤T→ [E],E → ⑥T→ A,A → ⑦A→ a,x → ⑧A→ b,y → ⑨A→ c,z →