编译原理——SDT在产生式中的操作

一、SDT在产生式中的操作

一个操作可以发生在产生式的任何位置。在它左边的符号都运行完成之后,这个操作就会立即执行。因此,如果有一个产生式B->X{a}Y,当识别出X(如果X是一个终结符)或者所有由X(如果X是一个非终结符)派生而来的终结符之后,就执行了操作a。更确切的说:

1.如果是自底向上解析,那么在X出现在解析栈顶时,操作a就会执行。

2.如果是自顶向下解析,那么在准备扩展Y(如果Y是非终结符)或者准备检查Y(Y是终结符)的输入之前,就会执行a操作。

二、从SDD转化到SDT的L属性规则

1.在产生式中出现A之前,立即计算非终结符A的继承属性值的操作。如果A的多个继承属性以非循环的方式相互依赖,那么应该对这些属性值排序,以便于先计算出所需要的属性。

2.将产生式前部分计算综合属性的操作放在该产生式的末尾部分。

你可能感兴趣的:(编译原理——SDT在产生式中的操作)