• 2022-06-03
    设文法G[S]为: S→aAcB A→Ab|b B→d 问: 1)该文法是否可改造为LL(1)文法,为什么? 2)若该文法是LL(1)文法,请构造相应的LL(1)分析表。如果不是请改造为LL(1)文法,再构造LL(1)分析表;
  • 1)不是LL(1)文法,原因文法存在左递归 2)消除左递归:S→aAcB A→bA' A'→bA'|ε B→d; 计算每个非终结符的FIRST集合和FOLLOW集合: 非终结符 FIRST FOLLOW S {a} {#} A {b} {c} B {d} {#} A’ {b,ε} {c} 计算产生式的SELECT集: SELECT(S→aAcB)={a}SELECT(A→bA’)={b} SELECT(A’→bA’)={b}SELECT(A’→ε)=FOLLOW(A’)={c} SELECT(B→d)={d} 因为SELECT(A’→bA’)∩SELECT(A’→ε)=Ф 因此,改进后的文法是LL(1)文法 该文法的LL(1)分析表如下表。 [br][/br] a b c d # S →aAcB [br][/br] [br][/br] [br][/br] [br][/br] A [br][/br] →bA’ [br][/br] [br][/br] [br][/br] A’ [br][/br] →bA’ →ε [br][/br] [br][/br] B [br][/br] [br][/br] [br][/br] →d

    内容

    • 0

      一个文法G,若( ),则称它是LL(1)文法。

    • 1

      【简答题】已知文法G[S]: S→S+aF|aF|+aF F→*aF|*a (1)消除左递归和回溯 (2)构造FIRST、FOLLOW、SELECT集合 (3)构造其LL(1)文法分析表,

    • 2

      下列关于LL(1)文法的说法正确的是() A: 第一个L的含义是最左归约 B: LL(1)文法可以含有左递归 C: LL(1)文法不能包含ε产生式 D: LL(1)文法用于自上而下语法分析

    • 3

      ____文法不是LL(1)的

    • 4

      无左递归的文法是LL(1)文法