概念
语法制导翻译方案SDT是在产生式右部嵌入了程序片段(称为语义动作)的CFG
例如:
SDT可以看做是SDD的具体实施方案。
在两种情况下,SDT可以在语法分析过程中实现:
- 基本文法可以使用LR分析技术,且SDD为S属性
- 基本文法可以使用LL分析技术,且SDD为L属性
将S-SDD转换为SDT
将一个S-SDD转换为SDT的方法就是将每个语义动作都放在产生式的最后。
例如:
S-SDD的SDT实现
如果一个S-SDD的基本文法可以使用LR分析技术,那么它的SDT可以在LR语法分析过程中实现。
将L-SDD转换为SDT
- 将计算某个非终结符号A的继承属性的动作插入到产生式右部中紧靠在A的本次出现之前的位置上
- 将计算一个产生式左部符号的综合属性的动作放置在这个产生式右部的最右端。
L-SDD的SDT实现
如果一个L-SDD的基本文法可以使用LL分析技术,那么它的SDT可以在LL或LR语法分析过程中实现。
由于上述文法的SELECT
集互不相交,所以该文法是一个LL文法,所以这个L-SDD可以在LL或LR语法分析过程中实现。