Implementación de una metodología de reparación de errores ...csaavedra/documents/... ·...

68
Implementación de una metodología de reparación de errores sintácticos para el generador de analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería Universidad de Talca Curicó – Chile 27 de marzo de 2008 Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 1 / 46

Transcript of Implementación de una metodología de reparación de errores ...csaavedra/documents/... ·...

Page 1: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Implementación de una metodología de reparaciónde errores sintácticos para el generador de

analizadores sintácticos GNU BisonMemoria de Título

Claudio Saavedra

Facultad de IngenieríaUniversidad de Talca

Curicó – Chile

27 de marzo de 2008

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 1 / 46

Page 2: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 2 / 46

Page 3: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 3 / 46

Page 4: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 4 / 46

Page 5: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Contexto

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 5 / 46

Page 6: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Contexto

Análisis sintácticoVisión general

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 6 / 46

Page 7: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Contexto

Análisis sintácticoVisión general

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 6 / 46

Page 8: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Contexto

Análisis sintácticoVisión general

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 6 / 46

Page 9: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Contexto

Análisis sintácticoVisión general

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 6 / 46

Page 10: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Contexto

Análisis sintácticoVisión general

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 6 / 46

Page 11: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Contexto

Análisis sintácticoVisión general

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 6 / 46

Page 12: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Contexto

Análisis sintácticoVisión general

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 6 / 46

Page 13: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Motivación

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 7 / 46

Page 14: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Motivación

Errores sintácticos

Un error sintáctico se produce cuando se detecta una construcciónque no pertenece al lenguaje

Ejemplox * (/ 12 - x) no es una expresión algebraica válida

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 8 / 46

Page 15: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Motivación

¿Qué hacer ante la presencia de un error?Tratamiento de errores sintácticos

Diagnóstico: Informar al usuario sobre la presencia del errorRecuperación: Intentar continuar el análisis para detectar otros

erroresReparación: Idealmente, corregir el error automáticamente

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 9 / 46

Page 16: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Motivación

Estado del arte en generadoresTratamiento de errores sintácticos

Software diagn. recup. repar.yacc

√ √×

Bison√ √

×ml-yacc

√ √ √

JavaCC√ √

×ANTLR

√ √×

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 10 / 46

Page 17: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Motivación

Tratamiento de errores en BisonTratamiento de errores sintácticos

Consiste en una recuperación en modo de pánicoPara un mejor funcionamiento, el usuario necesita adaptar sugramática de entradaNo hay corrección automática de errores

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 11 / 46

Page 18: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Motivación

Algunas preguntasTratamiento de errores sintácticos

¿Puede el diagnóstico ser exacto si se desconoce cómo corregirel error?¿Es cómodo para los usuarios adaptar sus gramáticas parapermitir un mejor manejo de los errores?¿Podemos hacer algo para mejorar la situación actual?

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 12 / 46

Page 19: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Motivación

Corrección automática de erroresTratamiento de errores sintácticos

Existen metodologías que permiten reparar automáticamente loserroresLa reparación consiste en la modificación de la entrada en unpunto alrededor del token de errorBurke y Fisher (1987) propusieron una metodología interesante:eficiente, flexible, independiente del lenguaje

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 13 / 46

Page 20: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Contribuciones

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 14 / 46

Page 21: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Introducción y motivación Contribuciones

En esta memoria..

Implementamos reparación automática de errores para losanalizadores generados por Bison, inspirados en la metodologíade Burke-FisherProveemos de un diagnóstico de errores de alta calidadAñadimos interfaces apropiadas para el uso de estascaracterísticas

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 15 / 46

Page 22: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Análisis sintáctico

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 16 / 46

Page 23: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Análisis sintáctico

Ejemplo de análisis sintáctico

Consideremos la gramática definida por las siguientes producciones

GramáticaExpr→ Suma ;Suma → Num + SumaSuma → Num

y el análisis de la entrada 45 + 18 ;

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 17 / 46

Page 24: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Análisis sintáctico

Ejemplo de análisis sintáctico

Entrada45 + 18 ;

Pila de estadoss0

