Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduccin
El objetivo de esta prctica es trabajar con los analizadores sintcticos LR(k).
Para ello se deber conocer qu son los smbolos de preanlisis y el mecanismo de
construccin de un analizador sintctico LR(k). Puesto que estos dos temas no se
tratan adecuadamente en el libro base de la asignatura, se recomienda consultarlos
por cualquier otra bibliografa. En concreto puede ser til consultar el libro de
la bibliografa complementaria Teora de la Computacin: lenguajes formales,
autmatas y complejidad o bien el ejemplo que se incluye en el enunciado de
esta prctica.
S xSz
S ySz
Sz
Dada cualquier cadena perteneciente al lenguaje generado por G, a la hora
de decidir qu produccin utilizar para derivarla, basta con inspeccionar si a
continuacin viene una x, una y o una z. Por tanto, para esta gramtica se necesita
un nico smbolo de preanlisis.
Los estados del autmata finito correspondiente a la tabla de anlisis de un
analizador sintctico LR, se corresponden con una determinada derivacin de la
gramtica. Los estados de aceptacin se corresponden con situaciones en las que
el autmata ha reconocido una derivacin vlida de la gramtica.
Por tanto, en cada estado se indica para cada produccin de la gramtica, la
parte que ya se ha reconocido y la parte que queda por identificar. As por ejemplo,
si se supone que de la produccin S xSz ya se ha reconocido la x, el autmata
debera poder controlar que resta por reconocer la subcadena que se obtendra
al derivar el no terminal S. Para facilitar la comprensin del funcionamiento
del autmata, se marcar la produccin con un indicando qu posibilidades
de derivacin hay en ese estado. Por lo tanto, en este ejemplo, la produccin se
representara de esta forma S xSz.
Para el ejemplo de esta produccin, al estado del autmata, se le aadirn
las transiciones correspondientes a las producciones que contengan el smbolo no
terminal S en la parte izquierda, por lo tanto el estado del autmata (que ser el
estado D en la representacin grfica del autmata) queda definido por:
S xSz
S xSz
S ySz
S z
A continuacin se describe el proceso de definicin del resto de estados del
autmata.
El estado inicial, marcado con A, contendr una produccin extra que
solamente genera el smbolo inicial de la gramtica, por lo tanto el estado queda
definido por las siguientes producciones:
S S
S xSz
S ySz
S z
Otro estado, el estado B, indica que se ha reconocido la produccin S S.
Para ello, se representar el estado poniendo el smbolo detrs de la produccin
(S S). El estado B es un estado de aceptacin (porque es un estado en el que
ya se ha reconocido una produccin).
El estado C, es el estado al que se accede cuando en la cinta de entrada hay un
smbolo y y se est reconociendo la produccin S ySz. Este estado se define:
S ySz
S xSz
S ySz
S z
Otro estado, el estado D se ha definido al principio del ejercicio como ejemplo.
Estado
A
B
C
D
E
F
G
H
I
x
desplazar D
y
desplazar C
z
desplazar E
desplazar D
desplazar D
desplazar C
desplazar C
desplazar E
desplazar E
Sz
desplazar G
S ySz
desplazar I
S xSz
FDC
S
B
Aceptar
F
H
Sz
S ySz
S xSz
y
y
z
y
x
z
B
x
Figura 1: Autmata del analizador sintctico LR(1) del ejercicio
Como el nico elemento de la produccin que queda por identificar es un smbolo
terminal, no se introduce ninguna produccin ms en este estado.
Al estado G, se llega despus de reconocer el smbolo terminal z en la
produccin S ySz, y por tanto es un estado de aceptacin que reconoce esta
produccin.
El estado H, es similar al estado F solo que con la produccin S xSz.
Por su parte, el estado I, es equivalente al estado G solo que con la produccin
S xSz.
Para terminar de representar cada estado se utilizar la tabla 1. En esta tabla, se
representa qu accin realizar para cada estado y para cada smbolo de preanlisis.
Los smbolos de preanlisis son los elementos terminales del lenguaje, junto
con la Marca de Final de Cadena (FDC). Cuando en la tabla aparece la accin
desplazar el autmata leer de la cinta de entrada el smbolo actual y lo apilar
en la pila junto con el estado que acompaa a la accin desplazar. Adems,
se utilizar la pila para ir introduciendo los elementos terminales que se van
leyendo, de forma que se ir construyendo dentro de la pila la produccin que
se est resolviendo. Cuando se ha reconocido ntegramente la parte izquierda de
una produccin, se desapilan todos sus elementos y se apila la parte derecha de la
produccin. Tambin se introduce en la pila una marca para saber sobre qu estado
se est realizando el trabajo, ya que cada vez que se reconoce una produccin,
se debe volver al estado en el cual se ha empezado a reconocer la produccin
para continuar con el reconocimiento de la cadena. En la figura 1 se muestra el
diagrama de transiciones del autmata correspondiente al analizador LR(1) del
enunciado.
Cinta
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
yxyzzzz
Estado
A
C
D
C
E
C
F
G
D
H
I
C
F
G
B
Pila
yC
yCxD
yCxDyC
yCxDyCzE
yCxDyCSF
yCxDyCSF
yCxDyCSFzG
yCxDSH
yCxDSH
yCxDSHzI
yCSF
yCSF
yCSFzG
SB
Tabla de Transicin
desplazar C
desplazar D
desplazar C
desplazar E
Sz
desplazar G
S ySz
desplazar I
S xSz
desplazar G
S ySz
Aceptar
Parte 1: Cuestionario
El presente cuestionario constituye la primera parte evaluable de la prctica y
contar 5 puntos en la calificacin final de la prctica.
Cada acierto suma un punto sobre 5; cada error y cada pregunta no
contestada no puntan.
1. Dado un determinado alfabeto, tomemos un lenguaje cualquiera
independiente del contexto (LIC) que no contiene la cadena vaca Es
posible construir un analizador sintctico del tipo LR(k)?
a) S, para todo LIC
b) Slo es posible para los LICs deterministas que contengan a la cadena
vaca
c) Es posible para cualquier LIC determinista independientemente de que
contenga o no a la cadena vaca
d) Es posible para todos los LICs deterministas y para algunos LICs no
deterministas.
2. Indicar cul de las siguientes afirmaciones es verdadera:
a) Los lenguajes reconocidos por analizadores sintcticos de tipo LR(k)
son los lenguajes independientes del contexto deterministas o no
deterministas
b) Todo lenguaje regular puede ser reconocido por un analizador
sintctico de tipo LR(k)
c) Los analizadores sintcticos de tipo LR(k) slo se pueden utilizar en
lenguajes regulares.
d) Ninguna de las afirmaciones anteriores es cierta
3. Dada la siguiente gramtica:
SA
S xb
A aAb
AB
Bx
Indicar cuntos smbolos de preanlisis seran necesarios para construir un
analizador sintctico LR(k) sobre esa gramtica:
8
a) 0
b) 1
c) 2
d) 3
4. Indicar si es verdadera o falsa la siguiente afirmacin: Para todo lenguaje
independiente del contexto asociado a un alfabeto es posible construir
un analizador sintctico del tipo LR(k) con la condicin de que k sea
suficientemente grande
a) Verdadero
b) Falso
5. Dada la siguiente gramtica:
S xAy
S xByy
A xAy
A
B xByy
B
Indicar cul de las siguientes afirmaciones es verdadera:
a) El nmero de smbolos de preanlisis necesarios para construir un
analizador LR(k) para esta gramtica es 1
b) El nmero de smbolos de preanlisis necesarios para construir un
analizador LR(k) para esta gramtica es 2
c) El nmero de smbolos de preanlisis necesarios para construir un
analiador LR(k)para esta gramtica es 3
d) No es posible construir un analizar LR(k) para esta gramtica ya que
genera un lenguaje independiente del contexto no determinista
Referencias
[1] J.G. Brookshear. Teora de la Computacin: Lenguajes Formales, Autmatas
y Complejidad. Addison-Wesley Iberoamericana, 1993.
10