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
mango posicin 2 (regla A b) mango posicin 2 (regla A Abc) mango posicin 3 (regla B d) mango posicin 1 (regla S aABe)
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
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
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
PODA DE MANGOS
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
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
pila
entrada
accin
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
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