Desplazamiento de 45Desplazamiento de +Desplazamiento de 18Reducción de 45 + 18Desplazamiento de ;Reducción de Suma ;Aceptación

GramáticaExpr → Suma ;Suma → Num + SumaSuma → Num

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 18 / 46

Page 25: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Análisis sintáctico

Ejemplo de análisis sintáctico

Entrada45 + 18 ;

Pila de estadoss0s1

Desplazamiento de 45Desplazamiento de +Desplazamiento de 18Reducción de 45 + 18Desplazamiento de ;Reducción de Suma ;Aceptación

GramáticaExpr → Suma ;Suma → Num + SumaSuma → Num

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 18 / 46

Page 26: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Análisis sintáctico

Ejemplo de análisis sintáctico

Entrada45 + 18 ;

Pila de estadoss0s1s4

Desplazamiento de 45Desplazamiento de +Desplazamiento de 18Reducción de 45 + 18Desplazamiento de ;Reducción de Suma ;Aceptación

GramáticaExpr → Suma ;Suma → Num + SumaSuma → Num

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 18 / 46

Page 27: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Análisis sintáctico

Ejemplo de análisis sintáctico

Entrada45 + 18 ;

Pila de estadoss0s1s4s1

Desplazamiento de 45Desplazamiento de +Desplazamiento de 18Reducción de 45 + 18Desplazamiento de ;Reducción de Suma ;Aceptación

GramáticaExpr → Suma ;Suma → Num + SumaSuma → Num

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 18 / 46

Page 28: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Análisis sintáctico

Ejemplo de análisis sintáctico

Entrada45 + 18 ;

Pila de estadoss0s3

Desplazamiento de 45Desplazamiento de +Desplazamiento de 18Reducción de 45 + 18Desplazamiento de ;Reducción de Suma ;Aceptación

GramáticaExpr → Suma ;Suma → Num + SumaSuma → Num

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 18 / 46

Page 29: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Análisis sintáctico

Ejemplo de análisis sintáctico

EntradaSuma ;

Pila de estadoss0s3s6

Desplazamiento de 45Desplazamiento de +Desplazamiento de 18Reducción de 45 + 18Desplazamiento de ;Reducción de Suma ;Aceptación

GramáticaExpr → Suma ;Suma → Num + SumaSuma → Num

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 18 / 46

Page 30: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Análisis sintáctico

Ejemplo de análisis sintáctico

EntradaSuma ;

Pila de estadoss0s2

Desplazamiento de 45Desplazamiento de +Desplazamiento de 18Reducción de 45 + 18Desplazamiento de ;Reducción de Suma ;Aceptación

GramáticaExpr → Suma ;Suma → Num + SumaSuma → Num

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 18 / 46

Page 31: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Análisis sintáctico

Ejemplo de análisis sintáctico

EntradaExpr

Pila de estadoss0s2

Desplazamiento de 45Desplazamiento de +Desplazamiento de 18Reducción de 45 + 18Desplazamiento de ;Reducción de Suma ;Aceptación

GramáticaExpr → Suma ;Suma → Num + SumaSuma → Num

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 18 / 46

Page 32: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Reparación automática de errores en Bison

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 19 / 46

Page 33: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Reparación automática de errores en Bison Implementación

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 20 / 46

Page 34: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Reparación automática de errores en Bison Implementación

Recuperación de errores de Burke-FisherCaracterísticas generales

Consiste en tres técnicas de reparación: simple, de ámbito,secundariaLa recuperación simple consiste en la eliminación, inserción osustitución de un token por otroLa recuperación de ámbito consiste en la inserción de unasecuencia de tokens que cierre un ámbito (e.g., end if ; oend while ;)La recuperación secundaria consiste en la eliminación de unfragmento de código

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 21 / 46

Page 35: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Reparación automática de errores en Bison Implementación

Postergación del análisis

Algunas correcciones requieren deshacer parte del análisis(costoso, complejo)Burke-Fisher introduce una metodología de postergación delanálisis sintáctico para simular la capacidad de deshacer elanálisis de k tokensk es un parámetro ajustable por el usuario

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 22 / 46

Page 36: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Reparación automática de errores en Bison Implementación

Búsqueda de una reparación simple

