Es-compiler-design-compiler-design-top-down-parser

提供:Dev Guides
移動先:案内検索

CompiladorDiseño-アナリザドールの子孫

アナウンシオス

ヘモスは、アナトシスの分析に優れたカプトゥロデラパルテデアナリシスラテクニカアナリティザラエントラーダ、アナリシスシンタクティコデアナリシスシンタクティコエルノードライツグラデュアルメントムービエンドハシアアバホアロスノドスホヤから始まります。 ロス・ティポス・デ・アリバ・アバホは連続したアナリシスを説明しています。

アリバシスデアリーバハシアアバホ

Análisisascendencia recursiva

アナリシスアナリストアナリストアナリストアナリストシンタクティコイラパートエクセレントリーラエントラダデイスキエルダ Utilida procedimientos para cada terminal y no terminal entidad。 アナリストは、分析、分析、および後継者なしで再考することができます。 Pero lagramáticaasociada a ella(si no cuenta)no puede evitar retrocesos。 アナクシスアナリシスの再帰は、難易度の高い難易度の高い難易度に対応していません。

再帰性を考慮した再帰分析を使用することを検討してください。

ラストレオ

Desde arriba los analizadores inicio desde el nodoraíz(símbolode inicio)y con con cadena de entrada contra las normas deproducciónpara sustituir(si通信) パラエンテンダーエスト、トマールエルシギエンテエジェンプロデCFG:

S → rXd | rZd
X → oa | ea
Z → ai

アカデミアからの参加者:アリアナ、アリババ、アバホ、スペイン共催者:

ノルマ・デ・プロドッシオン・イ・コインシディラ・コン・ス・レンディミエント・エン・ラ・イズキエルダ・デ・ラ・カルタ・デ・ラ・エントラーダ、エス・デシル、 'r' Laproducciónde S(S→rXd)偶然の一致。 lo tantoによって、トップダウンアナリザドールアバンザアラシギエンテカルタデエントラダ(es decir 'E')。 エルアナリザドールインテンタエクスパンダーノーターミナル 'X' y comprueba suproduccióndesde la izquierda(X→oa)。 コントラエルシギエンテシンボロデエントラダに対応します。 ロ・タント、アバホ・レトロセソ・アナリザドール・パラ・オブテナー・ラ・シギエンテ・レグラ・デ・プロドゥッシオンX(X→ea)。

アホラ、エル・アナリザドール・デ・エントラーダは、コン・トダス・ラス・レトラス・デ・フォルマ・オルデナーダと一致します。 La cadena es aceptada。

Seguimiento Volver Seguimiento Volver Seguimiento Volver Seguimiento Volver

Analizador Predictivo

Analizadorsintáctico予測分析と分析は、事前決定された結果の前に行われます。 エル・アナリザドールは、レトロセソを予測していません。

パラカムプリーサスコメチドス、エルアナリザドールプレティディボユティリザウンプテロハーシアデランテ、ケアプンタアラシギエンテエントラダロスシンボロス。 パラエルエルアナリザドールドゥリブレス、エルアナリザドール予測アルゴナ制限付きアラグラマティカイアセプタソロウナクレースデグラマティカコノシダコモLL(k)グラマティカ。

Analizador predictivo

アナリシスは、アナリシスとアナリシスアナラシスエルカアドロデエントラーダジェネラルアナラシアナリシスアナボリのアナリティシスを利用します。 Tanto la pila y la entrada contiene unsímbolode final $ para indicar que la pilaestávacíay la entrada es consumida。 アナリストは、要素の組み合わせを決定するためのタブラパラグラフを分析します。

トップダウンアナリザドール構成

アナセンシスの繰り返し、エルアナリザドールプエデテナーマスデウナプロドッシオンエントレロスケエレガパラウナソラインスタンシアデエントラーダ、ミエントラスケアナリザドールデプレディシオン、カダパソハデウナプロデュッシオンマサパラエレギール。 Es posible que haya casos en que no hayproducciónde la cadena de entrada、con lo que el procedimiento deanálisis。

LLアナリザドール

Acepta un analizador LL LLgramática。 LL文法は文脈に依存せず、文法的制約はありません。構文は単純化されており、ログの実装は容易ではありません。 LLグラマティカとプリプリケーターのアプリは、アンゴアルゴリズムの再帰、タブラ、アセンデンシアを巡回します。

LL analizador se denota como LL(k)。 入門L en LL(k)es elanálisisde la entrada de izquierda a la reguncha、la segunda L en LL(k)代理人másla izquierda dederivacióny k代理店elnúmerode lecturas。 一般的なk = 1の場合、mod que LL(k)tambiénpuede ser escrito como LL(1)。

LL Analizador

アルゴリトモLLアナリシス

決定論者LL(1)のアナリザドールの経験、ヤエルターマニョデラタブラクレセデフォルマエクスポネンシャルコンエルバロールデk en segundo lugar、si en lagramáticano es LL(1)、acontinuación、por lo general、no es LL(k)、para cualquier k。

LL(1)エルアナリシスの継続的アルゴリズム:

Input:
   string ω
   parsing table M for grammar G

Output:
   If ω is in L(G) then left-most derivation of ω,
   error otherwise.

Initial State : $S on stack (with S being start symbol)
   ω$ in the input buffer

SET ip to point the first symbol of ω$.

repeat
   let X be the top stack symbol and a the symbol pointed by ip.

   if X∈ Vt or $
      if X = a
         POP X and advance ip.
      else
         error()
      endif

   else/*X is non-terminal*/
      if M[X,a] = X → Y1, Y2,... Yk
         POP X
         PUSH Yk, Yk-1,... Y1/*Y1 on top*/
         Output the production X → Y1, Y2,... Yk
      else
         error()
      endif
   endif
until X = $/*empty stack*/

UnagramáticaG es LL(1)si A→α| Gのプロドクシオンを区別するβ:

  • パラターミナル、αyβデリバーcadenas comienzan con un。
  • En lamayoríadeαyβpueden derivar cadenavacía。
  • Siβ→t、連続、αno se deriva ninguna cadena que empieza con un terminal en SIGA(A)。

link:/cgi-bin/printpage.cgi [__ Imprimir]