首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何读取LR(1) DFA中的减少/移位冲突?

如何读取LR(1) DFA中的减少/移位冲突?
EN

Software Engineering用户
提问于 2012-11-29 21:44:29
回答 1查看 639关注 0票数 1

我正在读一篇解释( D.Grune和C.J.H.Jacobs的“解析技巧”),第二版的第293页),我从我的最后一个问题:在为解析器构造LR(1) NFA时,如何获得前瞻性符号?

现在我遇到了这样的“问题”(也许不是问题,而是需要一些更有见识的人的确认)。

作者在LR(0)中给出了具有减少/移位冲突的状态。然后,他们为LR(1)为相同的语法构建DFA。现在他们说它没有冲突(最后看上去是这样的):

代码语言:javascript
运行
复制
S -> E .        eof
E -> E . - T    eof
E -> E . - T    -

这个状态有一个边,标记为-,但没有标记eof。作者说,在eof上会有减少,在-上会有变化。

然而,eof也适用于shift (以及展望)。所以我个人对LR(1) DFA的理解是--你可以选择轮班,因为它们现在没有任何用途--轮班依赖于输入,而不是看头--在那之后,删除重复。

代码语言:javascript
运行
复制
S -> E .        eof
E -> E . - T    

因此,read的展望实际上是作为输入,因为在这个阶段(所有所需的输入都已读取),它现在实际上是传入的符号。对于移位,输入符号在边缘。

所以我的问题是-我真的是对的吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2012-12-04 18:57:16

在DFA中,看最后的形式并不重要--下一个表示移位的符号在边缘。

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

https://softwareengineering.stackexchange.com/questions/177760

复制
相关文章

相似问题

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