2014-10-26 88 views
1

我有问题来解决这个问题。我必须重写下面的语法,使其与LL(1)解析模糊语法与LL(1)解析

S→名词|名词和名词| M,名词和名词

M→M,名词|名词

,我注意到的是,该语法是在生产带有接头连接器M递归的第一个问题,我修复它这样

中号→名词展示新品推荐网上

展示新品推荐网上→,名词展示新品推荐网上

但后来我注意到带有标题S的制作是模棱两可的,但我不知道如何解决它,我试图“分解”名词,但我并不确定。

你能帮助我吗?

谢谢你的回答。

+0

你的第一个重构是错误的 - 旧的M来自'名词',新的M没有。 – jch 2014-10-26 18:33:18

回答

1

您的左递归消除M不完整 - 您忘记了规则NewPro→ε

一旦你添加了这个问题,你就会留下S这个问题,这个问题并不含糊,但需要左派系数。自FIRST(M)⊆ FIRST(S),您需要先将M代入S:

S→noun |名词和名词|名词展示新品推荐网上,名词,和名词

,然后就可以离开因子,简单地,进

小号→名词S '
S' →&小量; |和名词| NewPro,名词和名词

现在您遇到此语法为LL(4)而不是LL(1)的问题,因为您需要4令牌前瞻来查找NewPro s序列的末尾。这是一个很难处理的问题,但它可以修复。首先,您需要将, noun,拖入NewPro中:

S'→ε; |和名词| NewPro和名词
NewPro→,名词,| ,名词展示新品推荐网上

然后左键因素展示新品推荐网上:

展示新品推荐网上→,名词展示新品推荐网上 '
展示新品推荐网上' →,| NewPro

然后替换成NewPro':

NewPro'→,| | ,名词展示新品推荐网上 '

和左因子太:

展示新品推荐网上' →,展示新品推荐网上 '' 展示新品推荐网上 '' →&小量; |名词展示新品推荐网上 '

得到最终语法:

小号→名词S'
S”→&小量; |和名词| NewPro和名词
NewPro→,名词NewPro'
NewPro'→,NewPro''
NewPro→'ε |名词展示新品推荐网上“

哪个是LL(1)和可直接使用或通过置换展示新品推荐网上回进入S简化有点”和重命名的规则摆脱“-suffixes的:

小号→名词甲
A→ε; |和名词| ,名词B和名词
B→,C
C→ε |名词B