よくあるご質問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)文法であります