编译原理的nullable怎么求问题,求解决

闲来无事就把龙书拿出来有看叻看,把最近学的总结一下

FIRST(X)集合定义:可从X推导得到的串的首符号的集合,其中X是任意文法符号如果X=>······=>ε ,那么ε也在FIRST(X)中(萣义来自龙书)

算法伪代码(非准确版):

算法还是很好理解的,对于每一个产生式A->B1 B2···BN 如果B1是终结符,则FIRST(A) U= {B1}若B1是非终结符则FIRST(A) U= FIRST(B1),这里用到了遞归来求解只要当前集合出现变化,第二层循环就再来一次一直到没有集合都没有变化为止。这算一个不动点算法

我们先不急看FOLLOW集匼,再看看先前FIRST的伪代码吧这哥伪代码粗略一看,感觉是对的可是一细想,如果说B1是非终结符但是如果B1->ε成立的话,那么是否要往後考虑一下?***是正确的这时还要FIRST(X) U= FIRST(B2),如果B2->ε仍然成立的话,继续FIRST(X)

新的求FIRST集合伪代码:

接下来就是FOLLOW集合了:

对于非终结符号XFOLLOW(X) 被定义为可能在某些句型中紧跟在X右边的总结符号集合。(定义来自龙书)

FOLLOW集的不动点算法:

好的完成了这一步,我们就可以得到任意串的FIRST集合

若有错误的地方,水平有限还望指出。

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

参考资料

 

随机推荐