首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LR(0)解析器如何离开状态0?

LR(0)解析器如何离开状态0?
EN

Stack Overflow用户
提问于 2012-10-26 10:05:13
回答 1查看 271关注 0票数 3

我至少读过维基百科的解释十几遍,但我仍然对LR( 0 )解析器如何离开状态0感到困惑。

维基百科的例子及其解释如下:

解析器从只包含初始状态('0'):[0]的堆栈开始 解析器看到的输入字符串中的第一个符号是'1'

..。但这对我来说没有意义,因为看到输入符号将执行前瞻性,但是LR(0)解析器,根据定义,不能执行查找。

当解析器处于状态0时,它还没有移动,所以它的堆栈上没有任何符号。

考虑到它是一个LR(0)解析器,它也不能执行前瞻性。

那么,它如何使用该表来确定要从状态0转换或减少到哪种状态呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-27 05:05:33

移位的符号不是向前看的。它被消耗掉了。

LR(0)语法必须在不引用下一个符号的情况下决定缩减。一旦他们决定不减少,他们就含蓄地决定转移。1

shift操作包括读取一个符号,将它推到堆栈上,并参考操作表来决定要转换到哪个状态。

这与LR(k>0)语法不同,因为LR(k>0)语法可以使用前瞻性符号来决定移位和缩减,而LR(0)语法不能。但是他们两个人都可以在读到移位的符号后决定去哪一种状态。

注意1 ...or接受,如果移位的符号是输入的结束标记,但这只是一种特殊的状态。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13084829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档