[编译原理] 短语,直接短语,句柄辨析
根据概念:
可以看到他们之间有一种包含关系:
现在来解释一下概念:
- 子树:子树从概念上看,就是包含某个根的所有的叶子结点(这个根推导出来的)的树
- 短语:某个子树的叶子节点的序列
- 直接短语:二级子树的叶子节点的序列(子树中不再包含其他的子树,即A只能推导出b,而b不能再推出其他的式子,则b为此句型的直接短语)
- 句柄:最左边的直接短语
用一个栗子来理解一下:
证明是句型,我们只需要根据文法能够画出他的抽象语法树就可以证明:
因为E⇒E+T⇒E+TF, 所以E+TF是该文法的一个句型。
根据语法树,对于子树T来说,其所有叶子节点为:T*F,对于E来说,其所有叶子节点为:E+T*F故短语为 T*F 和 E+T*F
那么我们就能推出:
- 短语: T*F, E+T*F
- 直接短语:T*F
- 句柄:T*F