gpt4 book ai didi

parsing - LR(0) 解析器怎么能离开状态 0?

转载 作者:行者123 更新时间:2023-12-04 05:27:04 25 4
gpt4 key购买 nike

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

Wikipedia's example, with its explanation, says :

The parser starts out with the stack containing just the initial state ('0'): [0]
The first symbol from the input string that the parser sees is '1'.

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

当解析器处于状态 0 时,它还没有移动,所以它的堆栈上没有任何符号。
鉴于它是一个 LR(0) 解析器,它也不能执行前瞻。

那么它如何使用该表来确定从状态 0 转移或减少到哪个状态?

最佳答案

转移的符号不是前瞻。它被消耗了。

LR(0) 语法必须在不咨询下一个符号的情况下决定减少。一旦他们决定不减少,他们就暗中决定转移。 [1]

移位 Action 涉及读取一个符号,将其压入堆栈,并查阅 Action 表来决定要转换到哪个状态。

这与 LR(k>0) 文法的不同之处在于 LR(k>0) 文法可以使用先行符号来决定移位和归约,而 LR(0) 文法不能。但他们都可以在阅读移位后的符号后决定进入哪个状态。


[注 1] ...或者接受,如果移位的符号是输入结束标记,但这只是状态的特例。

关于parsing - LR(0) 解析器怎么能离开状态 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13084829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com