FIRST集和FOLLOW集的计算

文章目录

  • `FIRST`集的计算
    • 计算`FIRST(x)`
      • 具体算法
    • 计算`$X_21,X_2,X_3,...,X_n$`的`FIRST`集
  • FOLLOW集的计算
    • 算法

FIRST集的计算

计算FIRST(x)

  • FIRST(X):可以从X中推导出的所有串首终结符构成的结合。
  • $X\Rightarrow^*{\epsilon}$,那么$\epsilon \in FIRST(X)$

推导过程:

  1. (2)、(4)、(5)的产生式都是以非终结符开头,于是直接分别将$+,\epsilon$$*,\epsilon$$(, id$加入到它们各自的FIRST集中。
  2. (1)中开头的是非终结符T,于是它的FIRST集取决于T的FIRST集
  3. (3),同上,它的FIRST集需要依赖F的FIRST集,即$(, id$
  4. 于是(1)的FIRST集也是$(, id$

具体算法

计算$X_21,X_2,X_3,...,X_n$FIRST

  • $FIRST(X_1,...,X_n)$加入$IRST(X_1)$中所有非$\epsilon$符号
  • 如果$\epsilon$$FIRST(X_1)$中,再加入$FIRST(X_2)$中的所有非$\epsilon$符号,以此类推
  • 最后,如果对所有的i,$\epsilon$都在$FIRST(X_i)$中,那么将$\epsilon$加入到$FIRST(X_1,...,X_n)$中。

FOLLOW集的计算

算法

你可能感兴趣的:(编译原理)