Sei sulla pagina 1di 11

135

Anlisis LR(0)
Conflictos LR(0): introduccin
Cuando al construir la tabla de anlisis LR(0) descrita en los puntos anteriores no
se puede conseguir que sea determinista (porque en alguna casilla hay ms de
una accin) diremos que la gramtica no es LR(0)
En caso contrario diremos que la gramtica es LR(0).
La existencia del no determinismo se llama conflicto
Los conflictos pueden ser de los siguientes tipos
Conflictos reduccin / desplazamiento:
En estos casos las acciones de la casilla son de estos dos tipos
Como ejemplo recurdese el caso del ltimo ejercicio
Conflictos reduccin / reduccin:
En estos casos las acciones son de reduccin
El conflicto consiste en no poder determinar cul de las reglas reducir
136
Anlisis LR(0)
Conflictos LR(0): posible solucin de conflictos
Como se ha mencionado previamente, la existencia de conflictos implica la no
pertenencia de la gramtica al grupo de las LR(0)
Sin embargo, no es difcil, en algunos casos, imaginar una solucin al problema.
Analizaremos el conflicto del ejemplo: aunque se puede encontrar un rbol de
derivacin de la cadena, el ; indicado plantea la duda entre reducir o desplazar
begin dec ; ejec ; ejec end
<Bloque>
<Decs> <Ejecs>
<Ejecs>
Desplazamiento
Reduccin
137
Anlisis LR(0)
Conflictos LR(0): posible solucin de conflictos
Sin embargo, no es complicado comprobar que la reduccin imposibilitara el
correcto anlisis de la cadena ya que a <Ejecs> slo puede seguirle end,
reducir obligara a que el terminal que siga a <Ejecs> fuese ; y, segn la
gramtica eso es imposible.
Por tanto, realmente, la nica opcin posible es el desplazamiento
begin dec ; ejec ; ejec end
<Bloque>
<Decs> <Ejecs>
<Ejecs>
Desplazamiento
138
Anlisis SLR(1)
Introduccin
El anlisis SLR(1) esa una versin mejorada del anlisis LR(0) que
Comparte la tcnica de creacin de estados y, por tanto:
Emplea el mismo algoritmo para la operacin cierre
Emplea el mismo algoritmo para la operacin ir_a
Utiliza la tabla de anlisis para tratar las entradas de la misma manera
Rellena las operaciones de desplazamiento de la misma manera
Pero tiene en cuenta que las reducciones slo se produzcan en
presencia de los terminales que pueden seguir al no terminal de la parte
izquierda de la regla reducida
139
Anlisis SLR(1)
Construccin de tablas de anlisis SLR(1): mtodo
Se diferenciar entre la parte de la tabla que indica desplazamientos y la que
indica reducciones:
Desplazamientos de la tabla:
Es igual que LR(0)
Se obtienen leyendo las transiciones del autmata.
Es decir, si en el autmata se transita del estado s
i
al s
j
mediante el
smbolo (terminal o no) X, entonces se aade a la casilla la accin
dj Si X
T
Tabla _sintctica[i,X]=
j Si X
N
Reducciones de la tabla:
En las casillas a cada uno de los estados con configuraciones de
reduccin (por tanto contendr una configuracin del tipo A ) hay
que aadir la reduccin de la regla A slo en las columnas
correspondientes a los terminales que puedan seguir al no terminal
de la parte izquierda de la regla (A).
Por lo tanto este paso es diferente al de LR(0)
140
Anlisis SLR(1)
Construccin de tablas de anlisis SLR(1): mtodo
Aceptacin:
Es igual que LR(0)
Si un estado s
i
transita con el terminal $ al estado que contenga la
configuracin de reduccin de la regla aadida axioma axioma$
hay que aadir a Tabla _sintctica[i,$]la accin aceptar
Es posible que el alumno encuentre en alguna fuente bibliogrfica la
aceptacin de la cadena por parte del analizador con otros recursos
tcnicos que no mencionaremos explcitamente en este curso.
Error:
Es igual que LR(0)
Todas las dems casillas tienen asociada la accin de error
Lo ms frecuente es dejar esas casillas en blanco de forma que es lo
mismo encontrar una casilla en blanco que ejecutar la accin error
141
Anlisis SLR(1)
Construccin de tablas de anlisis SLR(1): ejemplo
A continuacin se muestra la tabla de anlisis para el ejercicio que se est
solucionando
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
Es fcil comprobar que se
cumple, en la gramtica:
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
siguientes(B) = {$}
siguientes(D)= {;}
siguientes(E)= {f}
142
Anlisis SLR(1)
Construccin de tablas de anlisis SLR(1): ejercicio
Comprobar la correccin de la tabla analizando con ella las siguientes entradas
(ignore los saltos de lnea y los blancos):
Correcta:
begin
dec;
ejec;
ejec
end
Incorrecta:
begin
dec;
ejec;
end
143
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
144
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0 b 2
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
145
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0 b 2 d 3
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
146
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0 b 2 D 4
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
147
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0 b 2 D 4 ; 5
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
148
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0 b 2 D 4 ; 5 e 7
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
149
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0 b 2 D 4 ; 5 e 7 ; 10
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
150
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
2 D 4 ; 5 e 7 ; 10 e 7
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
0 b
151
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
2 D 4 ; 5 e 7 ; 10 E 11
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
0 b
152
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0 b 2 D 4 ; 5 E 6
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
153
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0 b 2 D 4 ; 5 E 6 f 9
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
154
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0 B 1
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
155
Anlisis SLR(1) : ejercicio
f $ e ; e ; d b
0 B 1
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
156
Anlisis SLR(1) : ejercicio
$ ; e ; d b
0
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
157
Anlisis SLR(1) : ejercicio
$ ; e ; d b
0 b 2
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
158
Anlisis SLR(1) : ejercicio
$ ; e ; d b
0 b 2 d 3
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
159
Anlisis SLR(1) : ejercicio
$ ; e ; d b
0 b 2 D 4
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
160
Anlisis SLR(1) : ejercicio
$ ; e ; d b
0 b 2 D 4 ; 5
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
161
Anlisis SLR(1) : ejercicio
$ ; e ; d b
0 b 2 D 4 ; 5 e 7
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
162
Anlisis SLR(1) : ejercicio
$ ; e ; d b
0 b 2 D 4 ; 5 e 7 ; 10
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
163
Anlisis SLR(1) : ejercicio
$ ; e ; d b
0 b 2 D 4 ; 5 e 7 ; 10
(0)B B$
(1)B bD;Ef
(2)D d
(3)D D;d
(4)E e
(5)E e;E
11
6
E
r1
acc
$
r5 11
d7 10
9
r3 8
r4
d9
f
1
4 d3 2
r2 3
d5 4
d7 d8 5
6
d2
b
d10
; E
Ir_a Accin
7
1 0
D B e d

