Bison语法冲突的解析与解决
在编写语法解析器时,Bison是一个非常强大的工具。然而,在使用Bison的过程中,我们常常会遇到各种冲突,如归约 - 归约冲突和移进 - 归约冲突。本文将详细解析这些冲突的产生原因,并提供相应的解决办法。
1. 状态与指针位置
首先,我们来看一个状态示例:
state 6: 6, 12, ... A's accepted
then the corresponding pointer positions are as follows:
start: threeAs X
| twoAs Y;
threeAs: /* empty */
| A <1,4> A <2,5> A <3,6> threeAs;
twoAs: /* empty */
| A <1,3,5> A <2,4,6> twoAs;
这意味着,在 threeAs 中第一个 A 之后,解析器可以接受 6i + 1 或 6i + 4 个 A ( i 为0, 1等)。同样,在 twoAs 中第一个 A 之后,解析器可以接受 6i + 1 、 6i +
超级会员免费看
订阅专栏 解锁全文
203

被折叠的 条评论
为什么被折叠?



