编译原理follow集练习题
时间: 2023-09-22 13:01:47 浏览: 158
编译原理中的Follow集是指在文法中的每一个非终结符号后面可能出现的终结符号的集合。计算Follow集的目的是为了处理语法分析中的预测分析表,以辅助进行语法分析。
计算非终结符号A的Follow集的一般方法如下:
1. 首先将结束符号$(表示输入的结束)加入起始符号的Follow集中。
2. 对于每一个产生式 A -> αBβ,将FIRST(β)中除去ε(空符号)的元素加入B的Follow集中。
3. 对于每一个产生式 A -> αBβ,如果ε∈FIRST(β),那么将FOLLOW(A)加入FOLLOW(B)中。
重复步骤2和3,直到没有新的元素可以加入Follow集为止。
下面我用一个练习题来演示如何计算一个非终结符号的Follow集:
假设给定文法如下:
S -> AaB
A -> b | ε
B -> cd
首先将$加入到起始符号的Follow集中:
FOLLOW(S) = {$}
根据步骤2:
FOLLOW(A) = {a}
FOLLOW(B) = {d}
根据步骤3:
FOLLOW(A) = {a, $},因为FIRST(B) = {c},所以将FOLLOW(S) = {$}加入到FOLLOW(A)中。
最终的Follow集为:
FOLLOW(S) = {$}
FOLLOW(A) = {a, $}
FOLLOW(B) = {d}
以上就是计算Follow集的一种方法,通过计算Follow集可以构建预测分析表,在语法分析时起到辅助作用。编译原理中还有其他方法和规则来计算Follow集,但基本思想都是类似的。
阅读全文