【发布时间】:2012-11-26 15:25:09
【问题描述】:
我目前正在研究编译器,据我所知,在 LR(0) 中存在“shift/reduce”或“reduce/reduce”冲突的情况,但不可能有“shift/shift”冲突!为什么我们不能有“班次/班次”冲突?
【问题讨论】:
-
存在 reduce-reduce 冲突,因为它们是可以选择减少句柄的 2 个产生式。存在 shift-reduce 冲突,因为您可以通过一些生产来进行 shift 和 reduce,并且显然仍然可以继续进行解析。移位只意味着一件事,您推进输入流,因此不会发生移位冲突。
标签: parsing compiler-construction compilation lr