Está en la página 1de 11

ANLISIS ASCENDENTE

Estilo general: Anlisis sintctico por desplazamiento y reduccin.


Por precedencia de operadores (gramticas muy

especficas) LR (generadores automticos de AS)

Se construye el rbol de AS para una cadena w a partir de las hojas y se avanza hacia la raz.
Proceso: reducir w al smbolo inicial de la gramtica Cada reduccin sustituye una subcadena (asidero o

mango) que concuerde con el lado derecho de un regla de produccin por el smbolo no-terminal del lado izquierdo de esa regla.
UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado) 1

MANGOS
Un mango de una cadena es una subcadena que

concuerda con el lado derecho de una produccin y cuya reduccin al no-terminal del lado izquierdo de la regla es un paso a lo largo de la inversa de una derivacin por la derecha.
Ejemplo

S aABe A Abc Ab Bd

abbcde aAbcde aAde aABe S

mango posicin 2 (regla A b) mango posicin 2 (regla A Abc) mango posicin 3 (regla B d) mango posicin 1 (regla S aABe)

UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado)

MANGOS La produccin situada ms a la izquierda de que concuerda con el lado derecho de una produccin A no es un mango si la reduccin por esa regla genera una cadena no reducible al smbolo inicial.
Ejemplo

S aABe A Abc Ab Bd

a A b c d e aunque b es la subcadena situada ms a la izquierda que concuerda con una parte derecha (regla A b) no es un mango a A A c d e No se puede reducir a S

UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado)

MANGOS Formalmente, un mango de una forma de frase derecha es una regla A y una posicin de dnde la cadena podra encontrarse y sustituirse por A para producir la forma de frase derecha previa en una derivacin por la derecha de .
Ejemplo

E E E E

E+E E*E (E) id

Formas de Frase Derecha id1 + id2 * id3 E + id2 * id3

Mango id1 id2

Regla de Reduccin E id E id

E + E * id3
E+E*E E+E E

id3
E*E E+E

E id
EE*E EE+E

UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado)

PODA DE MANGOS

Se puede obtener una derivacin por la

derecha en orden inverso mediante la poda de mangos. Se comienza con una cadena de terminales w que se desee analizar sintcticamente.
Si w es una frase de la gramtica, entonces w = n,

donde n es la n-sima forma de frase derecha de una (an desconocida) derivacin por la derecha:

S = 0 1 2 n-1 n = w
UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado) 5

PODA DE MANGOS Para reconstruir esta derivacin en orden inverso, se coloca el mango n en n y se reemplaza n por el lado izquierdo de alguna produccin An n para obtener la (n-1)-sima forma de frase derecha de n-1 Despus se repite el proceso Se sita el mango n -1 en n-1 y se reduce este mango para obtener la forma de frase derecha n-2. El proceso se detiene hasta que se construye una forma de frase derecha que consiste solo del smbolo inicial S. La inversa de la secuencia de producciones utilizada en estas reducciones es una derivacin por la derecha de la cadena de entrada w.
UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado) 6

USO DE UNA PILA EN A.S. POR DESPLAZAMIENTO Y REDUCCIN


Problemas de implantacin del AS por desplazamiento y reduccin
Situar la subcadena a reducir Elegir la regla adecuada en caso de que haya ms de una

con esa subcadena en la parte derecha

Posible solucin utilizar:


Una pila para manejar los smbolos gramaticales
Buffer de entrada para gestionar la cadena w a analizar

UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado)

FUNCIONAMIENTO DEL ANALIZADOR


Inicialmente:
En la pila el smbolo de fin de cadena ($) En el buffer la cadena a analizar seguida de la marca de

fin de lnea (w$)

Repetir hasta que se detecte un error o en la pila solo haya el smbolo inicial (E$) y la entrada est

vaca ($)
Desplazar cero o ms smbolos de la entrada a la pila

hasta que en la cima haya un mango Reducir al lado izquierdo de la regla adecuada
UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado) 8

OPERACIONES DEL ANALIZADOR


Desplazar: Mover el siguiente smbolo de entrada a la cima de la pila Reducir: (En este momento el extremo derecho del mango est en la cima de la pila) Localizar el extremo izquierdo del mango dentro de la pila y decidir el no terminal con el que se debe sustituir el mango. Aceptar: Anunciar el fin con xito del anlisis Error: Llamar a la rutina de recuperacin de errores
UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado)

pila

entrada

accin

$ $ id1 $E $E+ $ E + id2 $E+E $E+E* $ E + E * id3 $E+E*E $E+E $E

id1 + id2 * id3 $ + id2 * id3 $ + id2 * id3 $ id2 * id3 $ * id3 $ * id3 $ id3 $ $ $ $ $

desplazar reducir por E id desplazar desplazar reducir por E id desplazar desplazar reducir por E id reducir por E E * E reducir por E E + E aceptar
10

UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado)

CONFLICTOS
Existen gramticas independientes de contexto para las que no se pueden utilizar analizadores

sintcticos por desplazamiento y reduccin (gramticas no LR) En esas gramticas se puede llegar a una configuracin en la que, conociendo el contenido de la pila y el siguiente smbolo de entrada, no se puede decidir si
Desplazar o reducir (conflicto de

desplazamiento/reduccin) Que tipo de reduccin efectuar (conflicto de reduccin/reduccin)


UMG Guastatoya - Compiladore (Ing. Ren E. Alvarado) 11