首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为给定的CFG生成LL(1)解析表

为给定的CFG生成LL(1)解析表
EN

Stack Overflow用户
提问于 2015-12-19 19:01:30
回答 1查看 802关注 0票数 1

粮安委的情况如下:

代码语言:javascript
复制
S -> SD|SB
B -> b|c
D -> a|dB

我尝试的方法如下:

我通过左因式分解方法从第一个产品(S->SD|SB)中删除了不确定性。

因此,应用左保理后的CFG如下:

代码语言:javascript
复制
S -> SS'
S'-> D|B
B -> b|c
D -> a|dB

我需要为生产找到第一个S,即S -> SS',以便进一步进行。有人能帮忙或建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-19 19:22:29

您不能通过这种方式将此语法转换为LL(1)解析器:语法为https://stackoverflow.com/q/16165352/67579,因此必须执行https://en.wikipedia.org/wiki/LL_parser#Left_recursion_removal.5B4.5D。关键是您可以执行以下技巧:由于S的唯一规则是S -> SS'S -> (epsilon),这意味着您只需颠倒顺序,从而引入规则S -> S'S。所以现在语法是:

代码语言:javascript
复制
S -> S'S
S'-> D|B
B -> b|c
D -> a|dB

现在我们可以先构造:第一(B)={ b,c},第一(D)={a,d},第一(S‘)={a,b,c,d}和第一(S)={a,b,c,d}。

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

https://stackoverflow.com/questions/34374300

复制
相关文章

相似问题

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