【发布时间】:2015-05-04 07:18:35
【问题描述】:
我想解决这个语法。
S->SS+
S->SS*
S->一个
我想用 action 和 goto 构建 SLR 项目集和解析表。 这个语法可以在不消除左递归的情况下解析吗? 这是语法单反吗?
【问题讨论】:
-
不行,你需要消除左递归!
标签: parsing compiler-construction grammar left-recursion
我想解决这个语法。
S->SS+
S->SS*
S->一个
我想用 action 和 goto 构建 SLR 项目集和解析表。 这个语法可以在不消除左递归的情况下解析吗? 这是语法单反吗?
【问题讨论】:
标签: parsing compiler-construction grammar left-recursion
不,这个语法不是 SLR。这是模棱两可的。
左递归对于 LR 解析器来说不是问题。只有 LL 解析器需要左递归消除。
【讨论】:
我对此并不完全确定,但我认为这个语法实际上是 SLR(1)。我手工构建了 SLR(1) 表,我得到了一个没有冲突的表(添加了一个从 S'(新开始符号)-> S 的 0 转换)。
有人可以提供一个可以从该语法以两种不同方式派生的句子吗?我能够在 Bison 中得到一个解析器,而没有任何警告。你确定它是模棱两可的吗?
【讨论】: