M-J 发表于 2008-08-21 23:10

跟大家请教两个语法的问题

1,LL和LR分析都要求First和Follow集。First和Follow集和LL、LR是什么关系呢?也就是在LL、LR中起什么作用呢?我看不明白。
2,LR、SLR、LALR的区别是怎么回事呢?
希望大侠给解释清楚。

freearth 发表于 2008-08-21 23:24

移进/规约分析器。常见的包括LR(0),SLR(1),LALR(1)和LR(1)。分析能力严格递增。它们的区别是
    LR(0):没有lookahead,只记录栈顶的最后一个handle的信息;
    SLR(1):在LR(0)的基础上,增加一个符号的lookahead(也就是当前的输入符号);
    LR(1):由一个lookahead(当前输入符号),记录栈内已有的所有信息;
    LALR(1):合并LR(1)状态集合中所有拥有相同“core”的状态,如果出现冲突,则该文法不是LALR文法;

所谓的“记录信息”就是指不同的状态

至于First集合和Follow集合,是用于构造分析器的辅助数据结构。这个一两句话不好说清楚,建议找本书看看。

原帖由 M-J 于 2008-8-21 23:10 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
1,LL和LR分析都要求First和Follow集。First和Follow集和LL、LR是什么关系呢?也就是在LL、LR中起什么作用呢?我看不明白。
2,LR、SLR、LALR的区别是怎么回事呢?
希望大侠给解释清楚。

cjaizss 发表于 2008-08-22 09:13

First和Follow集是什么意思你知道吗?为什么叫这个名字?你先查查这个吧。

run_xiao2000 发表于 2008-08-22 09:30

原帖由 cjaizss 于 2008-8-22 09:13 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
First和Follow集是什么意思你知道吗?

First集合就是解析一个非终结符时,要"看到"的第一个终结符集合

Follow集合就是解析完一个非终结符后,要"看到"的终结符集合

哈哈,典型的望文生义!
页: [1]
查看完整版本: 跟大家请教两个语法的问题