Ll-1解析器:Follow-set真的有必要吗? [英] LL-1 Parsers: Is the FOLLOW-Set really necessary?

查看:17
本文介绍了Ll-1解析器:Follow-set真的有必要吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

据我所知,如果输入流中有错误,跟随集会在第一个可能的时刻告诉我。对吗?

因为不然的话,我想知道你到底需要它做什么。考虑到您的解析器在堆栈的顶部有一个非终结点(在我们的类中,我们使用了一个堆栈作为LL解析器的抽象)

[TOP]   X...[BOTTOM]
下一步将替换X,因为它位于堆栈的顶部。因此,解析器询问解析表对X使用什么派生。
+ b

其中+b都是终端。

假设X的第一个集合中有"",即空字符串。并且在他的第一盘中没有+

在我看来,在这种情况下,解析器可以简单地检查第一组X中没有+,然后使用派生,使X分解为""即空字符串,因为这是解析器继续解析输入而不抛出错误的唯一方法。如果输入流无效,解析器无论如何都会在稍后的某个时刻识别它。我知道下面的集合可以帮助您立即确定解析是否可以继续进行而不会出错。

我的问题是--这真的是下面这套设备所扮演的唯一角色吗?

我希望我的问题属于这里-如果不是,我很抱歉。如果有什么不清楚的地方,也可以要求澄清。

提前谢谢您

推荐答案

您说得对。解析器最终可能只是继续解析,并最终以另一种方式发现冲突。 此外,下面的集合在关于语法的推理中可以非常方便。不是由解析器,而是由构造语法的人。例如,如果您发现存在任何First/First或First/Follow冲突,则说明您的语法不明确,可能需要对其进行修改。

这篇关于Ll-1解析器:Follow-set真的有必要吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