トップダウン分析の質問コンパイラ理論

よくあるご質問1:消去が共通の要因に言及し、再帰的左

  • 左再帰の除去:
    P→P、α|β(ベータ] Pを開始しない)
    ルール書き換えることができる:
    [ベータ] P '→Pを
    P' →α-P '|εの
    例:S→サ| bは
    左再帰を排除:
    Sを→bSの'
    S ' →「として|ε

  • 共通因子に言及
    | AA | ABはS→ASが
    共通因子を言及:
    ; S→を1aA
    A→S | A | B;

  • すべての左再帰的な文法の排除
    ①すべての特定の順序A1、A2に配置された文法非終端......
    直接A1からは②A1(存在する場合)、A1 A2右部の代わりに右の部分の左再帰開始を排除しますA1、直接左再帰の除去がある場合。
    ③開始記号から、生成規則の非終端記号があることに達することはありません開始、役に立たない作品をなくします。
    単に直接左再帰除去、他の生産を代入発生しない
    | CのS→Qcの例:G
    Q→Rbの| B
    | R&LT→サ
    | CA | R→QCA:Rに置換された最初のSを ( 全く左再帰的に)継続
    QがRに置換されているの:R→Rbca | BCA | (| CA 排除直接左再帰的な)
    最終的に得られる:
    のS→Qcを| C
    Q→Rbの| B
    R&LT→BCAR '| CAR' | Ar 'は
    R&LT '→BCAR' |ε

一般的なモールド構造予測分析表2、と判断されたLL(1)文法

アイデア:最初、文法最初のセットを必要とし従わ
最初のセットに応じて再度、構成設定予測分析表従う
最後に、ルール3 LL(1)に記載の文法は、LL(1)文法か否かを判断します

生産のために:
| C | BA S→ABCC
A→A |、ε
B B→
C→C

  • 第一のセット
    ...これの製造のために、右側の終端のための最初の候補場合、ターミネータは最初の(S)に直接添加した(1)S→、本実施形態では、{C}最初の(S)に属している
    (2) S→...生産の、第1の候補非終端記号の右側は、非ε最初の(S)、セットの第一の実施形態に非終端要素の第一セットは{}最初に追加された場合( S)
    (3)S→...この製造のために、第一非終端記号および非終端記号、続いて多数のシンボルの右側は、第一の可能性は、非終端εであることに留意すべき場合。
    候補式εの非終端第一のセットの存在ならば、非終端記号の後にも、ように最初の(S)を添加し、そして。
    すべての非終端缶導出ε場合、{ε}は最初に添加した(S)
    実施例{最初の(A) - ε} + - {最初の(B)ε} 最初に追加される(S)

  • フォローセット
    開始シンボルS(1)、フォロー(S)に加え#
    (2)文法全てプロダクション必要候補式非終端検索非終端記号を検索
    ターミネーターとして非終端場合(2.1)、ターミネーターは、以下の電流を加えた
    実施形態{C}がフォロー(C)を添加した
    非終端記号非終端記号場合(2.2)、非終端記号の第1のセットは現在従う添加
    最初の(C)の実施形態に従っ(B)を添加しました
    非終端記号候補テールパイプ場合(2.3)、追従セット追加フォローセット非終端の製造
    以下の実施例(S)には、以下の()を添加した
    追跡(B)も追従(S)を含む、A:注意εであってもよく、Bは、式の終わりにも有望な候補であります

  • 構造予測分析表(直接決定することができる選択セットを見つけることができる)
    例:
    文法G:E→TE '
    E' →+ TE '|、ε
    T→FT'
    T '→* FT' | [イプシロン]
    F.→(E)| I
    FIRSTセット
    FIRST(E)= {(I}
    FIRST(E ')= {+、[イプシロン]}
    FIRST(T)= {(I}
    FIRST(T')= {*、[イプシロン]}
    FIRST(F)=を{(I}
    フォローセット
    FOLLOW(E)= {)、#}
    フォロー(E ')= {)、#}
    フォロー(T)= {+、)、#}
    フォロー(T')= {+) 、#}
    フォロー(F)= {*、+、)、#}
    構造予測分析表
    生産F→(E)(1)| I、ターミネーターとしての第1候補文字の種類を選択(F→( E))= {(} = {I}(F→i)を選択
    に示すように、直接記録内予測分析表
    (2式E→TE」、式非ターミネーターの最初の文字候補の生成のため)、 SELECT(E→TE ')=最初の(T)= {I、(}
    (3)式のE生成する。' →+ TEを'|ε 、 式Eの候補の存在' →ε、選択(E 「→ε)=フォロー(E「)= {)、 #}
    ここに画像を挿入説明

  • LL(1)文法解析
    (1)は再帰的に自由文法を左
    (2)それぞれの生産の種類ごとに文法非終端第1の候補文字セットを互いに素
    のI | F→(E):例
    最初に( (E))∩first(i)が空である
    (3)各文法非終端記号A、最初の文字候補セットはそれがε含ま存在する場合、第一(A)∩FOLLOW()が空である
    例:E「→ TE +「| [イプシロン]
    FIRST(E」)∩FOLLOW(E「)が空である
    文法規則はライン3にある場合、LL(1)文法のための
    3つのルールを遵守するために、この文法上、LL(1)文法であります

リリース8元の記事 ウォンの賞賛0 ビュー170

おすすめ

転載: blog.csdn.net/key_768/article/details/103904478