Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ANLISIS ASCENDENTE
ANLISIS ASCENDENTE
Es un proceso reiterado, donde inicialmente se utiliza la cadena
que se va a analizar y finaliza cuando se completa el anlisis con
xito o cuando, por culpa de algn error sintctico, no se puede
continuar. En cada paso del anlisis se pretende indicar que
regla de la gramtica se tiene que aplicar en ese punto del rbol,
teniendo en cuenta el estado de este y la posicin de la cadena de
entrada a la que se ha llegado.
Por tanto, la parte derecha de una produccin contiene una
indicacin, llamada punto , que separa la parte analizada de
la que no lo est.
E E+T
En este tipo de anlisis se pueden aplicar dos acciones
esenciales: reduccin y desplazamiento.
REDUCCIN
DESPLAZAMIENTO
Se avanza un smbolo en la cadena de entrada y, el punto en todas
las reglas que siguen siendo compatibles con la subcadena de la
cadena de entrada.
E E+T
E E +T
Encontrar a continuacin un smbolo terminal +, supone desplazar
el punto una posicin.
EE+T
Indica que el analizador ha comprobado la parte derecha de la regla
y es compatible con la parte de la cadena de entrada analizada. En
este momento, se puede reducir toda la parte de la cadena de
entrada asociada a E+T y substituirla por el smbolo no terminal E,
que es la parte izquierda de la regla.
E E+T
LR (K)
Se introduce una tcnica eficiente de anlisis sintctico ascendente
que se puede utilizar para procesar una amplia clase de gramticas
libre de contexto, esta tcnica se denomina LR (k).
La abreviatura L indica que se realiza una lectura de izquierda a
derecha de la cadena de entrada (en ingls, from left to right),
mientras que la R refleja que estos analizadores construyen una
derivacin por la derecha de la entrada en orden inverso (en ingls,
rigthmost derivation).
El principal inconveniente del mtodo es que supone demasiado
trabajo construir manualmente un analizador sintctico LR (k) para
una gramtica de un lenguaje de programacin muy tpico, siendo
necesario utilizar una herramienta especializada para ello.
Si la gramtica contiene ambigedades u otras construcciones
difciles de analizar ante un examen de izquierda a derecha de la
entrada, el analizador puede localizar las reglas de produccin
problemticas e informar de ellas.
S E $
ET
EE+T
T num
Figura 1.
S E $
Un smbolo no terminal nunca se puede encontrar en una cadena de
entrada, solo puede aparecer mediante una reduccin.
A partir de la gramtica que se muestra en la Figura 1, se ensea
como se crea el estado inicial S0. Como la primera produccin tiene
detrs del punto el smbolo no terminal E, hay que aadir al estado
todas las producciones que empiecen por E, en este caso, las
producciones que empiezan por E, son:
S E $
EE+T
Por la misma razn, como T es un no terminal hay que aadir al
estado inicial todas las reglas donde la parte izquierda coincida con
el no terminal T.
T num
S0 = { S E
$
ET
EE+T
T num }
ESTADOS DE ACEPTACIN Y DE REDUCCIN
S1 = { S E $,
E +T}
Pero si en la cadena de entrada se encuentra el smbolo T, nicamente
se puede desplazar un smbolo de la produccin E T y de la
cadena de entrada. Este estado es de aceptacin, puesto que el punto
se encuentra al final de la cadena. Si el siguiente estado se denomina
S2, se puede ver como:
S2 = { E T }
S3 = { T num }
Aplicando todos los puntos mencionados anteriormente y a
partir de la gramtica que se muestra en la Figura 2, se
puede construir un autmata LR (0). Como se podra ver
en la Figura 3, que se mostrara mas adelante.
CONFLICTOS
CONFLICTO DESPLAZAR-REDUCIR
Se produce cuando en un estado se consigue efectuar la accin de
reduccin y desplazar. Si se supone el conjunto de elementos
correspondientes a un estado del autmata de anlisis
ascendente.
T i
T iE
CONFLICTO REDUCIR-REDUCIR
Ocurre cuando en un estado aparecen dos acciones de reducir.
Tambin en el caso de tener:
T i
V iE
DESPLAZAMIENTO D<E>
REDUCCIN R<P>
ACEPTACIN
ERROR
Si
Despus del no terminal S, no hay ningn smbolo ms. Por este motivo,
no se pueden calcular los PRIMEROS y hay que aadir como smbolo de
adelanto {$}. Por tanto, a S A y S x b se les debe aadir el smbolo
de adelanto {$}.
S A {$}
S x b {$}
Una vez calculado sus smbolos de adelanto, hay que volver a mirar si
estas producciones contienen un no terminal despus del punto, como
ocurre en el caso de S A {$}, donde A es un no terminal.
Por este motivo, se deben aadir todas las que empiecen por A, A a A
b y A B. Despus de aadirlas, se calcula su smbolo de adelanto.
S A {$}
Ocurre como en el caso anterior, despus del no terminal A, no hay
ningn smbolo y, por tanto, no se pueden calcular los PRIMEROS. Por
esta razn, hay que aadir como smbolo de adelanto {$}.
A a A b {$}
A B {$}
Finalmente, sucede igual con A B {$}, que contiene el smbolo no
terminal B. Se aade a a clausura, B x, que tambin tiene como
smbolo de adelanto {$}.
S0= {A aA b {$}
A a A b {$}
A B {$}
B x {$} }
El estado S5, se comporta diferente porque hay un smbolo
adelantado
A a A b {$}.
En este caso, como despus del punto hay un no terminal A, hay que
agregar al estado todas las producciones que empiecen por A, que
son A a A b y A B. Una vez aadidas, hay que calcular su
smbolo de adelanto.
A a A b {$}
A a A b {b}
A B {b}
Ahora, al analizar A B {b}, como el siguiente smbolo B es un no
terminal, tambin hay que agregar todas las producciones que
contengan B. En ltimo lugar, se completa el estado
S5 con B x. Al no haber ningn smbolo despus del no terminal B,
se debe de coger como smbolo de adelanto {b}.
A a A b {$}
A a A b {b}
A B {b}
B x {b}
REDUCCIN
ACEPTACION
La produccin inicial no se expresa E E $, sino
E E{$}. El smbolo de final de cadena $ no aparece de
forma explcita, sino como smbolo de adelanto. Por tanto, la
accin de aceptacin se escribe en la casilla (Si, $), siempre
que en el estado Si, aparezca la produccin E E{$}.
Una vez creada la tabla de anlisis LR (1) mostrada en la Figura
10. Se analiza la cadena de entrada a x b$.
El anlisis es muy parecido al del LR (0), lo nico que se ha de
tener en cuenta es el smbolo de adelanto a la hora de reducir una
produccin. Por ejemplo, la reduccin del estado 11 y 12 se
produce cuando el smbolo de adelanto de las producciones sea
igual al de la cadena de entrada.
TABLA DE ANLISIS LR