tom*_*370 5 grammar disjoint-sets
我有三个语法:
A - > aB | b | CBB
B - > aB | ba | ABB
C - > aaA | b | 出租车
我需要通过执行成对不相交测试来确定[他们]是否是LL语法,显示每个非终结符的每个RHS的第一组.
这就是我到目前为止......
A - > aB | b | CBB
第一个(aB)= a
第一(b)= b
第一个(CBB)= aaA = a
这是我遇到麻烦的那个.我做了正确的CBB吗?如果是这样,我会说它们相交并且规则未通过测试.(对?)
B - > aB | ba | ABB
第一个(aB)= a
第一(ba)= b
第一个(aBb)= a
它们相交,因此规则未通过测试.
C - > aaA | b | 出租车
第一个(aaA)= a
第一(b)= b
第一(caB)= c
他们没有交叉,因此规则通过
测试的目的是看看,在查看第一个终端时,您可以判断使用哪个规则(LL的要求).对于B来说很明显,有两个规则可以应用于终端a; 它也非常明显,C的每个规则都以不同的终端开始.并且您可以看到C的可能的第一个终端(以及因此CBB)与A的其他规则重叠.
底线:看起来不错(但是,如果你在CBB的一个终端停了下来并碰巧选择了c,你就会得出错误的结论).