Es-compiler-design-compiler-design-bottom-up-parser

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

CompiladorDiseño-アナリザドールアセンデンテ

アナリストボトムアップサービスパートナデロスヌドスデラスホハスデウンアルボルボイトラバヤアンディレクションハシアアリバハスタクレガアルノドライス 感情、パルティモス・デ・ウナ・フレーゼ、コンティニュアシオン、アプリカ・ノルマ・デ・プロドゥッシオン・アン・フォルマ・コントラリア、フィン・デ・アルカンザール・エル・シンボロ・デ・アランケ。 ラ・イメージ・シエグエンテ・ムエストラ

アナバシスアバホアシアアリバシス

アナリシスShift-Reduce

シフト・レデューサー・アナリシス・ユーティリティ・ドス・アンド・ニコス・パソ・パラ・ラ・パー・パート・アンダー・アナリシス。 Estos pasos son conocidos como cambio de paso y reducir de paso。

  • カンビオのパソ:カンパビオのカンタビアンエルプソデポンテロデエントラダコンエルシギエンテシンボロデエントラダ、エルクアルセデノミナエルシンボロカンビア。 Estesímbolose empuja en la pila。 Cambia elsímboloes tratado como unúniconodo delárbolanalizar。
  • Reducir paso :Cuando el analizador encuentra una regla gramatical(RHS)y reemplaza a(LHS)、se conoce como reducir paso。 Esto ocurre cuando la parte Superior de la pila contiene un identificador。 フィンデレデューサー、POPの機能性、汚染物質、汚染物質、汚染物質の持続性LHSシンボロー端子なし。

アナリザドールLR

エルアナリザドールLR es un非再帰的、シフト還元、アナリザドールボトムアップ。 分析用シンタクシスを使用して、グラマーティカの概念図を作成します。 LR los analizadores sontambiénconocidos como LR(k)analizadores、donde L es de izquierda a derecha laexploracióndel flujo de entrada;マサ・ア・ラ・デレチャ・エン・デラバハ・・ハチャ・アトラース、ラ・ホラ・デ・トママルの決定

Hay tres ampliamente utilizado algoritmos disponibles para construir un analizador LR:

  • SLR(1)-シンプルアナリザドールLR:
  • Trabaja en clase degramáticamáspequeña
  • アルグノス・デ・ロス・エスタドス、ポル・ロ・タント、ミュイ・ペケーニャ・メサ
  • Construcciónsencilla yrápida
  • LR(1)-LR Analizador:
  • Trabaja en conjunto completo de LR(1)Gramática
  • ジェネラウナグランメサイグランヌメロデエスタドス
  • ConstrucciónLenta
  • LALR(1)-Vista adelantada LR Analizador:
  • オマージュデタマニョインターメディオデグラマティカ *Númerode estados son los mismos del SLR(1)

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

Aquíseは、un esqueleto de un algoritmo LR analizadorについて説明しています。

token = next_token()
repeat forever
   s = top of stack
   if action[s, token] = “shift si” then
      PUSH token
      PUSH si
      token = next_token()
   else if action[s, tpken] = “reduce A::= β“ then
      POP 2* |β| symbols
      s = top of stack
      PUSH A
      PUSH goto[s,A]
   else if action[s, token] = “accept” then
      return
   else
      error()

LL y LR

LL LR
La izquierda tiene una derivación. Una derivación derecha en marcha atrás.
Comienza con el nonterminal de raíz en la pila. Termina con el nonterminal de raíz en la pila
Termina cuando la pila está vacía. Comienza con una pila vacía.
Usa la pila para designar lo que aún queda por esperar. Usa la pila para designar lo que ya está visto.
Construye el árbol análisis top-down. Construye el árbol análisis bottom-up.
Continuamente aparece un nonterminal de la pila y empuja el lado derecho correspondiente. Intenta reconocer un lado derecho de la pila, lo viejo y empuja la correspondiente nonterminal.
Amplía el no-terminales. Reduce la no-terminales.
Lee los terminales cuando aparece uno fuera de la pila. Lee los terminales mientras que les empuja en la pila.
Pre-orden el análisis transversal del árbol. Después de analizar el recorrido de árbol.