Para la reparación simple, buscamos reparaciones candidatassobre los k tokens postergados y el token de errorLas reparaciones candidatas deben permitir un análisis por sobrecierta cantidad de tokensLa reparación a aplicar se elige mediante una heurística deselección sobre las candidatasEsta heurística requiere información adicional sobre el lenguaje:sustituciones preferidas; tokens preferidos para eliminación einserción; y palabras claves del lenguaje

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 23 / 46

Page 37: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Reparación automática de errores en Bison Implementación

Reparación de ámbito

Si la reparación simple falla, invocamos la reparación de ámbitoIntentamos cerrar algún ámbito mediante inserción de unasecuencia cerradora en los mismos puntos donde se buscó unareparación simpleCada secuencia cerradora es especificada por el usuariomediante una directiva añadida a BisonSi falla, invocamos la recuperación secundaria en modo de pánico

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 24 / 46

Page 38: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Reparación automática de errores en Bison Interfaces de usuario

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 25 / 46

Page 39: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Reparación automática de errores en Bison Interfaces de usuario

Parámetros y directivas

ParámetrosYYDEFERRAL_LEVEL: Nivel de postergación k (por defecto, 2)YYERROR_MIN_THRESHOLD: Equivalente a tmin (por defecto, 2)YYERROR_THRESHOLD: Equivalente a te (por defecto, 5)

Directivas%keyword: Para indicar las palabras claves del lenguaje%prefer: Tokens preferidos para inserción o eliminación%subst: Sustitución preferida para un token

%closer: Especifica cada secuencia de tokens cerradores

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 26 / 46

Page 40: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Reparación automática de errores en Bison Interfaces de usuario

Funciones

Diagnósticovoid yydiagnosis (const char const *message);

Con message una especificación textual de la corrección.

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 27 / 46

Page 41: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Reparación automática de errores en Bison Interfaces de usuario

Funciones

Diagnósticovoid yydiagnosis (const char const *message);

Con message una especificación textual de la corrección.

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 27 / 46

Page 42: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 28 / 46

Page 43: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Calidad de las reparaciones

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 29 / 46

Page 44: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Calidad de las reparaciones

Evaluación

Construimos tres analizadores sintácticos para distintoslenguajes: Una calculadora, Pascal y Ada 95Corrimos los analizadores sobre distintos programas erróneosCategorizamos las reparaciones como excelentes, buenas,pobres y errores no corregidos

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 30 / 46

Page 45: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Calidad de las reparaciones

Calculadora sencilla

Ejecutadas 20 pruebas, con un total de 24 errores sintácticos:

Excelente Buena Pobre No Corregido13 8 0 3

54.2 % 33.3 % 0 % 12.5 %

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 31 / 46

Page 46: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Calidad de las reparaciones

Analizador para Pascal

Ejecutadas 20 pruebas, con un total de 45 errores sintácticos:

Excelente Buena Pobre No Corregido38 1 2 4

84.4 % 2.2 % 4.4 % 8.9 %

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 32 / 46

Page 47: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Calidad de las reparaciones

Analizador para Ada 95

Ejecutada una prueba, con un total de 32 errores sintácticos:

Excelente Buena Pobre No Corregido17 2 1 12

53.3 % 6.2 % 3.1 % 37.5 %

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 33 / 46

Page 48: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Calidad de las reparaciones

Observaciones

Un grado de postergación k > 3 no mejora la calidad de lasreparacionesMúltiples errores consecutivos pueden ser problemáticos para larecuperación de ámbito y secundaria

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 34 / 46

Page 49: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 35 / 46

Page 50: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

Calculadora sencilla

Expresión con un error) (234 + 1);

Unexpected ’)’ ignoredOperation in 1.3-1.13: result is 235

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 36 / 46

Page 51: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

Calculadora sencilla

Expresión con un error) (234 + 1);

Unexpected ’)’ ignoredOperation in 1.3-1.13: result is 235

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 36 / 46

Page 52: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

Calculadora sencilla

Expresión con un error(234 + 1);

Unexpected ’)’ ignoredOperation in 1.3-1.13: result is 235

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 36 / 46

Page 53: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

En Pascal

