【正文】
e)?!?S?,$] I1 C [S?C?C,$] [C??cC,$] [C??d,$] I2 c [C?c?C,c/d] [C? ? cC,c/d] [C??d,c/d] I3 d [C?d?,c/d] I4 C [S?CC ?,$] I5 c [C?c?C,$] [C??cC,$] [C??d,$] I6 C [C?cC ?,$] I9 d [C?d?,$] I7 c d c C [C?cC ?,c/d] I8 d 3 改進思路: 合并同心集可達到縮小構造分析表的狀態(tài)數(shù)目;利用核代替項目集可以達到縮小項目集所占用的存儲空間。?S?,$] I1 C [S?C?C,$] [C??cC,$] [C??d,$] I2 c [C?c?C,c/d] [C? ? cC,c/d] [C??d,c/d] I3 d [C?d?,c/d] I4 C [S?CC ?,$] I5 c [C?c?C,$] [C??cC,$] [C??d,$] I6 C [C?cC ?,$] I9 d [C?d?,$] I7 c d c C [C?cC ?,c/d] I8 d c [ c? ,c/ /$] [C?? , / /$] [C ? , / /$] /$] 47 [C?cC ?,c/d/$] 89 36 I47 5 討論: 1. 由于 go(I, X)僅僅依賴于 I的心,因此 LR(1) 項目集合并后的轉換函數(shù) go(I, X)隨 自身的 合并而得到。 Ik:{[A???,u1] [B???a?,b] } a?u1=? Ij:{[A???,u2] [B???a?,c] } a?u2=? Ikj:[A???,u1/u2] [B???a?,b/c] a?{u1, u2}=? 6 例:下面文法是 LR(1)的,但不是 LALR(1)的。 ? S ? , $] [S? a ? Ad, $] [S ? a ? Be, $] [A ? ?c, d] [B ? ?c, e] a S [S? b? Bd, $] [S ? b ? Ae, $] [A ? ?c, e] [B ? ?c, d] b A [S? a A ? d, $] B [S ? a B ? e, $] c [A ? c ?, d] [B ? c ?, e] [A ? c ?, e] [B ? c ?, d] c 7 LR(1)和 LALR(1)分析上的差別 輸入: ccd$ LR: 0 c 3 c 3 d 4 報錯 LALR: 0 c 36 c 36 d 47 0 c 36 c 36 C 89 0 c 36 C 89 0 C 2 報錯 8 LALR分析表的有效構造方法 用 LR(