首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SLR(1)和LALR(1),关于Parse表和缩减状态

SLR(1)和LALR(1),关于Parse表和缩减状态
EN

Stack Overflow用户
提问于 2014-10-21 11:54:19
回答 1查看 1.3K关注 0票数 0

几天前,我问了一个问题,我和一些教授进行了大量的搜索和联系,但我不能概括地说,第二个问题的解决是正确的还是错误的。在两个不同的年份,我们有两个入学考试的问题。

两个问题是多重选择。2010年的问题是:

1)我们有一个SLR(1)语法G如下。我们使用SLR(1)解析器生成器并为G生成一个解析表S。我们使用LALR(1)解析器生成器,并为G生成一个解析表L。

代码语言:javascript
复制
S->AB
A->dAa
A-> lambda (lambda is a string with length=0)
B->aAb

问题设计器将解决方案选择为:

代码语言:javascript
复制
Solution: the number of elements with R (reduce) in S is more than L.

两年之后,问题设计者问:

2)假设T1,T2是用SLR(1)和LALR(1)为任意文法G创建的,如果G是SLR(1)文法,那么下列哪一种是正确的?

( a) T1和T2没有任何区别。

( b) T1中的非错误条目总数低于T2。

( c) T1中的错误条目总数低于T2

解决方案:

代码语言:javascript
复制
(a) is selected by the question designer. 

我的问题是:

代码语言:javascript
复制
any one could describe for me why the solution of 1st question is contradict to 2nd question? 

有人在前一篇文章中回答说,有两种解决方案是正确的,但没有很好地描述它。

不管怎么说,我都在等一个专家帮我摆脱困惑!

EN

回答 1

Stack Overflow用户

发布于 2015-01-18 15:30:42

对Q1的回答:

首先,您需要为SLR(1)和LALR(1)解析器创建DFA。我为他们俩创建了DFA。

SLR(1)和LALR(1) DFAs

对于SLR(1),我得到了10个状态和10个约简条目,而对于LALR(1),我为CLR(1)创建了DFA,其中13个状态被最小化为10个州和7个减少项。这回答了你的第一个问题。

对Q2的回答:

G是SLR(1)文法,那么SLR(1)表中肯定没有冲突(或错误)SLR或R。LALR(1)比SLR(1)具有更大的功率,因此对于给定的语法G,LALR(1)表也没有冲突。

(c):T1和T2中没有错误(错误选项)

(b):非错误条目是指移位条目和减少条目。应该清楚地指出,在从解析器到解析器的自下而上解析器中,只有减少条目更改的规则,而shift条目的规则保持不变。例如,在LR(0)中,对于SLR(1),在LR(0)中,对SLR(1),它是在左手边变量后面进行的,而在CLR(1)和LALR(1)中,减少条目是在前瞻性符号中进行的。因此,减少从解析器到解析器的条目更改,但是shift条目是相同的。

我们还在Q1中证明了SLR(1)解析表的约简项比LALR(1)多。因此,证明(b)选项是不正确的。

(a) T1和T2可能是相同的,但并非总是如此。其他重要的事情是,选择题有时会让你选择最合适的选项。因此,对我来说(a)是答案。

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

https://stackoverflow.com/questions/26486049

复制
相关文章

相似问题

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