转自http://blog.sina.com.cn/s/blog_733bf6e00100v1b2.html
关于编译原理 语法树 句柄 简单短语 短语 的区分,通过两个例子来理解概念以及方法:
例子1——语法树
S -> a|b|(T)
T -> TdS|S
Vt={a,b,d,(,)}.Vn={S,T},S是开始符
句型(Sd(T)db)是S的一个推导,其中___是句柄;____是最左素短语;____是该句型的直接短语,_____是短语。
素短语的概念:它是一个递归的定义,至少含有一个终结符,并且除它自身之外不再含任何更小的素短语,所谓最左素短语就是处于句型最左边的素短语的短语。而一个算符优先文法G的任何句型的最左素短语是满足以下条件的最左子串NaNb…NcNdN(N是非终结符,a,b,c,d是终结符)
实例:句型T+T*F+id,求出其语法树,可知,T*F是最左素短语,id也是素短语,但不是最左的。
解析:
题目中的句型可用下面的语法树表示:
S
/ | \
( T )
/ | \
T d S
/|\ |
T d S b
| /|\
S ( T )
一个句型的语法树中任一子树叶结点所组成的符号串都是该句型的短语,当子树中不包含其他更小的子树时,该子数叶结点所组成的字符串就是该句型的直接(简单)短语。
因此本题的直接