N

T
164
Anlisis SLR(1)
Conceptos
Cuando al construir la tabla de anlisis SLR(1) descrita en los puntos anteriores
no se puede conseguir que sea determinista (porque en alguna casilla hay ms
de una accin) diremos que la gramtica no es SLR(1)
En caso contrario diremos que la gramtica es SLR(1).
165
Otros algoritmos de anlisis
Ejercicio introductorio
Construya la tabla de anlisis SLR(1) de la siguiente gramtica que genera el
lenguaje
{xb, a
n
xb
n
| n 0}
(1)S A
(2)S xb
(3)A aAb
(4)A B
(5)B x
Lo primero es aumentar la gramtica
(0)S S$
(1)S A
(2)S xb
(3)A aAb
(4)A B
(5)B x
166
Otros algoritmos de anlisis
Ejercicio introductorio
Calculamos el diagrama de transiciones entre estados del autmata SLR(1)
(0)S S$
(1)S A
(2)S xb
(3)A aAb
(4)A B
(5)B x
167
Y la tabla de anlisis SLR(1)
(0)S S$
(1)S A
(2)S xb
(3)A aAb
(4)A B
(5)B x
Otros algoritmos de anlisis
Ejercicio introductorio
r3
r5
r5/s6
r4
b
4
4
B
r3
r5
r2
r5
r4
r1
acc
$
9
8
1
2
7 s8 s3 3
4
5
6
E
Ir_a Accin
7
2 1 s5 s3 0
A S x a

