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

编译原理 专栏收录该内容
37 篇文章 7 订阅

定义

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


题目

令文法 G 1 G_1 G1 为:

① S − > ( L ) ∣ a S ∣ a ①S->(L)|aS|a S>(L)aSa
② L − > L , S ∣ S ②L->L,S|S L>L,SS

证明 ( S , ( a ) ) (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 TF, E + T ∗ F E+T*F E+TF

直接短语: T ∗ F T*F TF

句柄: T ∗ F T*F TF

素短语: T ∗ F T*F TF


练习 2 如下

题目:

令文法 G 1 G_1 G1 为:

① S − > a ∣ b ∣ ( T ) ① S -> a|b|(T) S>ab(T)
② T − > T d S ∣ S ② T -> TdS|S T>TdSS

证明 ( S d ( T ) d b ) (Sd(T)db) (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

<h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;">期末</span><span style="font-size:14px;background-color:#fbeeb8;">考点</span><span style="font-size:14px;">都对应</span><span style="font-size:14px;background-color:#fbeeb8;">详解视频</span><span style="font-size:14px;">,</span><span style="font-size:14px;"><span style="color:#e03e2d;">基础阶段</span></span><span style="font-size:14px;">内容全面,语言通俗易懂(翻译书中的语言为</span><span style="font-size:14px;background-color:#fbeeb8;">人话)</span><span style="font-size:14px;">,</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;">老师精心研究</span><span style="font-size:14px;background-color:#fbeeb8;">百份</span><span style="font-size:14px;">考卷,总结每一个考点,同时结合你肯定可以听懂的骚话,</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;background-color:#fbeeb8;">扫清你的数据库系统盲区</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;"><span style="color:#e03e2d;">真题阶段</span></span><span style="font-size:14px;">为你提供</span><span style="font-size:14px;background-color:#fbeeb8;">解题思路</span><span style="font-size:14px;">,培养你的</span><span style="font-size:14px;background-color:#fbeeb8;">解题思维</span><span style="font-size:14px;">,同时</span><span style="font-size:14px;background-color:#fbeeb8;">点明考点</span><span style="font-size:14px;">,结合文档进行重点解读,加深你的印象.</span> </h4> <h4 style="font-weight:500;font-size:1.5rem;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;background-color:#ffffff;text-align:center;"> <span style="font-size:14px;color:#3598db;">只为你的高分,我们交个朋友!让每位学生都可以学的起!!</span> </h4> <p> <span style="font-size:14px;color:#3598db;"><img src="https://img-bss.csdnimg.cn/202103040423318088.png" alt="" width="788" height="450" /></span> </p>
©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值