Documentos de Académico
Documentos de Profesional
Documentos de Cultura
10 Clasificacion de Gramaticas
10 Clasificacion de Gramaticas
Resumen
Repaso de parseo LR y algunas clarificaciones
Clasificacin de gramticas
Lenguajes LR
Eliminando Ambiguedad
Manejo de errores y recuperacin de errores
Oscar Bonilla
Universidad Galileo
Oscar Bonilla
Universidad Galileo
Goto sn
slo ve el stack
Reduce n
LR(0) misma reduccin para todos los inputs no look ahead LR(1) necesitamos el smbolo de entrada un look ahead
Oscar Bonilla
Universidad Galileo
State s0 s1 s2 s3 s4 s5
Goto $ error accept error error reduce (2) reduce (3) X goto s1 goto s3
LR(0)
State s0 s1 s2 s3 s4 s5 s6
Oscar Bonilla
ACTION ) reduce (5) reduce (5) reduce (5) shift to s4 reduce (4) error error
Goto $ reduce (5) reduce (5) reduce (5) error reduce (4) accept reduce (2)
5
SL (1)
X goto s5
Universidad Galileo
Algunas Definiciones
Qu es una gramtica XY(k)? (X, Y {L, R}) Una gramtica G es una gramtica XY(k) si y slo si podemos crear una tabla de parseo XY(k) sin ningn conflicto shift/reduce o reduce/reduce
Oscar Bonilla
Universidad Galileo
Oscar Bonilla
Universidad Galileo
Universidad Galileo
Oscar Bonilla
Universidad Galileo
Resumen
Repaso de parseo LR y algunas clarificaciones
Clasificacin de gramticas
Lenguajes LR
Eliminando Ambiguedad
Manejo de errores y recuperacin de errores
Oscar Bonilla
10
Universidad Galileo
Clasificacin de Gramticas
Context free
Oscar Bonilla
11
Universidad Galileo
Clasificacin de Gramticas
Context free
G0 regular
Oscar Bonilla
12
Universidad Galileo
Gramticas Regulares
Una gramtica que puede ser expresada usando una expresin regular es una gramtica regular Lenguaje Ejemplo:
Cero o ms parntesis abiertos seguidos de cero o ms parntesis cerrados
G0 = { ( ) | a, b >= 0 } Gramtica
S XY$ X (X | Y )Y |
Oscar Bonilla
13
Universidad Galileo
Clasificacin de Gramticas
Context free
LR(0)
G0 regular
G1
Oscar Bonilla
14
Universidad Galileo
Gramticas LR(0)
Una gramtica que puede crear una tabla de parseo LR(0) sin ningn conflicto shift/reduce o reduce/reduce Lenguaje Ejemplo:
Uno o ms parntesis abiertos seguidos de un nmero igual de parntesis cerrados
G1 = { ( ) | n > 0 } La gramtica
<S> <X> $ <X> ( <X> ) | ( )
Oscar Bonilla
15
Universidad Galileo
Clasificacin de Gramticas
Context free
SLR(1) LR(0)
G0 regular
G1 G2
Oscar Bonilla
16
Universidad Galileo
Gramticas SLR(1)
Una gramtica que puede crear una tabla de parseo SLR(1) sin ningn conflicto shift/reduce o reduce/reduce Lenguaje Ejemplo:
Cero o ms parntesis abiertos seguidos de un nmero igual de parntesis cerrados
G2 = { ( ) | n >= 0 } La gramtica
<S> <X> $ <X> ( <X> ) |
Oscar Bonilla
17
Universidad Galileo
Clasificacin de Gramticas
Context free
G0 regular
G1 G2 G3
Oscar Bonilla
18
Universidad Galileo
Gramticas LALR(1)
Una gramtica que puede crear una tabla de parseo LALR(1) sin ningn conflicto shift/reduce o reduce/reduce Lenguaje Ejemplo:
???
G3 = { ??? } La gramtica
Oscar Bonilla
19
Universidad Galileo
Clasificacin de Gramticas
Context free
G0 regular
G1 G2 G3 G4
Oscar Bonilla
20
Universidad Galileo
Gramticas LR(1)
Una gramtica que puede crear una tabla de parseo LR(1) sin ningn conflicto shift/reduce o reduce/reduce Lenguaje Ejemplo:
Cero o ms parntesis abiertos seguidos de un nmero igual de parntesis cerrados o un solo parntesis abierto
G4 = { ( ) | n >= 0 } { ( } La gramtica
<S> <X> $ <X> ( | <Y> <Y> ( <Y> ) |
Oscar Bonilla
21
Universidad Galileo
Clasificacin de Gramticas
Context free LR(k) LR(1) LALR(1) SLR(1) LR(0)
G0 regular
G1 G2 G3 G4 G5
Oscar Bonilla
22
Universidad Galileo
Gramticas LR(k)
Una gramtica que puede crear una tabla de parseo LR(k) sin ningn conflicto shift/reduce o reduce/reduce Lenguaje Ejemplo:
Cero o ms parntesis abiertos seguidos de un nmero igual de parntesis cerrados o un nmero igual de corchetes cerrados
Oscar Bonilla
23
Universidad Galileo
Clasificacin de Gramticas
Context free unambiguous LR(k) LR(1) LALR(1) SLR(1) LR(0)
G0 regular
G1 G2 G3 G4 G5 G6
Oscar Bonilla
24
Universidad Galileo
Gramticas no Ambiguas
Una gramtica es no ambigua s y slo s tiene una secuencia de derivacin derecha (rightmost) nica (parse tree) Ejemplo: G6 = { [( ) | n >= 0 } { ]( ) La gramtica
<S> <X> <Y> <Z> <X> $ [ <Y> | ] <Z> ( <Y> ) | ( <Z> )) | n n n 2n
| n >= 0 }
Oscar Bonilla
25
Universidad Galileo
Clasificacin de Gramticas
Context free unambiguous LR(k) LR(1) LALR(1) SLR(1) LR(0)
G0 regular
G1 G2 G3 G4 G5 G6 G7
Oscar Bonilla
26
Universidad Galileo
Gramticas Ambiguas
Una gramtica es ambigua s y slo s tiene ms de una secuencia de derivacin por la derecha Ejemplo: i j k G7 = { ( ) ( | i = j or j = k } La gramtica
<S> <X> $ <X> <P> <Q> | <R> <S> <P> ( <P> ) | <Q> ( <Q> | <R> ( <R> | <S> ) <S> ( |
Oscar Bonilla
27
Universidad Galileo
Clasificacin de Gramticas
Context free unambiguous LR(k) LR(1) LALR(1) SLR(1) LR(0)
G0 regular
G1 G2 G3 G4 G5 G6 G7
Oscar Bonilla
28
Universidad Galileo
Clasificacin de Gramticas
Context free unambiguous LR(k) LR(1) LALR(1) SLR(1) LR(0)
G0 regular
G1 G2 G3 G4 G5 G6 G7
LL(0)
Oscar Bonilla
29
Universidad Galileo
Clasificacin de Gramticas
Context free unambiguous LR(k) LR(1) LALR(1) SLR(1) LR(0)
G0 regular
G1 G2 G3 G4 G5 G6 G7
LL(0) LL(1)
Oscar Bonilla
30
Universidad Galileo
Pregunta
Qu hay acerca del lenguaje? G8 = { ( ) ( | i = j = k }
i j k
Oscar Bonilla
31
Universidad Galileo
Resumen
Repaso de parseo LR y algunas clarificaciones
Clasificacin de gramticas
Lenguajes LR
Eliminando Ambiguedad
Manejo de errores y recuperacin de errores
Oscar Bonilla
32
Universidad Galileo
Lenguajes LR
Un lenguaje libre de contexto es un lenguaje LR s y slo s puede ser generado por una gramtica LR(k) para algn k
Oscar Bonilla
33
Universidad Galileo
Lenguajes LR
El conjunto de lenguajes LR es independiente de la distancia de lookahead k Dada cualquier gramtica LR(k) Gk, existe una gramtica LR(0) G0 tal que L(Gk) = L(G0) Para todos los lenguajes que vimos con gramticas SLR(1), LALR(1) y LR(1), podramos haber encontrado una gramtica LR(0)!!!
Oscar Bonilla
34
Universidad Galileo
Ejemplo
Lenguaje Cero o ms parntesis abiertos seguidos de un nmero igual de parntesis cerrados o un solo parntesis abierto
Gramtica LR(1)
<S> <X> <X> <Y> <Y>
Oscar Bonilla
35
Universidad Galileo
26
<X> $ Y ( ( <Y> )
( Y
( ( <Y> ) ( <Y> )
Y
s3
Y )
s4
<Y> ( <Y> )
Universidad Galileo
X
s5
<S> <X> $
Oscar Bonilla
<Y> ( <Y> )
s6
<X> <Y>
36
26
<X> $ Y ( ( <Y> )
( Y
( ( <Y> ) ( <Y> )
Y
s3
Y )
s4
<Y> ( <Y> )
Universidad Galileo
X
s5
<S> <X> $
Oscar Bonilla
<Y> ( <Y> )
s6
<X> <Y>
37
Ejemplo
Lenguaje Cero o ms parntesis abiertos seguidos de un nmero igual de parntesis cerrados o un solo parntesis abierto
Gramtica LR(1)
<S> <X> <X> <Y> <Y>
Gramtica LR(0)
<S> <X> <X> <X> <Y> <Y> <Z>
38
Oscar Bonilla
s7
<Z>
Z Z (
s2
s0
<S> <X> <X> <X> <Y> <Y>
Z
s1
( Y
s6
Y
s3
Y )
s4
<Y> ( <Y> )
Universidad Galileo
X
s5
<S> <X> $
Oscar Bonilla
s7
<Z>
Z Z (
s2
s0
<S> <X> <X> <X> <Y> <Y>
Z
s1
( Y
s6
Y
s3
Y )
s4
<Y> ( <Y> )
Universidad Galileo
X
s5
<S> <X> $
Oscar Bonilla
Lenguajes LR
El conjunto de lenguajes LR es independiente de la distancia de lookahead k Dada cualquier gramtica LR(k) Gk, existe una gramtica LR(0) G0 tal que L(Gk) = L(G0) Para todos los lenguajes que vimos con gramticas SLR(1), LALR(1) y LR(1), podramos haber encontrado una gramtica LR(0)!!! Pero esto puede ser muy difcil!!!
Oscar Bonilla
41
Universidad Galileo
Resumen
Repaso de parseo LR y algunas clarificaciones
Clasificacin de gramticas
Lenguajes LR
Eliminando Ambiguedad
Manejo de errores y recuperacin de errores
Oscar Bonilla
42
Universidad Galileo
Lenguajes Ambiguos
Un lenguaje libre de contexto es inherentemente ambiguo si toda gramtica que genera el lenguaje es ambigua
Sin embargo, la mayora de gramticas ambiguas encontradas en la prctica son para lenguajes no ambiguos
Queremos hacerlas no ambiguas
Oscar Bonilla
43
Universidad Galileo
Gramticas Ambiguas
Si tenemos una gramtica ambigua para un lenguaje no ambiguo, podemos:
Escribir una gramtica no ambigua Usar precedencia y asociatividad para resolver los conflictos en las acciones del parser
Oscar Bonilla
44
Universidad Galileo
Ejemplo
<E> <E> + <E> | <E> * <E> | ( <E> ) | id
Oscar Bonilla
45
Universidad Galileo
Ejemplo
<E> <E> + <E> | <E> * <E> | ( <E> ) | id
Oscar Bonilla
46
Universidad Galileo
Ejemplo
<E> <E> + <E> | <E> * <E> | ( <E> ) | id
Oscar Bonilla
47
Universidad Galileo
<S> <E> $
Oscar Bonilla
48
Universidad Galileo
<S> <E> $
s2
<S> <E> <E> <E> <E> ( <E> ) <E> + <E> <E> * <E> ( <E> ) id
s6
<E> <E> + <E> <E> <E> * <E> <E> ( <E> )
s1
<S> <E> <E> <E> + <E> <E> <E> * <E>
s3
<E> id
s7
<E> <E> + <E> <E> <E> + <E> <E> <E> * <E>
s8 s4
<S> <E> <E> <E> <E> <E> + <E> <E> + <E> <E> * <E> ( <E> ) id
s5
<S> <E> <E> <E> <E> <E> * <E> <E> + <E> <E> * <E> ( <E> ) id
49
s9
<E> ( <E> )
Universidad Galileo
Oscar Bonilla
s0
id
Oscar Bonilla
id
50
id
Universidad Galileo
s7 s4 s1 s0
<E> + <E> $
id
Oscar Bonilla
id
51
id
Universidad Galileo
s7
<E> <E> + <E> <E> <E> + <E> <E> <E> * <E>
Shift or reduce
s7 s4 s1 s0 <E> + <E> $
id
Oscar Bonilla
id
52
id
Universidad Galileo
Oscar Bonilla
53
Universidad Galileo
Otro Ejemplo
<stmt> if <expr> then <stmt> else <stmt> <stmt> if <expr> then <stmt> <stmt> other
Oscar Bonilla
54
Universidad Galileo
Otro Ejemplo
<stmt> if <expr> then <stmt> else <stmt> <stmt> if <expr> then <stmt> <stmt> other if ... then if ... then else if ... then else
Oscar Bonilla
55
Universidad Galileo
Otro Ejemplo
<stmt> if <expr> then <stmt> else <stmt> <stmt> if <expr> then <stmt> <stmt> other if ... then if ... then else if ... then else
Oscar Bonilla
56
Universidad Galileo
Otro Ejemplo
<stmt> if <expr> then <stmt> else <stmt> <stmt> if <expr> then <stmt> <stmt> other if ... then if ... then else if ... then else
Oscar Bonilla
57
Universidad Galileo
Otro Ejemplo
<stmt> if <expr> then <stmt> else <stmt> <stmt> if <expr> then <stmt> <stmt> other if ... then if ... then else if ... then else
Oscar Bonilla
58
Universidad Galileo
Otro Ejemplo
<stmt> if <expr> then <stmt> else <stmt> <stmt> if <expr> then <stmt> <stmt> other if ... then if ... then else if ... then else
Oscar Bonilla
59
Universidad Galileo
Otro Ejemplo
<stmt> if <expr> then <stmt> else <stmt> <stmt> if <expr> then <stmt> <stmt> other <S> <E> $ <E> i <E> o <E> <E> i <E> <E> <A>
Oscar Bonilla
60
Universidad Galileo
s2
E A
<S> <E>
s3
s1
<E> <E> <E> <E> <E>
i
i <E> o <E> i <E> i <E> o <E> i <E> <A>
<S> <A>
A
A i o
s5
<E> <E> <E> <E>
61
s6
<E> i <E> o <E>
E
i <E> o <E> i <E> o <E> i <E> <A>
Universidad Galileo
E
s4
<E> i <E> o <E> <E> i <E>
Oscar Bonilla
s2
E A
<S> <E>
s3
s1
<E> <E> <E> <E> <E>
i
i <E> o <E> i <E> i <E> o <E> i <E> <A>
<S> <A>
A
A i o
s5
<E> <E> <E> <E>
62
s6
<E> i <E> o <E>
E
i <E> o <E> i <E> o <E> i <E> <A>
Universidad Galileo
E
s4
<E> i <E> o <E> <E> i <E>
Oscar Bonilla
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s3
Oscar Bonilla
63
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
Follow(<E>) = { i, o, $ }
Oscar Bonilla
64
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s0
i
Oscar Bonilla
a
65
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s1 s0
i $
i
Oscar Bonilla
a
66
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s1 s1 s0
i i $
i
Oscar Bonilla
a
67
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s3 s1 s1 s0
A i i $
i
Oscar Bonilla
a
68
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s1 s1 s0
E i i $
i
Oscar Bonilla
a
69
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s4 s1 s1 s0
E i i $
i
Oscar Bonilla
a
70
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s4 s1 s1 s0
E i i $
i
Oscar Bonilla
a
71
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s4 s1 s1 s0
E i i $
i
Oscar Bonilla
a
72
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s5 s4 s1 s1 s0
o E i i $
i
Oscar Bonilla
a
73
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s3 s5 s4 s1 s1 s0
A o E i i $
i
Oscar Bonilla
a
74
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s5 s4 s1 s1 s0
E o E i i $
i
Oscar Bonilla
a
75
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s6 s5 s4 s1 s1 s0
E o E i i $
i
Oscar Bonilla
a
76
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s1 s0
E i $
i
Oscar Bonilla
a
77
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s4 s1 s0
E i $
i
Oscar Bonilla
a
78
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s0
E $
i
Oscar Bonilla
a
79
a
Universidad Galileo
State s0 s1 s2 s3 s4 s5 s6
error error accept reduce shift to s5/reduce reduce shift to s6 error reduce reduce
goto s6
goto s3
s3 s0
E $
i
Oscar Bonilla
a
80
a
Universidad Galileo
Resumen
Repaso de parseo LR y algunas clarificaciones
Clasificacin de gramticas
Lenguajes LR
Eliminando Ambiguedad
Manejo de errores y recuperacin de errores
Oscar Bonilla
81
Universidad Galileo
Manejo de Errores
Los programas no siempre son correctos!! El compilador tiene que:
Reportar clara y exactamente la presencia de errores Recuperarse de cada error lo suficientemete rpido para poder detectar errores subsiguientes Tratar de evitar mensajes falsos de error
Oscar Bonilla
82
Universidad Galileo
Tipos de Errores
Lxicos Sintcticos Semnticos Lgicos
Oscar Bonilla
83
Universidad Galileo
Errores Lxicos
Un error que produce un token erroneo Errores lxicos posibles
Un identificador, palabra reservada u operador mal escrito (typo)
Oscar Bonilla
84
Universidad Galileo
Errores Sintcticos
Un programa que no satisface la CFG del lenguaje Ejemplos
Expresin aritmtica con parntesis no balanceados Un punto y coma faltante
Oscar Bonilla
85
Universidad Galileo
Errores Semnticos
Un error que necesita informacin sensitiva al contexto para ser identificado Ejemplos
Un operador aplicado a un tipo incompatible de operando Accesar una variable no declarada
Oscar Bonilla
86
Universidad Galileo
Errores Lgicos
Errores en el modelo de ejecucin Ejemplos
Recursin infinita Accesar un arreglo fuera de los lmites Dereferenciar un null pointer
Oscar Bonilla
87
Universidad Galileo
Oscar Bonilla
88
Universidad Galileo
Oscar Bonilla
89
Universidad Galileo
Descartamos tokens del buffer de entrada hasta que encontremos un token sincronizador
Un token que pertenece a follow(A) del no-terminal de pnico A que encontramos en el paso anterior
90
Universidad Galileo
s0
Oscar Bonilla
91
Universidad Galileo
s0
id
Oscar Bonilla
;
92
id
id
id
id
id
Universidad Galileo
s3 s0
id $
id
Oscar Bonilla
;
93
id
id
id
id
id
Universidad Galileo
s6 s0
<X> $
id
Oscar Bonilla
;
94
id
id
id
id
id
Universidad Galileo
s4 s6 s0
; <X> $
id
Oscar Bonilla
;
95
id
id
id
id
id
Universidad Galileo
s2 s0
<Y> $
id
Oscar Bonilla
;
96
id
id
id
id
id
Universidad Galileo
s3 s2 s0
id <E> $
id
Oscar Bonilla
;
97
id
id
id
id
id
Universidad Galileo
s6 s2 s0
<X> <E> $
id
Oscar Bonilla
;
98
id
id
id
id
id
Universidad Galileo
s3 s6 s2 s0
id <X> <E> $
id
Oscar Bonilla
;
99
id
id
id
id
id
Universidad Galileo
s6 s6 s2 s0
id
Oscar Bonilla
id
100
id
id
id
id
Universidad Galileo
PANIC
s6 s6 s2 s0 <X> <X> <E> $
id
Oscar Bonilla
id
101
id
id
id
id
Universidad Galileo
PANIC
s6 s6 s2 s0 <X> <X> <E> $
id
Oscar Bonilla
id
102
id
id
id
id
Universidad Galileo
s6 s6 s2 s0
PANIC
id
Oscar Bonilla
id
103
id
id
id
id
Universidad Galileo
PANIC
s2 s0 <E> $
id
Oscar Bonilla
id
104
id
id
id
id
Universidad Galileo
PANIC
s2 s0 <E> $
id
Oscar Bonilla
id
105
id
id
id
id
Universidad Galileo
PANIC
s2 s0 <E> $
id
Oscar Bonilla
id
106
id
id
id
id
Universidad Galileo
s2 s0
<E> $
id
Oscar Bonilla
id
107
id
id
id
id
Universidad Galileo
s3 s2 s0
id <E> $
id
Oscar Bonilla
id
108
id
id
id
id
Universidad Galileo
Ejemplo
Reemplazar una coma por un punto y coma
Oscar Bonilla
109
Universidad Galileo
s0
(
Oscar Bonilla
)
110
$
Universidad Galileo
s3 s2 s0
X ( $
(
Oscar Bonilla
)
111
$
Universidad Galileo
s3 s2 s0
X ( $
(
Oscar Bonilla
)
112
$
Universidad Galileo
s3 s2 s0
X ( $
(
Oscar Bonilla
)
113
$
Universidad Galileo
s3 s2 s0
X ( $
(
Oscar Bonilla
)
114
$
Universidad Galileo
s3 s2 s0
X ( $
(
Oscar Bonilla
)
115
$
Universidad Galileo
s4 s3 s2 s0
) X ( $
(
Oscar Bonilla
)
116
$
Universidad Galileo
Producciones de Error
Agregamos producciones especiales de la forma A error para manejar errores.
error se trata como un smbolo terminal especial
En error
Insertamos el terminal error como el primer token de entrada Pop del stack hasta que lleguemos a un estado E en el que se pueda hacer un goto para el terminal error El parser hace shift del terminal error, el estado actual es es F = goto(E, error) Descartamos los tokens del buffer de entrada hasta que encontremos un token para el que se pueda ejecutar una accin de parseo legal a partir del estado F
117 Universidad Galileo
Oscar Bonilla
Oscar Bonilla
118
Universidad Galileo
Oscar Bonilla
119
Universidad Galileo
s0
Oscar Bonilla
120
Universidad Galileo
s0
id
Oscar Bonilla
id
121
id
id
id
id
Universidad Galileo
s0
id
Oscar Bonilla
id
122
id
id
id
id
Universidad Galileo
s3 s0
id $
id
Oscar Bonilla
id
123
id
id
id
id
Universidad Galileo
s6 s0
<X> $
id
Oscar Bonilla
id
124
id
id
id
id
Universidad Galileo
s4 s6 s0
; <X> $
id
Oscar Bonilla
id
125
id
id
id
id
Universidad Galileo
s2 s0
<Y> $
id
Oscar Bonilla
id
126
id
id
id
id
Universidad Galileo
s3 s2 s0
id <E> $
id
Oscar Bonilla
id
127
id
id
id
id
Universidad Galileo
s6 s2 s0
<X> <E> $
id
Oscar Bonilla
id
128
id
id
id
id
Universidad Galileo
s6 s6 s2 s0
id
Oscar Bonilla
id
129
id
id
id
id
Universidad Galileo
Error
s6 s6 s2 s0 <X> <X> <E> $
id
Oscar Bonilla
id
130
id
id
id
id
Universidad Galileo
Error
s6 s6 s2 s0 <X> <X> <E> $
id
Oscar Bonilla
id
id
131
error
id
id
id
Universidad Galileo
s6 s6 s2 s0
Error
id
Oscar Bonilla
id
id
132
error
id
id
id
Universidad Galileo
Error
s2 s0 <E> $
id
Oscar Bonilla
id
id
133
error
id
id
id
Universidad Galileo
Error
s5 s2 s0 error <E> $
id
Oscar Bonilla
id
id
134
error
id
id
id
Universidad Galileo
Error
s5 s2 s0 error <E> $
id
Oscar Bonilla
id
id
135
error
id
id
id
Universidad Galileo
Error
s5 s2 s0 error <E> $
id
Oscar Bonilla
id
id
136
error
id
id
id
Universidad Galileo
s5 s2 s0
error <E> $
id
Oscar Bonilla
id
id
137
error
id
id
id
Universidad Galileo
s2 s0
<E> $
id
Oscar Bonilla
id
id
138
error
id
id
id
Universidad Galileo
s3 s2 s0
id <E> $
id
Oscar Bonilla
id
id
139
error
id
id
id
Universidad Galileo
Correccin Global
Tratamos de anticipar las acciones del programador Hacemos el programa legal elijiendo la mnima cantidad de cambios Muchos problemas
Costoso Los cambios pueden crear un programa semnticamente correcto, pero no el que el programador quera escribir!!!
Oscar Bonilla
140
Universidad Galileo
Lecturas
El Tigre
Chapter 5
La Ballena
3.1, 3.2, 3.3, 3.4
El Dragn
Chapter 6
Oscar Bonilla
141
Universidad Galileo