LR(0)构造的DFA,但是由LR(0)的DFA来构造分析表往往是不可行的,也就是说很少有语言是LR(0)的。
如果LR(0)的冲突可以根据当前输入的字符来解决,则构造的分析表为SLR分析表,SLR分析表跟LR(0)的dfa是相同的。
LR(1)构造的dfa考虑当前输入的字符,所以构造的DFA中存在的冲突比较少,也就是说它接受的语言就比较多。构造分析表时,不用额外的约束,因为它在构造dfa时就已经考虑了当前的输入字符。
考虑到LR(1)的dfa包含的状态太多,而且许多状态的不同仅仅是因为预测符的不同而已。通过合并不会产生冲突的状态,可以减少dfa的状态数,这就产生了LALR分析法。所以说LALR分析法只是对LR(1)的一种
简化:通过合并同心集。
分析法的分析能力比较:LR(1)>LALR>SLR(1)>LR(0)
如果LR(0)的冲突可以根据当前输入的字符来解决,则构造的分析表为SLR分析表,SLR分析表跟LR(0)的dfa是相同的。
LR(1)构造的dfa考虑当前输入的字符,所以构造的DFA中存在的冲突比较少,也就是说它接受的语言就比较多。构造分析表时,不用额外的约束,因为它在构造dfa时就已经考虑了当前的输入字符。
考虑到LR(1)的dfa包含的状态太多,而且许多状态的不同仅仅是因为预测符的不同而已。通过合并不会产生冲突的状态,可以减少dfa的状态数,这就产生了LALR分析法。所以说LALR分析法只是对LR(1)的一种
简化:通过合并同心集。
分析法的分析能力比较:LR(1)>LALR>SLR(1)>LR(0)
本文介绍了LR(0), SLR(1), LR(1) 和 LALR等几种上下文无关语法的解析策略。从LR(0)到LALR, 解析表的冲突越来越少,接受的语言也越来越多。通过对LR(1)的DFA进行简化,产生了LALR分析法。
6278

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



