怎么判断一个文法是LR(0)

来源:百度知道 编辑:UC知道 时间:2024/06/08 17:03:46

1、构造它的LR(0)项目集合的DFA(即识别该文法全部活前缀的DFA);
2、根据该DFA画出该文法的LR(0)分析表;
3、在分析表中,每格要么只有一个内容,要么没有内容,(即无冲突)则为LR(0)文法。

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)搞懂。