编译原理 —— 短语、直接短语、素短语和句柄

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/starter_____/article/details/88601595

定义

如果 β β 中至少含有一个终结符,而且除它自身之外不再含任何更小的素短语,那么称 β β 素短语


题目

令文法 G 1 G_1 为:

S > ( L ) a S a ①S->(L)|aS|a
L > L , S S ②L->L,S|S

证明 ( S , ( a ) ) (S,(a)) 是它的一个句型,指出这个句型的所有短语,直接短语,句柄和素短语。


步骤一:画出语法树

在这里插入图片描述


步骤二:判断短语

  • 一个句型的语法树中任一子树的叶节点所组成的符号串都是该句型的短语。
  1. 对于第一层的非终结符 S ,其叶节点所组成的短语是(S,(a))
  2. 对于第二层的非终结符 L ,其叶节点所组成的短语是S,(a)
  3. 对于第三层的非终结符 L ,其叶节点所组成的短语是S
  4. 对于第三层的非终结符 S ,其叶节点所组成的短语是(a)
  5. 对于第四层的非终结符 L ,其叶节点所组成的短语是a
  6. 对于第五层的非终结符 S ,其叶节点所组成的短语是a

故短语有:

① (S,(a))
② S,(a)
③ S
④ (a)
⑤ a


步骤三:判断直接短语

  • 一个句型的语法树中任一最小子树的叶节点所组成的符号串都是该句型的短语。

故直接短语有:

① S
② a


步骤四:判断句柄

  • 句柄是最左边的直接短语

故句柄为:

① S


步骤五:判断素短语

  • 有后往前对短语进行判断,如果短语中至少含有一个终结符,而且除它自身之外不再含任何更小的素短语,那么称该短语为素短语

① 对于短语 a ,a不含其他任何更小的素短语。故短语 a 为素短语
② 对于短语 (a) ,(a) 含素短语 a。故短语 (a) 不是素短语
③ 对于短语 S ,S 不含终结符。故短语 S 不是素短语
④ 对于短语 S,(a) ,S,(a) 含素短语a。故短语 S,(a) 不是素短语
⑤ 对于短语 (S,(a)) ,(S,(a)) 含素短语a。故短语 (S,(a)) 不是素短语

故素短语为:

① a


练习 1 如下

题目:
在这里插入图片描述

语法树:
在这里插入图片描述

短语: T F T*F , E + T F E+T*F

直接短语: T F T*F

句柄: T F T*F

素短语:不存在


练习 2 如下

题目:

令文法 G 1 G_1 为:

S > a b ( T ) ① S -> a|b|(T)
T > T d S S ② T -> TdS|S

证明 ( S d ( T ) d b ) (Sd(T)db) 是 S 的一个句型,并求出短语,直接短语,句柄和素短语。

语法树:

在这里插入图片描述

短语:S,(T),b,Sd(T),Sd(T)db,(Sd(T)db)

直接短语:S,(T),b

句柄:S

素短语:(T),b


参考链接:

https://blog.csdn.net/it_dream_er/article/details/53612006

猜你喜欢

转载自blog.csdn.net/starter_____/article/details/88601595