编译原理——LL(1) 文法First,Follow集合的构造过程

LL(1)文法是上下文无关文法的一个真子集,在学习过程中我们通常需要了解如何判断一个文法属于LL(1)文法。来了解判断条件之前我们需要构造First,Follow, Select三个集合。以下介绍三个集合的定义,含义,结合实例来体会这些集合的构造过程。

1. First

从定义上来看,First(a)简单来说就是从一个产生式左部A,通过一步或者多步推导,得到一个产生式右部B。如果B的首字符为终结符a,那么a ∈ First(A)。

例如: 产生式A → aB  ,a ∈ First(A) (大写字母通常为非终结符,其他小写字母和符号通常为终结符)

2. Follow

从定义上来看,FOLLOW(U)是文法的所有句型中紧接在U之后出现的终结符或$($不是文法符号,而是一个特定的结束符)。

也就是说,在文法中,能找到一个产生式的右部中包含U非终结符和a终结符,U后面接着一个a,那么a ∈ Follow(U)。意思是a属于跟随在U之后的终结符。

例如: 产生式 A → Ba | BcD  其中 a, c∈ Follow(B)

 

猜你喜欢

转载自blog.csdn.net/CVSvsvsvsvs/article/details/83142859