[语法分析] FIRST集, FOLLOW集, SELECT集的计算

  • FIRST集, 一个非终结符的首字符

    • 如果A → aB, 那么a∈FIRST(A)
    • 如果A → ε, 那么 ε ∈FIRST(A)
    • 如果A → X1X2…Xn, 如果X1 → ε, 那么FIRST(X2) ∈ FIRST(A), 如果X2 → ε, 以此类推
      [语法分析] FIRST集, FOLLOW集, SELECT集的计算_第1张图片
  • FOLLOW集, 可能紧跟在一个非终结符后面的终结符

    • 如果A → aBb, 那么b∈FOLLOW(B)
    • 如果A → aBCD, 那么FIRST© ∈FOLLOW(B), 同时如果X1 → ε, 那么FIRST(D) ∈FOLLOW(B), 以此类推
    • 如果A → X…B, 那么**$** ∈ FOLLOW(B), 且FOLLOW(A) ∈ FOLLOW(B)

    [语法分析] FIRST集, FOLLOW集, SELECT集的计算_第2张图片

  • SELECT集, 一个表达式可以接受的终结符

    • 对于表达式: A → X1X2…Xn
    • 首先FIRST(X1X2…X3) ∈ SELECT(A → X1X2…Xn)
    • 如果ε ∈FIRST(X1X2…X3), 那么FOLLOW(A) ∈ SELECT(A → X1X2…Xn)

[语法分析] FIRST集, FOLLOW集, SELECT集的计算_第3张图片

你可能感兴趣的:(语法分析,编译)