N

T
168
Otros algoritmos de anlisis
Introduccin
Hay gramticas interesantes para los lenguajes de programacin de alto nivel
que no son SLR(1)
En estos casos se puede utilizar algoritmos ms potentes
Podemos mencionar, por ejemplo
LR(k),, k 1
LALR(1)
169
Otros algoritmos de anlisis
Ejemplo
Construya la tabla de anlisis SLR(1) de la siguiente gramtica (ambigua) que
genera expresiones aritmticas
(1)E E+E
(2)E E*E
(3)E i
Lo primero es aumentar la gramtica
(0)E E$
(1)E E+E
(2)E E*E
(3)E i
170
Otros algoritmos de anlisis
Ejemplo
Calculamos el diagrama de transiciones entre estados del autmata SLR(1)
(0)E E$
(1)E E+E
(2)E E*E
(3)E i
171
Y la tabla de anlisis SLR(1)
(0)E E$
(1)E E+E
(2)E E*E
(3)E i
La gramtica no es SLR(1)
Otros algoritmos de anlisis
Ejemplo
r1/s3
r2/s3
s3
r3
+
5
6
2
B
r1
r2
acc
r3
$
r3 1
s4 2
s1 3
s1 4
r2/s4 5
r1/s4 6
E
Accin
s1 0
i *

T
172
Si el alumno reflexiona, el problema est originado por la ambigedad
(i+i*i=(i+i)*i? o i+i*i=i+(i*i)?)
En este caso una posible solucin es forzar una decisin en las casillas
conflictivas.
Hay que tener en cuenta la manera en la que afecta a la asignacin de
prioridades las diferentes alternativas.
El alumno puede comprobar:
Otros algoritmos de anlisis
Ejemplo: posibles soluciones
173
El efecto de desplazar en el caso de encontrar + y reducir en el caso de
encontrar *
(0)E E$
(1)E E+E
(2)E E*E
(3)E i
Otros algoritmos de anlisis
Ejemplo: posibles soluciones
s3
s3
s3
r3
+
5
6
2
B
r1
r2
acc
r3
$
r3 1
s4 2
s1 3
s1 4
r2 5
r1 6
E
Accin
s1 0
i *

T
174
El anlisis de la cadena i*i+i*i+i
Otros algoritmos de anlisis
Ejemplo: posibles soluciones
175
El efecto de desplazar en el caso de encontrar * y reducir en el caso de
encontrar +
(0)E E$
(1)E E+E
(2)E E*E
(3)E i
Otros algoritmos de anlisis
Ejemplo: posibles soluciones
r1
r2
s3
r3
+
5
6
2
B
r1
r2
acc
r3
$
r3 1
s4 2
s1 3
s1 4
s4 5
s4 6
E
Accin
s1 0
i *

T
176
El anlisis de la cadena i*i+i*i+i
Otros algoritmos de anlisis
Ejemplo: posibles soluciones
177
LR(k):
Tcnica de anlisis sintctico ascendente que:
Examina la entrada de izquierda a derecha (left-to-right)
Construye una derivacin derecha de la palabra analizada (right-most
derivation)
Utiliza para ello los k siguientes smbolos (tokens) de la entrada
SLR:
Tcnica de anlisis sintctico ascendente que es una simplificacin de
LR(k).
Toma su nombre de la expresin inglesa que significa LR sencillo
LALR:
Tcnica de anlisis sintctico ascendente que es una extensin de la tcnica
LR pero utilizando smbolos de anticipacin.
Toma su nombre de la expresin ingles look-ahead LR que significa
precisamente eso.
Anlisis ascendente
Glosario
178
Anlisis sintctico
[Alf] Teora de Autmatas y lenguajes formales M. Alfonseca y otros
[Hop] Introduccin a la teora de autmatas, lenguajes y computacin Hopcroft, J.;
Motwani, R.; Ullman, J.
[Aho] Compiladores. Principios, tcnicas y herramientas A. V. Aho; R. Sefthi; J. D.
Ullman
Bibliografa

Potrebbero piacerti anche