Compilador Diseo - Analizador Ascendente



Anlisis bottom-up se inicia a partir de los nudos de las hojas de un rbol y trabaja en direccin hacia arriba hasta que llega al nodo raz. En este sentido, partimos de una frase y, a continuacin, aplicar normas de produccin en forma contraria a fin de alcanzar el smbolo de arranque. La imagen siguiente muestra la parte inferior de los analizadores.

De abajo hacia arriba de anlisis

Anlisis Shift-Reduce

Shift-reducir el anlisis utiliza dos nicos pasos para la parte inferior de anlisis. Estos pasos son conocidos como cambio de paso y reducir de paso.

  • Paso de cambio: el paso de cambio se refiere a la promocin del puntero de entrada con el siguiente smbolo de entrada, el cual se denomina el smbolo cambia. Este smbolo se empuja en la pila. Cambia el smbolo es tratado como un nico nodo del rbol analizar.

  • 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. A fin de reducir, un POP funcin se realiza en la pila que los contaminantes orgnicos persistentes de la palanca y se reemplaza con LHS smbolo no terminal.

Analizador LR

El analizador LR es un non-recursive, shift-reducir, analizador bottom-up. Utiliza una amplia clase de gramtica libre de contexto lo que lo convierte en el ms eficiente tcnica de anlisis sintaxis. LR los analizadores son tambin conocidos como LR(k) analizadores, donde L es de izquierda a derecha la exploracin del flujo de entrada; R significa para la construccin de ms a la derecha en derivacin hacia atrs, y k indica el nmero de smbolos anticipada a la hora de tomar decisiones.

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

  • SLR(1) - Simple Analizador LR:
    • Trabaja en clase de gramtica ms pequea
    • Algunos de los estados, por lo tanto, muy pequea mesa
    • Construccin sencilla y rpida
  • LR(1) - LR Analizador:
    • Trabaja en conjunto completo de LR(1) Gramtica
    • Genera una gran mesa y gran nmero de estados
    • Construccin Lenta
  • LALR(1) - Vista adelantada LR Analizador:
    • Obras de tamao intermedio de gramtica
    • Nmero de estados son los mismos del SLR(1)

Anlisis LR algoritmo

Aqu se describe 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 derivacin. Una derivacin derecha en marcha atrs.
Comienza con el nonterminal de raz en la pila. Termina con el nonterminal de raz en la pila
Termina cuando la pila est vaca. Comienza con una pila vaca.
Usa la pila para designar lo que an queda por esperar. Usa la pila para designar lo que ya est visto.
Construye el rbol anlisis top-down. Construye el rbol anlisis 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.
Ampla 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 anlisis transversal del rbol. Despus de analizar el recorrido de rbol.
Advertisements