第三章 语法分析.ppt

* 3.5 自下而上语法分析 定义3.19 对所有属于项目集I、且形如[A→α.Xβ]的项目,令X∈N∪T,则goto(I,X)是所有形如[A→αX.β]的项目。 设J = goto(I,X),K = closure(J),K中项目A→α.β分为两类: J = goto(I,X): α非空,因为至少有一个X。 K - J: α=ε,.在产生式右部最左边,由某个J计算而来 定义3.20 项目[S‘→.S]和所有“.”不在产生式右部最左边的项目称为核心项目(kernel items),其它“.”在产生式右部最左边的项目(不包括[S’→.S])称为非核心项目(nonkernel items)。 核心项目:J = goto(I,X)加S→.S(作为项目集的代表) 非核心项目:closure(J) - J(可由某J计算得到) closure(J) - J: B → .β J: A → αX.β S → .S * 算法3.9 计算文法G的、基于LR(0)项目的、识别活前缀的DFA 输入 拓广文法G 输出 DFA=(C, Dtran) -- C是状态集,Dtran是状态转移 方法 I := closure(S→ .S);加入I到C中,且未标记;--初态 while C中还有未标记状态I --考察未标记状态 loop 标记I; for I状态下的每个文法符号x --考察所有x

文档评论(0)

1亿VIP精品文档

相关文档