Problemas del análisis SLR
En algunas
situaciones el análisis SLR genera conflictos, este tipo de
problemas también se pueden dar en el análisis LR y
LALR, pero al ser el análisis SLR el más restrictivo de
ellos es más fácil que se generen conflictos.
Un
conflicto ocurre cuando en la tabla de análisis generada hay
más de una acción para alguna entrada de la tabla. Los
conflictos pueden ser de los siguientes tipos:
Desplazamiento/Reducción.
Por ejemplo, en la siguiente gramática
S→A
| xb
A→aAb
| B
B→x
Al
calcular el cierre, uno de los estados queda de la siguiente forma:


Al generar
la tabla de acción en este estado con la b hay que
hacer un desplazamiento y una reducción. El problema es que en
los seguidores de la B, está la b, y es donde se
genera el conflicto. Es decir, con la b la tabla nos informa
que son posibles dos acciones, un desplazamiento y una reducción,
lo cual es un conflicto que no se puede resolver con la información
de que disponemos (el siguiente componente léxico en la
entrada, y el estado actual del autómata).
Reducción/Reducción.
Por ejemplo, en la siguiente gramática
S→Ab
| Bc
A→a
B→a
A→Bb
Uno de los
estados generados al calcular el autómata sería:


En este
estado hay que realizar dos reducciones, el problema está en
que en lo seguidores de B y en los seguidores de A hay
un terminal común que es la b. Por lo tanto no se sabe
la reducción que hay que aplicar y se genera un conflicto
El motivo
de estos conflictos, viene dado por el hecho de que a la hora de
reducir por un no terminal X
en un estado, se hace uso de un símbolo que vendrá dado
por los seguidores de X
en todos los estados posibles. Como se verá después lo
que hace el método LR es mantener un conjunto de símbolos
de anticipación más discriminante. Para ello hay que
modificar la definición de item hecha anteriormente. En la
nueva definición, al item se le incorpora un elemento más
que es un conjunto de símbolos de anticipación. De esta
forma, en cada item se van registrando los símbolos de
anticipación por los que hacer la reducción. Estos
símbolos de anticipación solo tienen efecto en
las reducciones no en los desplazamientos.
|