Código con 2 errores simplesprogram p(input, output);var key, record : array [1..limit] if integer;begin

x := 1end.

Warning: IDENTIFIER expected instead of RECORDWarning: OF expected instead of IF

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 37 / 46

Page 54: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

En Pascal

Código con 2 errores simplesprogram p(input, output);var key, record : array [1..limit] if integer;begin

x := 1end.

Warning: IDENTIFIER expected instead of RECORDWarning: OF expected instead of IF

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 37 / 46

Page 55: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

En Pascal

Código con 2 errores simplesprogram p(input, output);var key, some_id : array [1..limit] if integer;begin

x := 1end.

Warning: IDENTIFIER expected instead of RECORD

Warning: OF expected instead of IF

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 37 / 46

Page 56: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

En Pascal

Código con 2 errores simplesprogram p(input, output);var key, some_id : array [1..limit] if integer;begin

x := 1end.

Warning: IDENTIFIER expected instead of RECORD

Warning: OF expected instead of IF

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 37 / 46

Page 57: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

En Pascal

Código con 2 errores simplesprogram p(input, output);var key, some_id : array [1..limit] of integer;begin

x := 1end.

Warning: IDENTIFIER expected instead of RECORDWarning: OF expected instead of IF

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 37 / 46

Page 58: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

En Ada 95

Código con error de ámbitoprocedure P isbegin

loopif Y < 0 then Z := 3;

end loop;end P;

line 5: END IF ’;’ inserted

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 38 / 46

Page 59: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

En Ada 95

Código con error de ámbitoprocedure P isbegin

loopif Y < 0 then Z := 3;

end loop;end P;

line 5: END IF ’;’ inserted

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 38 / 46

Page 60: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Algunos ejemplos

En Ada 95

Código con error de ámbitoprocedure P isbegin

loopif Y < 0 then Z := 3;end if;

end loop;end P;

line 5: END IF ’;’ inserted

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 38 / 46

Page 61: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Análisis de desempeño

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 39 / 46

Page 62: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Análisis de desempeño

Metodología

Tiempo de ejecución (mediante gprof y gcov):Comparación entre código correcto y erróneoDistintos niveles de postergación del análisisComparación de la implementación original y la nuestra

Uso de memoria (mediante valgrind):Uso de memoria para distintos niveles de postergación v/sanalizador original

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 40 / 46

Page 63: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Análisis de desempeño

Tiempo de ejecuciónDesempeño para distintas versiones de un analizador para Ada 95

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 41 / 46

Page 64: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Resultados experimentales Análisis de desempeño

Uso de memoriaComparación para distintas versiones de un analizador para Ada 95

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 42 / 46

Page 65: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Conclusiones

Contenidos

1 Introducción y motivaciónContextoMotivaciónContribuciones

2 Análisis sintáctico

3 Reparación automática de errores en BisonImplementaciónInterfaces de usuario

4 Resultados experimentalesCalidad de las reparacionesAlgunos ejemplosAnálisis de desempeño

5 Conclusiones

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 43 / 46

Page 66: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Conclusiones

Lo que conseguimos

Adaptar la técnica de Burke-Fisher a la naturaleza de BisonCorregir satisfactoriamente la mayoría de los errores sintácticospresentes en programas para distintos lenguajesPosibilitar la entrega de un diagnóstico de errores de alta calidadSeparar el ajuste de la metodología de recuperación de erroresde la especificación del lenguaje

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 44 / 46

Page 67: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Conclusiones

Trabajo futuro

Permitir la búsqueda (¿recursiva?) de múltiples errores de ámbitoconsecutivosImplementar una reparación secundaria más precisaOptimizar la implementaciónGenerar automáticamente las secuencias cerradoras de tokens(Charles, 1991)Publicar los detalles de la implementación y resultados en unreporte técnico útil para desarrolladores y usuarios de BisonIntegrar el código con una próxima versión de Bison

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 45 / 46

Page 68: Implementación de una metodología de reparación de errores ...csaavedra/documents/... · analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería

Conclusiones

Discusión..

Claudio Saavedra (UTalca) Reparación automática de errores en Bison 27 de marzo de 2008 46 / 46