Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ascendent e 1
Ascendent e 1
Tema 4
Anlisis Sintctico Ascendente
Entender la estrategia de reduccin-desplazamiento Presentar las gramticas LR Entender la arquitectura de un analizador LR Entender el algoritmo de anlisis LR Aprender a construir analizadores LR Presentar una clasificacin general de gramticas
ndice General
Introduccin Anlisis ascendente reduccin - desplazamiento Analizador ascendente SLR Clasificacin de gramticas
Introduccin
Parte de la cadena de entrada para construir la inversa de una derivacin por la derecha. Genera el rbol de anlisis sintctico partiendo de las hojas hasta alcanzar el axioma
R1. E := E + E R2. E := id id + id r2 r2 r1
Cuando puede reducirse por una parte izquierda lo que parece ser la parte derecha de una regla?
ndice General
Tipos de gramticas
Gramticas LR
Conjunto ms amplio de gramticas que LL(1) Expresin ms sencillas LR(1) LALR SLR Analizadores LR(1) Analizadores LALR Analizadores SLR
Tipos de gramticas
SLR
Condiciones SLR
Anlizadores reduccin-desplazamiento
0 Pila de estados
Tabla (gramtica)
Anlizadores reduccin-desplazamiento
dj. dj. Desplazar al siguiente token y apilar el estado j rk. Reducir por regla k.
0 Pila de estados
Estados
Tabla (gramtica)
Estados
Algoritmo de anlisis
Algoritmo de anlisis
push(0) (0) push a := token(); a := token(); REPEAT REPEAT Seassel elestado estadoen enel eltope topede dela lapila pila Sea IF Accin [s, a] = dj IF Accin [s, a] = dj push(j) (j) push a := token (); a := token (); ELSEIF Accin [s,a] =rk rk ELSEIF Accin [s,a] = FOR i := 1 TO Longitud (Partederecha derechade dek) k) FOR i := 1 TO Longitud (Parte pop (); pop (); p= =cima cima(); (); p Sea A parte izquierdade dekk Sea A parte izquierda push ( irA [p, A] ) push (irA [p, A]) ELSEIFAccin Accin[s,a] [s,a]= =aceptar aceptar ELSEIF Terminar con xito Terminar con xito ELSEerror error ELSE UNTILtrue true UNTIL
ndice General
Trminos comunes Funciones comunes Coleccin Cannica del conjunto de elementos Autmatas reconocedores de prefijos viables Construccin de tablas SLR Conflictos en las tablas SLR Errores en analizadores SLR
Clasificacin de gramticas
Trminos comunes
Elemento. Una regla de produccin que incorpora en alguna posicin de su parte derecha un punto
B := a A A := B := . a A B := a . A B := a A . A := .
Funciones comunes
Clausura (I)
Clausura(I) (I)= =II Clausura SI A:= := ..B B Clausura Clausura(I) (I)^ ^ SI A B N ^ BN^ B:= := 1|| 2|| || n B 1 2 n ENTONCES ENTONCES Clausura(I) (I)= =Clausura Clausura(I) (I) {B {B:= :=.. i}i i= =1..n 1..n Clausura i} Repetir esta regla hasta que no se pueda aumentar Repetir esta regla hasta que no se pueda aumentar II
IrA (s, A)
FORtodos todoslos loselementos elementosB B:= := ..A A IIDO DO FOR IrA (s, A) = IrA (s, A) Clausura({B := A. A. }) }) IrA (s, A) = IrA (s, A) Clausura({B :=
Construccin
Ampliarla lagramtica gramticacon conS S:= :=S S Ampliar C= =Clausura Clausura({S ({S:= :=.S}) .S})= =II0 C
0
Paracada cadaconjunto conjuntoIi IiC Cyypara paracada cadaA A{T {T N} N}para parael el Para que exista en Ii un elemento de tipo B := . A que exista en Ii un elemento de tipo B := . A C= =C C IrA IrA(Ii, (Ii,A) A) C Repetirel elpaso pasoanterior anteriorhasta hastaque queC Cno nopueda puedaampliarse. ampliarse. Repetir
Los estados Sj del autmata son los conjuntos Ij de C Las transiciones son los smbolos N T {$}
Construccin
S0= =Clausura Clausura({S ({S:= :=.S}) .S}) S0 REPEAT REPEAT FORcada cadaA AN N T T//Existe ExisteB B:= := ..A A Si SiDO DO FOR Crearun unestado estadonuevo nuevoSn Sn= =IrA IrA(Si, (Si,A) A)(si (sino noexiste) existe) Crear Crearuna unatransicin transicinde deSi Sia aSn Snetiquetada etiquetadacon conA A Crear Encada cadaiteracin iteracinconsiderar considerarcomo comoSi Sicada cadaSn Snnuevo nuevo En
Existen mltiples entradas para la entrada accin La gramtica No es SLR (LRA, LR(1) u otra) La gramtica es ambigua Conflicto reduccin desplazamiento Forzar una eleccin
S := if S S := if S else S S := other Ij = {S := if S. , S := if S . else S} r1 dk
Causas
Tipos
Existen mltiples entradas para la entrada accin La gramtica No es SLR (LRA, LR(1) u otra) La gramtica es ambigua Conflicto reduccin - reduccin
r3 r2
Causas
Tipos
Cada celda vaca de la tabla de accin es un error En las casillas de error de los estados que reduzca siempre por la misma regla forzar la reduccin. El error se propaga hasta el siguiente desplazamiento. Expresar un mensaje de error por cada estado a partir de las acciones correctas de dicho estado. Eliminar el menor nmero posible de la entrada antes de reanudar el anlisis Pasar a un estado consistente
Recuperacin
ndice General
Introduccin Anlisis ascendente reduccin - desplazamiento Analizador ascendente SLR Clasificacin de gramticas
Clasificacin de gramticas
GramticasIndependientes Independientesde decontexto contexto Gramticas LR (k) LR (1) LALR LR(0) SLR LL (1) Lenguajes No Deterministas
LL (k)
Bibliografa
[AJO] AHO, SETHI, ULLMAN: Compiladores: Principios, tcnicas y herramientas,: Addison-Wesley Iberoamericana, 1990
[GARRIDO]