【20200415】编译原理课程课业打卡十五之求解预测分析表&分析输入串是否为文法句子


叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
在这里插入图片描述

一、课业打卡十五之求解预测分析表&分析输入串是否为文法句子

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

对文法G[S]:
S->a|^|(T)
T->T,S|S
(1)给出 (a,(a,a))(((a,a), ^ ,(a)), a) 的最左推导。
(2)对文法G进行改写,然后对每个非终结符写出不带回溯的递归子程序。
(3)经改写后的文法是否是LL(1)的?给出它的预测分析表。
(4)给出输入串 (a,a)# 的分析过程,并说明该串是否为G的句子。

题解如下:
(1)给出 (a,(a,a)) 和 (((a,a), ^ ,(a)), a) 的最左推导。
在这里插入图片描述
(2)对文法G进行改写,然后对每个非终结符写出不带回溯的递归子程序。
在这里插入图片描述

在这里插入图片描述

(3)经改写后的文法是否是LL(1)的?给出它的预测分析表。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(4)给出输入串 (a,a)# 的分析过程,并说明该串是否为G的句子。
在这里插入图片描述

二、知识巩固

1、上下文无关文法的句型的推导

最左(最右)推导:在推导的任何一步α=>β,其中α、β是句型,都是对α中的最左(右)非终结符进行替换。

**最右**推导被称为规范推导。

由规范推导所得的句型称为规范句型

2、分析算法分类

自上而下分析法:从文法的开始符号出发,反复使用各种产生式,寻找与输入符号匹配的最左推导。
自下而上分析法:从输入符号串开始,逐步进行归约(最右推导的逆过程),直至归约到文法的开始符号。

3、分析算法伪代码

BEGIN
   首先把’#‘然后把文法开始符号推入栈;把第一个输入符号读进a;    FLAG:=TRUE;
WHILE FLAG  DO  
     BEGIN
       把栈顶符号上托出去并放在X中;
            IF X 属于 Vt  THEN  IF X=a  THEN
                          把下一个输入符号读进a
                        ELSE ERROR
                        ELSE  IF X=#’ THEN
                     IF X=a  THEN  FLAG:=FALSE
                     ELSE ERROR
       ELSE IF M[X,a]={X->X1X2..XK}
          THEN   把XK,X K-1,..,X1一一推进栈 
          ELSE ERROR
   END OF WHILE;
STOP/*分析成功,过程完毕*/
END

4、预测分析表构造算法

1.对文法G的每个产生式A->q 执行第二步和第三步;
2.对每个终结符a属于FIRST(q),把A->a加 至M[A,a]中,
3.若 空字 属于FIRST(q),则对任何 b属于FOLLOW(A) 
把A->q 加至M[A,b]中,
4.把所有无定义的M[A,a]标上“出错标志”。

5、非LL(1)文法的改造

(1) 消除左递归
(2) 提左公因子
将产生式A->|ay 变换为:
   A->aB
    B ->β|y

在这里插入图片描述
实例:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6、分析符号串是否为文法的句子实例

在这里插入图片描述

Ending!
更多课程知识学习记录随后再来吧!

就酱,嘎啦!

在这里插入图片描述

注:
人生在勤,不索何获。

  • 34
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发芽ing的小啊呜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值