Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sintáctico SLR
(LR SIMPLE)
ESQUEMA DEL ANALIZADOR SINTÁCTICO LR
E’-> E
E -> E + T | E E -> E + T
T -> T * F | T E -> T
F -> (E) | id T -> T * F
T -> F
F -> (E)
F -> id
I1
E’-> E.
I0 E -> .E + T
E’-> .E E
I2
E -> .E + T
E -> .T E -> T.
T
T -> .T * F T -> T.*F
T -> .F
F -> .(E) I3
F -> .id F
T -> F.
I4
F -> (.E)
I0 E -> .E + T
E -> .T
E’-> .E
T -> .T*F
E -> .E + T
( T -> .F
E -> .T
F -> .(E)
T -> .T * F
F -> .id
T -> .F
F -> .(E)
id I5
F -> .id
F -> id.
I6
E -> E+.T
T -> .T*F
T -> .F
+ F -> .(E)
I1
E’-> E. F -> .id
E -> .E + T
F
I9
E -> E + T.
T -> T.*F
I7 T -> T*.F
F -> .(E)
F -> .id
I2 *
E -> T. F
T -> T.*F
I10
T -> T*F.
I1
+ T
E’→E. I6 I9
E
I0 E→E.+T E→E+.T E→E+T.
E’→.E T→.T*F T→T.*F
id
E→.E+T T→.F +
E→.T F→.(E) *
T→.T*F F→.id
T→.F T
I2
F→.(E)
E→T.
F→.id
E→T.*F
*
I7
id
T→T*.F I10
id F→.(E) F T→T*F.
( F→.id
T I5
id
F→id.
I4
F→(.E)
F
E→.E+T E
E→.T ) I11
T→.T*F I8
( ) F→(E).
T→.F E→E.+T
) F→(E.)
F→.(E)
F→.id
I3 F
T→F.
CONSTRUCCIÓN DE TABLA SLR
SIGUIENTES
Primero(E) -> {(, id}
Primero(E’) -> {+,e}
Primero(T) -> {(,id}
Primero(T’) -> {*,e}
Primero(F) -> {(,id}
Siguiente(E)-> {$,),+,*}
Siguiente(E’)-> {$,)}
Siguiente(T)-> {$,),+,*}
Siguiente(T’)-> {$,),+}
Siguiente(F)->{+,$,),*}
GRAMÁTICA ENUMERADA
E -> E + T (r1)
E -> T (r2)
E -> T * F (r3)
T -> F (r4)
F -> (E) (r5)
F -> id (r6)
acción ir_a
Estado
id + * ( ) $ E T F
0 d5 d4 1 2 3
1 d6 acept
2 r2 d7 r2 r2
3 r4 r4 r4 r4
4 d5 d4 8 2 3
5 r6 r6 r6 r6
6 d5 d4 9 3
7 d5 d4 10
8 d6 d11
9 r1 r1 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5
EJEMPLO
w = id*id+id
● Recordar:
○ acción[S,a] = desplazar S’
meter a y despues S’
avanzar al siguiente símbolo de entrada
● acción[S,a] = reducir A -> (beta)
sacar 2*| |(beta) símbolos de la pila
sea S’ el estado que ahora está en la cima de la pila
meter A y después ir_a[S’,A] en la cima de la pila
PILA ENTRADA ACCIÓN
0 id * id + id $ desplazar a S5
0 id 5 * id + id $ F -> id
0 id 5 F 3 * id + id $ T -> F
0F3T2 * id + id $ desplazar a S7
0T2*7 id + id $ desplazar a S5
0 T 2 * 7 id 5 + id $ F -> id
0 T 2 * 7 id 5 F 10 + id $ T -> T * F
0 T 2 * 7 F 10 T 2 + id $ E -> T
0T2E1 + id $ desplazar a S6
0E1+6 id $ desplazar a S5
0 E 1 + 6 id 5 $ F -> id
0 E 1 + 6 id 5 F 3 $ T -> F
0E1+6F3T9 $ E -> E + T
0E1+6T9E1 $ ACEPTAR
E
E
+
T
T T
*
F F F
id * id + id $