First集、Follow集、Predict集的简单求法 三个重要集合

求3个重要集合的公式比较复杂难记,因此要理解求集合的目的,然后记住求法,而不是公式。

First集:首符集

A->β
目的:
First(A)集合,就是要求出A能推导出的所有终极符串的 开头的那个终极符 的集合。
在自顶向下语法分析中,可以根据输入字符属于哪个产生式的first集,选择相应的产生式。

方法:
1、β是就是终极符
如β->a 则这个终极符(a)加入first集
2、β的第一个符号是终极符
如:A->aX 则这个终极符(a)加入 first集
3、β是ε
如:A->ε 则ε加入first集
4、β的第一个符号不是终极符
①如果β中都是非终极符,这些非终极符的first集都有ε,则ε加入first集

如A->BCD B、C、D的first集中都有ε,则BCD的first集都加入first集
②如果β中的,前i个非终极符的first集中都有ε,则将第一个到第i+1个符号的first集都除去ε,然后加入first集
如A->BCd B->a|ε C->ε 有first(B)={a、ε} first(C)={ε}
则first(A)为B、C、d的first集除去ε,为:a、d
验证:A可能为ad、d , 因此首符集 first(A)={a、d}

Follow集:跟随符集

A->β
目的:求出在某个句型中出现在A的后面的终极符的集合
在自顶向下语法分析中,当β可以推出空串,选择输入符号在follow集合中的产生式进行推导。
方法:
1、初始化,开始符的follow集加入“#”,其余follow集合为空;
2、如果想求B,找A->…B…
首先,B的右边符号为空或其first集含ε时,把A的follow集加入B的follow集
如 A->aB
然后,B后面的符号的first集去掉ε,加入follow集。
直到收敛,不再增加。

Predict集:预测符集

目的:综合了first集和follow集,在自顶向下语法分析中,根据输入符号,预测产生式。
方法:
A->β
1、first(β)中没有ε,first(β)即为predict集
2、first(β)中有ε,first(β)除去ε,加上follow(A)即为predict集

  • 12
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值