首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LL(1)解析冲突

LL(1)解析冲突
EN

Stack Overflow用户
提问于 2019-01-03 06:55:01
回答 1查看 387关注 0票数 0

我正在为一个非常简单的语法编写一个LL(1)解析器。然而,我在尝试构建解析表时发现了冲突。

我很惊讶,因为语法看起来很简单。我不知道是解析器有问题,还是我对LL(1)解析的理解有问题。也许语法最终不是LL(1)。

语法是:

代码语言:javascript
复制
1: S         -> begin list
2: list      -> id    listPrime
3: listPrime -> id    listPrime
4:            | ε

我的代码遇到了两个冲突,这两个冲突都是为了派生listPrime,一个是使用终端符号id,另一个是使用EOF。在这两种情况下,规则3都与规则4冲突。

我计算的FIRSTFOLLOW集是:

代码语言:javascript
复制
first:
   { S: Set { 'begin' },
     list: Set { 'id' },
     listPrime: Set { 'id', 'eps' } },

follow:
   { S: Set { 'EOF' },
     list: Set { 'EOF', 'id' },
     listPrime: Set { 'EOF', 'id' } } }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-04 00:54:55

其语法为LL(1)。您的跟随集计算不正确,这很容易验证:不存在listlistPrime后跟EOF以外的令牌的派生。

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

https://stackoverflow.com/questions/54014244

复制
相关文章

相似问题

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