LL(1)就是向前只搜索1个符号,即与FIRST()匹配,如果FIRST为空则还要考虑FELLOW。
LR需要构造一张LR分析表,此表用于当面临输入字符时,将它移进,规约(即自下而上分析思想),接受还是出错。
LR(0)找出句柄前缀,构造分析表,然后根据输入符号进行规约。
SLR(1)使用LR(0)时若有冲突,不知道规约,移进,活移进哪一个,所以需要向前搜索,则只把有问题的地方向前搜索一次。
LR(1)1.在每个项目中增加搜索符。2.举个列子如有A->α.Bβ,则还需将B的规则也加入。
LALR(1)就是假如两个产生式集相同则将它们合并为一个,几合并同心集。
我认为LR(1),SLR(1),LALR(1)只是对LR(0)的一种更全面的分析与考虑,关键先把LR(0)搞懂。
1、构造它的lr(0)项目集合的dfa(即识别该文法全部活前缀的dfa);
2、根据该dfa画出该文法的lr(0)分析表;
3、在分析表中,每格要么只有一个内容,要么没有内容,(即无冲突)则为lr(0)文法。