Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Teora de Lenguajes
Analizadores sint
acticos LR(0) y SLR
Clase de Hoy
Analizadores sint
acticos LR(0) y SLR
Analizadores Sintacticos LR(k)
L: left-to-right
R: rightmost derivation
k: n
umero de smbolos de lookahead
Analizadores sint
acticos LR(0) y SLR
Tipos de Analizadores Sintacticos LR(k)
LR(0)
SLR(1): Simple LR(1)
LALR(1): Lookahead LR(1)
LR(1)
Poder expresivo
LR(0) SLR(1) LALR(1) LR(1)
Analizadores sint
acticos LR(0) y SLR
Algunas Definiciones
Analizadores sint
acticos LR(0) y SLR
Parsers LR(k) - Estructura General
Analizadores sint
acticos LR(0) y SLR
Modelo de los analizadores sintacticos LR
Pila: Contiene los estados del AFD por los que se va pasando.
Tabla ir a: Funci on de transici
on de un AFD que reconoce
los prefijos viables de la gramatica.
Tabla acci
on:
desplazar i: desplazar y apilar el estado i.
reducir A : reducir por la producci on indicada.
aceptar : aceptar la cadena de entrada.
error : rechazar la cadena de entrada.
Analizadores sint
acticos LR(0) y SLR
Parsers LR(k) - Algoritmo
apilar s0
loop
s tope de la pila
a proximo smbolo apuntado en w $
if accion[s, a] = desplazar s 0 then
apilar s 0
avanzar al proximo smbolo de entrada
else if accion[s, a] = reducir A then
sacar || smbolos de la pila
s 0 tope de la pila
apilar ir a[s 0 , A]
else if accion[s, a] = aceptar then
return
else
error ()
end if
end loop
Analizadores sint
acticos LR(0) y SLR
Analizadores sintacticos LR(0) y SLR(1)
Item LR(0)
Produccion con un pivote () en alguna posici
on del lado derecho.
A BC
AB C
A BC
Para la produccion A el u
nico tem es: A
Analizadores sint
acticos LR(0) y SLR
AFD para reconocer prefijos viables de una gramatica
Analizadores sint
acticos LR(0) y SLR
AFD para reconocer prefijos viables de una gramatica
Analizadores sint
acticos LR(0) y SLR
AFD para reconocer prefijos viables de una gramatica
Analizadores sint
acticos LR(0) y SLR
AFD para reconocer prefijos viables de una gramatica
Analizadores sint
acticos LR(0) y SLR
AFD para reconocer prefijos viables de una gramatica
Analizadores sint
acticos LR(0) y SLR
Gramaticas LR(0) SLR(1)
Conflictos
Si la tabla acci
on tiene mas de una entrada en alg
un casillero,
entonces la gramatica no es LR(0) / SLR(1).
Posibles conflictos:
shift-reduce
reduce-reduce
Analizadores sint
acticos LR(0) y SLR
Ejercicio (1)
S SA|A
A (S)|()
Es LR(0)? Es SLR?
Analizadores sint
acticos LR(0) y SLR
Tabla accion LR(0) para G1
estado ( ) $
0 desplazar 3
1 desplazar 3 aceptar
2 reducir S A reducir S A reducir S A
3 desplazar 3 desplazar 6
4 reducir S SA reducir S SA reducir S SA
5 desplazar 3 desplazar 7
6 reducir A () reducir A () reducir A ()
7 reducir A (S) reducir A (S) reducir A (S)
Analizadores sint
acticos LR(0) y SLR
Tabla ir a LR(0) para G1
estado S A
0 1 2
1 4
2
3 5 2
4
5 4
6
7
Analizadores sint
acticos LR(0) y SLR
Analisis de una cadena del lenguaje generado por G1
E id|id(E )|E + id
Es LR(0)? Es SLR?
Analizadores sint
acticos LR(0) y SLR
Tabla accion SLR para G2
estado id ( ) + $
0 2
1 3 aceptar
2 4 E id E id E id
3 5
4 2
5 E E + id E E + id E E + id
6 7 3
7 E id(E ) E id(E ) E id(E )
Siguientes(E) = {), +, $}
Analizadores sint
acticos LR(0) y SLR
Tabla ir a SLR para G2
estado E
0 1
1
2
3
4 6
5
6
7
Analizadores sint
acticos LR(0) y SLR
Analisis de una cadena del lenguaje generado por G2
Derivacion:
S id(E ) id(E + id) id(id + id)
Analizadores sint
acticos LR(0) y SLR
Bibliografa
Analizadores sint
acticos LR(0) y SLR