compiladores clasificación de gramáticas y manejo de errores
TRANSCRIPT
![Page 1: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/1.jpg)
Compiladores
Clasificación de Gramáticas y Manejo de Errores
![Page 2: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/2.jpg)
Oscar Bonilla 2 Universidad Galileo
Resumen
• Repaso de parseo LR y algunas clarificaciones
• Clasificación de gramáticas
• Lenguajes LR
• Eliminando Ambiguedad
• Manejo de errores y recuperación de errores
![Page 3: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/3.jpg)
Oscar Bonilla 3 Universidad Galileo
LR(0) y LR(1), ¿donde está el look ahead?
• Tanto LR(0) como LR(1) tienen el mismo engine de ejecución, la diferencia está en la construcción de la tabla de parseo– Entonces, ¿dónde está el look ahead?
![Page 4: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/4.jpg)
Oscar Bonilla 4 Universidad Galileo
LR(0) y LR(1), ¿donde está el look ahead?
• Shift sn– ve el símbolo de entrada,
– ya sea lo consume o termina de parsear (accept o error) no es un look ahead
• Goto sn– sólo ve el stack
• Reduce n– LR(0) misma reducción para todos los inputs no look ahead
– LR(1) necesitamos el símbolo de entrada un look ahead
![Page 5: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/5.jpg)
Oscar Bonilla 5 Universidad Galileo
ACTION GotoState ( ) $ X Ys0 shift to s1 reduce (5) reduce (5) goto s5 goto s6s1 shift to s2 reduce (5) reduce (5) goto s3s2 shift to s2 reduce (5) reduce (5) goto s3s3 error shift to s4 error s4 error reduce (4) reduce (4) s5 error error accept s6 error error reduce (2)
SL
(1)
LR
(0)
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s3s3 error shift to s4 error s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
![Page 6: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/6.jpg)
Oscar Bonilla 6 Universidad Galileo
Algunas Definiciones
• ¿Qué es una gramática XY(k)?(X, Y {L, R})
• Una gramática G es una gramática XY(k) si y sólo si podemos crear una tabla de parseo XY(k) sin ningún conflicto shift/reduce o reduce/reduce
![Page 7: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/7.jpg)
Oscar Bonilla 7 Universidad Galileo
Construcción de un Parse Engine LR(0)
• Agregamos la producción especial S’ S $
• Encontramos los ítems de la CFG
• Creamos el DFA– Comenzamos con el ítem S’ • S $
– Usando las funciones closure y goto
• Construimos la tabla de parseo
LR(0)ParserEngine
![Page 8: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/8.jpg)
Oscar Bonilla 8 Universidad Galileo
Construcción de un parse engine SLR(1)
• Agregamos la producción especial S’ S $• Calcular el conjunto follow para todos los no-
terminales• Encontrar los ítems LR(0) de la CFG• Crear el DFA
– Comenzamos con el ítem S’ • S $
– Usando las funciones closure y goto
• Construir la tabla de parseo– Usando el DFA y la información del conjunto
follow
SLRParserEngine
![Page 9: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/9.jpg)
Oscar Bonilla 9 Universidad Galileo
Construcción de un parse engine LR(1)
• Agregamos la producción especial S’ S $
• Encontramos los ítems LR(1) de la CFG
• Creamos el DFA– Comenzamos con el ítem [S’ • S $, ?]– Usamos las funciones closure y goto
• Construimos la tabla de parseo
LR(1)ParserEngine
![Page 10: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/10.jpg)
Oscar Bonilla 10 Universidad Galileo
Resumen
• Repaso de parseo LR y algunas clarificaciones
• Clasificación de gramáticas
• Lenguajes LR
• Eliminando Ambiguedad
• Manejo de errores y recuperación de errores
![Page 11: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/11.jpg)
Oscar Bonilla 11 Universidad Galileo
Clasificación de Gramáticas
Context free
![Page 12: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/12.jpg)
Oscar Bonilla 12 Universidad Galileo
Clasificación de Gramáticas
regular
Context free
G0
![Page 13: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/13.jpg)
Oscar Bonilla 13 Universidad Galileo
Gramáticas Regulares• Una gramática que puede ser expresada usando
una expresión regular es una gramática regular• Lenguaje Ejemplo:
– Cero o más paréntesis abiertos seguidos de cero o más paréntesis cerrados
• G0 = { (a )b
| a, b >= 0 }• Gramática
S X Y $X ( X | Y ) Y |
![Page 14: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/14.jpg)
Oscar Bonilla 14 Universidad Galileo
Clasificación de Gramáticas
regular
LR(0)
Context free
G0 G1
![Page 15: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/15.jpg)
Oscar Bonilla 15 Universidad Galileo
Gramáticas LR(0)
• Una gramática que puede crear una tabla de parseo LR(0) sin ningún conflicto shift/reduce o reduce/reduce
• Lenguaje Ejemplo:– Uno o más paréntesis abiertos seguidos de un número
igual de paréntesis cerrados
• G1 = { (n )n
| n > 0 }• La gramática
<S> <X> $<X> ( <X> ) | ( )
![Page 16: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/16.jpg)
Oscar Bonilla 16 Universidad Galileo
Clasificación de Gramáticas
regular
LR(0)SLR(1)
Context free
G0 G1 G2
![Page 17: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/17.jpg)
Oscar Bonilla 17 Universidad Galileo
Gramáticas SLR(1)
• Una gramática que puede crear una tabla de parseo SLR(1) sin ningún conflicto shift/reduce o reduce/reduce
• Lenguaje Ejemplo:– Cero o más paréntesis abiertos seguidos de un número
igual de paréntesis cerrados
• G2 = { (n )n
| n >= 0 }• La gramática
<S> <X> $<X> ( <X> ) |
![Page 18: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/18.jpg)
Oscar Bonilla 18 Universidad Galileo
Clasificación de Gramáticas
regular
LR(0)SLR(1)
LALR(1)
Context free
G0 G1 G2 G3
![Page 19: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/19.jpg)
Oscar Bonilla 19 Universidad Galileo
Gramáticas LALR(1)
• Una gramática que puede crear una tabla de parseo LALR(1) sin ningún conflicto shift/reduce o reduce/reduce
• Lenguaje Ejemplo:– ???
• G3 = { ??? }
• La gramática
![Page 20: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/20.jpg)
Oscar Bonilla 20 Universidad Galileo
Clasificación de Gramáticas
regular
LR(0)SLR(1)
LALR(1)LR(1)
Context free
G0 G1 G2 G3 G4
![Page 21: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/21.jpg)
Oscar Bonilla 21 Universidad Galileo
Gramáticas LR(1)
• Una gramática que puede crear una tabla de parseo LR(1) sin ningún conflicto shift/reduce o reduce/reduce
• Lenguaje Ejemplo:– Cero o más paréntesis abiertos seguidos de un número igual de
paréntesis cerrados o un solo paréntesis abierto
• G4 = { (n )n
| n >= 0 } { ( }
• La gramática<S> <X> $
<X> ( | <Y>
<Y> ( <Y> ) |
![Page 22: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/22.jpg)
Oscar Bonilla 22 Universidad Galileo
Clasificación de Gramáticas
regular
LR(0)SLR(1)
LALR(1)LR(1)LR(k)
Context free
G0 G1 G2 G3 G4 G5
![Page 23: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/23.jpg)
Oscar Bonilla 23 Universidad Galileo
Gramáticas LR(k)• Una gramática que puede crear una tabla de parseo LR(k)
sin ningún conflicto shift/reduce o reduce/reduce• Lenguaje Ejemplo:
– Cero o más paréntesis abiertos seguidos de un número igual de paréntesis cerrados o un número igual de corchetes cerrados
• G5 = { (n )n
| n >= 0 } { (n ]n
| n >= 0 }
• La gramática<S> <X> $
<X> <Y> | <Z>
<Y> ( <Y> ) | <Z> ( <Z> ] |
![Page 24: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/24.jpg)
Oscar Bonilla 24 Universidad Galileo
Clasificación de Gramáticas
regular
LR(0)SLR(1)
LALR(1)LR(1)LR(k)
unambiguousContext free
G0 G1 G2 G3 G4 G5 G6
![Page 25: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/25.jpg)
Oscar Bonilla 25 Universidad Galileo
Gramáticas no Ambiguas• Una gramática es no ambigua sí y sólo sí tiene una
secuencia de derivación derecha (rightmost) única (parse tree)
• Ejemplo:
• G6 = { [(n )n
| n >= 0 } { ](n )2n
| n >= 0 }
• La gramática<S> <X> $<X> [ <Y> | ] <Z><Y> ( <Y> ) | <Z> ( <Z> ))|
![Page 26: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/26.jpg)
Oscar Bonilla 26 Universidad Galileo
Clasificación de Gramáticas
regular
LR(0)SLR(1)
LALR(1)LR(1)LR(k)
unambiguousContext free
G0 G1 G2 G3 G4 G5 G6 G7
![Page 27: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/27.jpg)
Oscar Bonilla 27 Universidad Galileo
Gramáticas Ambiguas• Una gramática es ambigua sí y sólo sí tiene más de
una secuencia de derivación por la derecha• Ejemplo:
• G7 = { (i )j
(k | i = j or j = k }
• La gramática<S> <X> $<X> <P> <Q> | <R> <S><P> ( <P> ) | <Q> ( <Q> | <R> ( <R> | <S> ) <S> ( |
![Page 28: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/28.jpg)
Oscar Bonilla 28 Universidad Galileo
G0
Clasificación de Gramáticas
regular
LR(0)SLR(1)
LALR(1)LR(1)LR(k)
unambiguousContext free
G1 G2 G3 G4 G5 G6 G7
![Page 29: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/29.jpg)
Oscar Bonilla 29 Universidad Galileo
G0
Clasificación de Gramáticas
regular
LR(0)SLR(1)
LALR(1)LR(1)LR(k)
unambiguousContext free
G1 G2 G3 G4 G5 G6 G7
LL(0)
![Page 30: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/30.jpg)
Oscar Bonilla 30 Universidad Galileo
G0
Clasificación de Gramáticas
regular
LR(0)SLR(1)
LALR(1)LR(1)LR(k)
unambiguousContext free
G1 G2 G3 G4 G5 G6 G7
LL(0)
LL(1)
![Page 31: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/31.jpg)
Oscar Bonilla 31 Universidad Galileo
Pregunta• ¿Qué hay acerca del lenguaje?
• G8 = { (i )j
(k | i = j = k }
![Page 32: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/32.jpg)
Oscar Bonilla 32 Universidad Galileo
Resumen
• Repaso de parseo LR y algunas clarificaciones
• Clasificación de gramáticas
• Lenguajes LR
• Eliminando Ambiguedad
• Manejo de errores y recuperación de errores
![Page 33: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/33.jpg)
Oscar Bonilla 33 Universidad Galileo
Lenguajes LR
• Un lenguaje libre de contexto es un lenguaje LR sí y sólo sí puede ser generado por una gramática LR(k) para algún k
![Page 34: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/34.jpg)
Oscar Bonilla 34 Universidad Galileo
Lenguajes LR
• El conjunto de lenguajes LR es independiente de la distancia de lookahead k
• Dada cualquier gramática LR(k) Gk, existe una gramática LR(0) G0 tal que L(Gk) = L(G0)
• Para todos los lenguajes que vimos con gramáticas SLR(1), LALR(1) y LR(1), ¡¡¡podríamos haber encontrado una gramática LR(0)!!!
![Page 35: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/35.jpg)
Oscar Bonilla 35 Universidad Galileo
EjemploLenguaje
Cero o más paréntesis abiertos seguidos de un número igual de paréntesis cerradoso un solo paréntesis abierto
Gramática LR(1)<S> <X> $ <X> <Y> <X> ( <Y> ( <Y> ) <Y>
¿Hay alguna gramática LR(0) para este lenguaje?
![Page 36: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/36.jpg)
Oscar Bonilla 36 Universidad Galileo
<S> • <X> $<X> • Y<X> • ( <Y> • ( <Y> )<Y> •
s0
Y
<S> <X> • $s5
(Y
s4<Y> ( <Y> ) •
)<Y> ( <Y> • )s3
<X> ( •<Y> ( • <Y> ) <Y> • ( <Y> )<Y> •
s1
(<Y> ( • <Y> ) <Y> • ( <Y> )<Y> •
s2(
<X> <Y> •s6
X
Y
Ejemplo Expandido DFA
<S> <X> $<X> <Y>
<X> ( <Y> ( <Y> )
<Y>
26
![Page 37: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/37.jpg)
Oscar Bonilla 37 Universidad Galileo
<S> • <X> $<X> • Y<X> • ( <Y> • ( <Y> )<Y> •
s0
Y
<S> <X> • $s5
(Y
s4<Y> ( <Y> ) •
)<Y> ( <Y> • )s3
<X> ( •<Y> ( • <Y> ) <Y> • ( <Y> )<Y> •
s1
(<Y> ( • <Y> ) <Y> • ( <Y> )<Y> •
s2(
<X> <Y> •s6
X
Y
Ejemplo Expandido DFA
<S> <X> $<X> <Y>
<X> ( <Y> ( <Y> )
<Y>
26
![Page 38: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/38.jpg)
Oscar Bonilla 38 Universidad Galileo
LenguajeCero o más paréntesis abiertos seguidos de un número igual de paréntesis cerradoso un solo paréntesis abierto
Gramática LR(1)<S> <X> $ <X> <Y> <X> ( <Y> ( <Y> ) <Y>
Ejemplo
Gramática LR(0)<S> <X> $
<X> <Y><X> ( <Z><X> <Z> <Y> ( <Y> )<Y> <Z> <Z>
![Page 39: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/39.jpg)
Oscar Bonilla 39 Universidad Galileo
<S> • <X> $<X> • <Y><X> • ( <Z><X> • <Z><Y> • ( <Y> )<Y> • <Z>
s0
<S> <X> • $s5
( Y
s4<Y> ( <Y> ) •
)<Y> ( <Y> • )s3
<Y> ( • <Y> )<X> ( • <Z><Y> • ( <Y> )<Y> • <Z>
s1
(<Y> ( • <Y> )<Y> • ( <Y> )<Y> • <Z>
s2
(
X
Y
DFA del Ejemplo<S> <X> $ <X> <Y> <X> ( <Z><X> <Z> <Y> ( <Y> ) <Y> <Z><Z>
Y
<X> <Y> •s6
<Z> •s7
ZZ
Z
![Page 40: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/40.jpg)
Oscar Bonilla 40 Universidad Galileo
<S> • <X> $<X> • <Y><X> • ( <Z><X> • <Z><Y> • ( <Y> )<Y> • <Z>
s0
<S> <X> • $s5
( Y
s4<Y> ( <Y> ) •
)<Y> ( <Y> • )s3
<Y> ( • <Y> )<X> ( • <Z><Y> • ( <Y> )<Y> • <Z>
s1
(<Y> ( • <Y> )<Y> • ( <Y> )<Y> • <Z>
s2
(
X
Y
DFA del Ejemplo<S> <X> $ <X> <Y> <X> ( <Z><X> <Z> <Y> ( <Y> ) <Y> <Z><Z>
Y
<X> <Y> •s6
<Z> •s7
ZZ
Z
![Page 41: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/41.jpg)
Oscar Bonilla 41 Universidad Galileo
Lenguajes LR
• El conjunto de lenguajes LR es independiente de la distancia de lookahead k
• Dada cualquier gramática LR(k) Gk, existe una gramática LR(0) G0 tal que L(Gk) = L(G0)
• Para todos los lenguajes que vimos con gramáticas SLR(1), LALR(1) y LR(1), ¡¡¡podríamos haber encontrado una gramática LR(0)!!!
• ¡¡¡Pero esto puede ser muy difícil!!!
![Page 42: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/42.jpg)
Oscar Bonilla 42 Universidad Galileo
Resumen
• Repaso de parseo LR y algunas clarificaciones
• Clasificación de gramáticas
• Lenguajes LR
• Eliminando Ambiguedad
• Manejo de errores y recuperación de errores
![Page 43: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/43.jpg)
Oscar Bonilla 43 Universidad Galileo
Lenguajes Ambiguos
• Un lenguaje libre de contexto es inherentemente ambiguo si toda gramática que genera el lenguaje es ambigua
• Sin embargo, la mayoría de gramáticas ambiguas encontradas en la práctica son para lenguajes no ambiguos– Queremos hacerlas no ambiguas
![Page 44: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/44.jpg)
Oscar Bonilla 44 Universidad Galileo
Gramáticas Ambiguas
• Si tenemos una gramática ambigua para un lenguaje no ambiguo, podemos:– Escribir una gramática no ambigua– Usar precedencia y asociatividad para resolver los
conflictos en las acciones del parser
![Page 45: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/45.jpg)
Oscar Bonilla 45 Universidad Galileo
Ejemplo
<E> <E> + <E> | <E> * <E> | ( <E> ) | id
![Page 46: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/46.jpg)
Oscar Bonilla 46 Universidad Galileo
Ejemplo
<E> <E> + <E> | <E> * <E> | ( <E> ) | id
• Escribiendo una gramática no ambigua
![Page 47: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/47.jpg)
Oscar Bonilla 47 Universidad Galileo
Ejemplo
<E> <E> + <E> | <E> * <E> | ( <E> ) | id
• Escribiendo una gramática no ambigua<E> <E> + <T> | <T>
<T> <T> * <F> | <F>
<F> ( <E> ) | id
![Page 48: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/48.jpg)
Oscar Bonilla 48 Universidad Galileo
<S> <E> $
<E> <E> + <E> | <E> * <E> | ( <E> ) | id
![Page 49: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/49.jpg)
Oscar Bonilla 49 Universidad Galileo
<S> <E> $
<E> <E> + <E> | <E> * <E> | ( <E> ) | id
<S> • <E><E> • <E> + <E><E> • <E> * <E><E> • ( <E> )<E> • id
s0
<S> <E> • <E> <E> • + <E><E> <E> • * <E>
s1
<S> ( • <E> )<E> • <E> + <E><E> • <E> * <E><E> • ( <E> )<E> • id
s2
<E> id •
s3
<S> <E> + • <E><E> • <E> + <E><E> • <E> * <E><E> • ( <E> )<E> • id
s4<S> <E> * • <E><E> • <E> + <E><E> • <E> * <E><E> • ( <E> )<E> • id
s5
<E> <E> • + <E><E> <E> • * <E><E> ( <E> •)
s6
<S> <E> * <E> •<E> <E> • + <E><E> <E> • * <E>
s8
<E> <E> + <E> •<E> <E> • + <E><E> <E> • * <E>
s7
<E> ( <E> ) •
s9
![Page 50: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/50.jpg)
Oscar Bonilla 50 Universidad Galileo
s0 $
*id + id id
![Page 51: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/51.jpg)
Oscar Bonilla 51 Universidad Galileo
s1s4s7
<E>+
<E>
s0 $
*id + id id
![Page 52: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/52.jpg)
Oscar Bonilla 52 Universidad Galileo
s1s4s7
<E>+
<E>
s0 $
*id + id id
<E> <E> + <E> •<E> <E> • + <E><E> <E> • * <E>
s7
Shift or reduce
![Page 53: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/53.jpg)
Oscar Bonilla 53 Universidad Galileo
Usando Precedencia y Asociatividad
• Construimos el DFA y construimos la tabla de parseo
• Cuando hay un conflicto usamos la información de precedencia y asociatividad
![Page 54: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/54.jpg)
Oscar Bonilla 54 Universidad Galileo
Otro Ejemplo
<stmt> if <expr> then <stmt> else <stmt><stmt> if <expr> then <stmt> <stmt> other
![Page 55: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/55.jpg)
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 …
![Page 56: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/56.jpg)
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 …
![Page 57: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/57.jpg)
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 …
![Page 58: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/58.jpg)
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 …
![Page 59: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/59.jpg)
Oscar Bonilla 59 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 …
Asociatividad izquierda, ¡esto es lo que queremos!
![Page 60: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/60.jpg)
Oscar Bonilla 60 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>
![Page 61: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/61.jpg)
Oscar Bonilla 61 Universidad Galileo
<S> <E> $<E> i <E> o <E> | i <E> | <A>
<S> • <E><E> • i <E> o <E><E> • <I> <E><E> • <A>
s0
<E> i • <E> o <E><E> i • <E><E> • i <E> o <E><E> • i <E><E> • <A>
s1
<S> <E> •
s2
<S> <A> •
s3
<E> i <E> • o <E><E> i <E> •
s4 <E> i <E> o • <E><E> • i <E> o <E><E> • i <E><E> • <A>
s5
<E> i <E> o <E> •
s6
E
A
i i
A
i
A
E
o
E
![Page 62: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/62.jpg)
Oscar Bonilla 62 Universidad Galileo
<S> <E> $<E> i <E> o <E> | i <E> | <A>
<S> • <E><E> • i <E> o <E><E> • <I> <E><E> • <A>
s0
<E> i • <E> o <E><E> i • <E><E> • i <E> o <E><E> • i <E><E> • <A>
s1
<S> <E> •
s2
<S> <A> •
s3
<E> i <E> • o <E><E> i <E> •
s4 <E> i <E> o • <E><E> • i <E> o <E><E> • i <E><E> • <A>
s5
<E> i <E> o <E> •
s6
E
A
i i
A
i
A
E
o
E
![Page 63: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/63.jpg)
Oscar Bonilla 63 Universidad Galileo
<S> <E> $<E> i <E> o <E> | i <E> | <A>
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s3s6 reduce reduce reduce
![Page 64: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/64.jpg)
Oscar Bonilla 64 Universidad Galileo
<S> <E> $<E> i <E> o <E> | i <E> | <A>
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
Follow(<E>) = { i, o, $ }
![Page 65: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/65.jpg)
Oscar Bonilla 65 Universidad Galileo
s0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 66: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/66.jpg)
Oscar Bonilla 66 Universidad Galileo
s1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 67: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/67.jpg)
Oscar Bonilla 67 Universidad Galileo
s1 is1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 68: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/68.jpg)
Oscar Bonilla 68 Universidad Galileo
s3 As1 is1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 69: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/69.jpg)
Oscar Bonilla 69 Universidad Galileo
Es1 is1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 70: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/70.jpg)
Oscar Bonilla 70 Universidad Galileo
s4 Es1 is1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 71: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/71.jpg)
Oscar Bonilla 71 Universidad Galileo
s4 Es1 is1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 72: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/72.jpg)
Oscar Bonilla 72 Universidad Galileo
s4 Es1 is1 is0 $
oi i a a
Como asocia por la izquierda, hacemos el shift
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 73: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/73.jpg)
Oscar Bonilla 73 Universidad Galileo
s5 os4 Es1 is1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 74: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/74.jpg)
Oscar Bonilla 74 Universidad Galileo
s3 As5 os4 Es1 is1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 75: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/75.jpg)
Oscar Bonilla 75 Universidad Galileo
Es5 os4 Es1 is1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 76: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/76.jpg)
Oscar Bonilla 76 Universidad Galileo
s6 Es5 os4 Es1 is1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 77: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/77.jpg)
Oscar Bonilla 77 Universidad Galileo
Es1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 78: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/78.jpg)
Oscar Bonilla 78 Universidad Galileo
s4 Es1 is0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 79: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/79.jpg)
Oscar Bonilla 79 Universidad Galileo
Es0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 80: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/80.jpg)
Oscar Bonilla 80 Universidad Galileo
s3 Es0 $
oi i a a
ACTION GotoState i o $ E As0 shift to s1 error error goto s2 goto s3s1 shift to s2 error error goto s4 goto s3s2 error error accept s3 reduce reduce reduce s4 reduce shift to s5/reducereduce s5 error shift to s6 error goto s6 goto s3s6 reduce reduce reduce
![Page 81: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/81.jpg)
Oscar Bonilla 81 Universidad Galileo
Resumen
• Repaso de parseo LR y algunas clarificaciones
• Clasificación de gramáticas
• Lenguajes LR
• Eliminando Ambiguedad
• Manejo de errores y recuperación de errores
![Page 82: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/82.jpg)
Oscar Bonilla 82 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 rápido
para poder detectar errores subsiguientes– Tratar de evitar mensajes falsos de error
![Page 83: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/83.jpg)
Oscar Bonilla 83 Universidad Galileo
Tipos de Errores
• Léxicos
• Sintácticos
• Semánticos
• Lógicos
![Page 84: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/84.jpg)
Oscar Bonilla 84 Universidad Galileo
Errores Léxicos
• Un error que produce un token erroneo
• Errores léxicos posibles– Un identificador, palabra reservada u operador mal
escrito (typo)
![Page 85: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/85.jpg)
Oscar Bonilla 85 Universidad Galileo
Errores Sintácticos
• Un programa que no satisface la CFG del lenguaje
• Ejemplos– Expresión aritmética con paréntesis no balanceados– Un punto y coma faltante
![Page 86: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/86.jpg)
Oscar Bonilla 86 Universidad Galileo
Errores Semánticos
• Un error que necesita información sensitiva al contexto para ser identificado
• Ejemplos– Un operador aplicado a un tipo incompatible de
operando– Accesar una variable no declarada
![Page 87: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/87.jpg)
Oscar Bonilla 87 Universidad Galileo
Errores Lógicos
• Errores en el modelo de ejecución
• Ejemplos– Recursión infinita– Accesar un arreglo fuera de los límites– Dereferenciar un null pointer
![Page 88: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/88.jpg)
Oscar Bonilla 88 Universidad Galileo
Tipos de recuperación de errores de sintáxis
• Panic mode recovery
• Parse level recovery
• Producciones de error
• Corrección global
![Page 89: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/89.jpg)
Oscar Bonilla 89 Universidad Galileo
Panic mode recovery
• Al descubrir un error – pop cero o más estados/símbolos del stack– descartar cero o más símbolos de entrada– hasta que lleguemos a un punto donde podemos
continuar parseando
• Usamos no-terminales definidos para el panic– Ejemplo: cerrar llave, punto y coma
![Page 90: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/90.jpg)
Oscar Bonilla 90 Universidad Galileo
Panic mode recovery
• En error – pop del stack hasta que lleguemos a un estado X de
donde se pueda hacer un goto para alguno de los no-terminales de pánico
• Se termina el parseo si no se encuentra ninguno
– Descartamos tokens del buffer de entrada hasta que encontremos un token sincronizador
• Un token que pertenece a follow(A) del no-terminal de pánico A que encontramos en el paso anterior
– Push de A y del estado goto(S,A) en los stacks y seguimos parseando
![Page 91: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/91.jpg)
Oscar Bonilla 91 Universidad Galileo
s0 $
Ejemplo de panic mode error recoveryGramática:
<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 92: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/92.jpg)
Oscar Bonilla 92 Universidad Galileo
s0 $
idid id ; =
Ejemplo de panic mode error recovery
idid ; id
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 93: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/93.jpg)
Oscar Bonilla 93 Universidad Galileo
s3 ids0 $
id id
Ejemplo de panic mode error recovery
id ; id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 94: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/94.jpg)
Oscar Bonilla 94 Universidad Galileo
s6 <X>s0 $
id id
Ejemplo de panic mode error recovery
id ; id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 95: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/95.jpg)
Oscar Bonilla 95 Universidad Galileo
s6 <X>s4 ;
s0 $
id id
Ejemplo de panic mode error recovery
id ; id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 96: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/96.jpg)
Oscar Bonilla 96 Universidad Galileo
s2 <Y>s0 $
id id
Ejemplo de panic mode error recovery
id ; id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 97: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/97.jpg)
Oscar Bonilla 97 Universidad Galileo
s3 ids2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ; id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 98: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/98.jpg)
Oscar Bonilla 98 Universidad Galileo
s6 <X>s2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ; id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 99: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/99.jpg)
Oscar Bonilla 99 Universidad Galileo
s3 ids6 <X>s2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ; id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 100: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/100.jpg)
Oscar Bonilla 100 Universidad Galileo
s6 <X>s6 <X>s2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ; id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 101: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/101.jpg)
Oscar Bonilla 101 Universidad Galileo
s6 <X>s6 <X>s2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ;
PANIC
id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 102: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/102.jpg)
Oscar Bonilla 102 Universidad Galileo
s6 <X>s6 <X>s2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ;
PANICno-terminales de pánico = { <E> ... }follow(<E>) = { ; }
id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 103: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/103.jpg)
Oscar Bonilla 103 Universidad Galileo
s2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ;
PANIC
id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
s6 <X>s6 <X>
no-terminales de pánico = { <E> ... }follow(<E>) = { ; }
![Page 104: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/104.jpg)
Oscar Bonilla 104 Universidad Galileo
s2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ;
PANIC
id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
no-terminales de pánico = { <E> ... }follow(<E>) = { ; }
![Page 105: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/105.jpg)
Oscar Bonilla 105 Universidad Galileo
s2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ;
PANIC
id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
no-terminales de pánico = { <E> ... }follow(<E>) = { ; }
![Page 106: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/106.jpg)
Oscar Bonilla 106 Universidad Galileo
s2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ;
PANIC
id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
no-terminales de pánico = { <E> ... }follow(<E>) = { ; }
![Page 107: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/107.jpg)
Oscar Bonilla 107 Universidad Galileo
s2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ; id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 108: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/108.jpg)
Oscar Bonilla 108 Universidad Galileo
s3 ids2 <E>s0 $
id id
Ejemplo de panic mode error recovery
id ; id; = idid
Gramática :<S> <E> $<E> <X> ; <E> | <X> <X> id | <X> = <X>
![Page 109: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/109.jpg)
Oscar Bonilla 109 Universidad Galileo
Parse Level Error Recovery
• En error – invocamos una rutina especial para cambiar el
prefijo de los tokens de entrada que quedan– y continuamos el parseo
• Ejemplo– Reemplazar una coma por un punto y coma
![Page 110: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/110.jpg)
Oscar Bonilla 110 Universidad Galileo
Ejemplo de parser level error recovery
• Action Table
s0 $
(( ( )
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s3s3 error shift to s4 error s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
$
![Page 111: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/111.jpg)
Oscar Bonilla 111 Universidad Galileo
s3 Xs2 (
Ejemplo de parser level error recovery
• Action Table
s0 $
(( ( )
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s3s3 error shift to s4 error s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
$
![Page 112: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/112.jpg)
Oscar Bonilla 112 Universidad Galileo
s3 Xs2 (
Ejemplo de parser level error recovery
• Action Table
s0 $
(( ( )
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s3s3 error shift to s4 error s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
$
![Page 113: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/113.jpg)
Oscar Bonilla 113 Universidad Galileo
s3 Xs2 (
Ejemplo de parser level error recovery
• Action Table
s0 $
(( ( )
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s3s3 error shift to s4 error s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
$
Invocamos rutina de recuperación de error
![Page 114: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/114.jpg)
Oscar Bonilla 114 Universidad Galileo
s3 Xs2 (
Ejemplo de parser level error recovery
• Action Table
s0 $
)( ( )
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s3s3 error shift to s4 error s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
$
Invocamos rutina de recuperación de error
![Page 115: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/115.jpg)
Oscar Bonilla 115 Universidad Galileo
s3 Xs2 (
Ejemplo de parser level error recovery
• Action Table
s0 $
)( ( )
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s3s3 error shift to s4 error s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
$
![Page 116: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/116.jpg)
Oscar Bonilla 116 Universidad Galileo
s4 )s3 Xs2 (
Ejemplo de parser level error recovery
• Action Table
s0 $
)( ( )
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s3s3 error shift to s4 error s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
$
![Page 117: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/117.jpg)
Oscar Bonilla 117 Universidad Galileo
Producciones de Error
• Agregamos producciones especiales de la forma A error para manejar errores.– error se trata como un símbolo 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 acción de parseo legal a partir del estado F
![Page 118: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/118.jpg)
Oscar Bonilla 118 Universidad Galileo
Ejemplo de Producciones de Error
• Gramática<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X>
![Page 119: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/119.jpg)
Oscar Bonilla 119 Universidad Galileo
Ejemplo de Producciones de Error
• Gramática<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
![Page 120: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/120.jpg)
Oscar Bonilla 120 Universidad Galileo
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
s0 $
![Page 121: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/121.jpg)
Oscar Bonilla 121 Universidad Galileo
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
s0 $
idid id ; = idid ; id
![Page 122: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/122.jpg)
Oscar Bonilla 122 Universidad Galileo
s0 $
idid id ; = idid ; id
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
![Page 123: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/123.jpg)
Oscar Bonilla 123 Universidad Galileo
s3 ids0 $
id idid ; id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
![Page 124: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/124.jpg)
Oscar Bonilla 124 Universidad Galileo
s6 <X>s0 $
id idid ; id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
![Page 125: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/125.jpg)
Oscar Bonilla 125 Universidad Galileo
s6 <X>s4 ;
s0 $
id idid ; id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
![Page 126: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/126.jpg)
Oscar Bonilla 126 Universidad Galileo
s2 <Y>s0 $
id idid ; id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
![Page 127: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/127.jpg)
Oscar Bonilla 127 Universidad Galileo
s3 ids2 <E>s0 $
id idid ; id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
![Page 128: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/128.jpg)
Oscar Bonilla 128 Universidad Galileo
s6 <X>s2 <E>s0 $
id idid ; id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
![Page 129: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/129.jpg)
Oscar Bonilla 129 Universidad Galileo
s6 <X>s6 <X>s2 <E>s0 $
id idid ; id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
![Page 130: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/130.jpg)
Oscar Bonilla 130 Universidad Galileo
s6 <X>s6 <X>s2 <E>s0 $
id idid ;
Error
id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
![Page 131: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/131.jpg)
Oscar Bonilla 131 Universidad Galileo
s6 <X>s6 <X>s2 <E>s0 $
id idid ;
Error
id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
error
![Page 132: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/132.jpg)
Oscar Bonilla 132 Universidad Galileo
s2 <E>s0 $
id idid ;
Error
id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
error
s6 <X>s6 <X>
![Page 133: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/133.jpg)
Oscar Bonilla 133 Universidad Galileo
s2 <E>s0 $
id idid ;
Error
id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
error
![Page 134: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/134.jpg)
Oscar Bonilla 134 Universidad Galileo
s5 errors2 <E>s0 $
id idid ;
Error
id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
error
![Page 135: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/135.jpg)
Oscar Bonilla 135 Universidad Galileo
s5 errors2 <E>s0 $
id idid ;
Error
id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
error
![Page 136: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/136.jpg)
Oscar Bonilla 136 Universidad Galileo
s5 errors2 <E>s0 $
id idid ;
Error
id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
error
![Page 137: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/137.jpg)
Oscar Bonilla 137 Universidad Galileo
s5 errors2 <E>s0 $
id idid ; id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
error
![Page 138: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/138.jpg)
Oscar Bonilla 138 Universidad Galileo
s2 <E>s0 $
id idid ; id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
error
![Page 139: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/139.jpg)
Oscar Bonilla 139 Universidad Galileo
s3 ids2 <E>s0 $
id idid ; id; = idid
Ejemplo de Producciones de Error• Gramática
<S> <E> $
<E> <X> ; <E> | <X>
<X> id | <X> = <X> | error
error
![Page 140: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/140.jpg)
Oscar Bonilla 140 Universidad Galileo
Corrección Global
• Tratamos de anticipar las acciones del programador
• Hacemos el programa legal elijiendo la mínima cantidad de cambios
• Muchos problemas– Costoso– Los cambios pueden crear un programa
semánticamente correcto, ¡¡¡pero no el que el programador quería escribir!!!
![Page 141: Compiladores Clasificación de Gramáticas y Manejo de Errores](https://reader033.vdocumento.com/reader033/viewer/2022051001/5665b4551a28abb57c909f18/html5/thumbnails/141.jpg)
Oscar Bonilla 141 Universidad Galileo
Lecturas
• El Tigre– Chapter 5
• La Ballena– 3.1, 3.2, 3.3, 3.4
• El Dragón– Chapter 6