PL1erroresSintactico
Páginas: 12 (2875 palabras)
Publicado: 4 de mayo de 2015
1
Tratamiento de Errores. Procesadores de Lenguaje I
Rutinas de Manejo de Errores
Ocupan gran parte de los compiladores
Objetivos
Informar con claridad, exactitud
Recuperación rápida
recuperación no es corrección
No debe retrasar el procesamiento de programas sin errores
No generar errores en cascada (ej. eliminar identificador)
Acciones posibles
Detectar errores
Informar de los errores
Recuperar de los errores
Corregir errores
¿Necesidad actual de recuperación?
Más rápido re-compilar que leer siguiente error…
2
1
Tratamiento de Errores. Procesadores de Lenguaje I
Tipos de Errores
Tipos de errores
Léxicos: escribir mal un identificador, número, …
Sintácticos: no poner un “;” al final de una sentencia,
estructuraincorrecta
Semánticos: multiplicar por una variable booleana
Lógicos: bucle infinito
Herramientas para disminuir el número de errores ...
Léxicos
Si se utiliza alguna herramienta que complete palabras
Sintácticos
Semánticos
Si se utiliza algún editor basado en sintaxis (colores)
Busca funciones/clases e indica tipos especificados
3
Tratamiento de Errores. Procesadores de Lenguaje IRecuperación Errores Sintácticos
Ejemplo 1: análisis descendente
Gramática:
S::=a A S | b A
A::=c A | d
Tabla:
ΣN
a
b
S
aAS
bA
A
c
d
cA
d
Entrada: a b ...
Estado del análisis cuando detecta el error:
Pila Entrada
$S a b ...
$SAa
a b ...
$SA b ...
Error: Se ha encontrado una b, cuando se esperaba una c o d
Podría eliminarse
4
2
Tratamiento de Errores. Procesadores de Lenguaje IErrores en Análisis LR
Ejemplo 2: análisis ascendente
Gramática
1. S::=A A
2. A::=x A
3. A::=y
Entrada: xy
acción
0
x
y
d3
d4
ir_a
$
S
A
1
2
acpt
1
2
d3
d4
3
d3
d4
5
4
r3
r3
r3
5
r1
6
r2
r2
r2
6
6
7
8
Estado del análisis cuando detecta el error:
Se podría añadir un token y
Pila
0x3A6
0A2
0A2
Entrada
$
$
$
5
Tratamiento de Errores. Procesadores de Lenguaje IEstrategias de Recuperación
No hay una estrategia de aceptación universal
Abundan técnicas heurísticas y ad hoc
Principio general de recuperación
Minimizar tokens eliminados/modificados
Dejar el analizador listo para continuar procesando
Principales estrategias de recuperación son:
Modo de pánico/alarma
Nivel de frase
Producciones de error
Corrección Global
6
3Tratamiento de Errores. Procesadores de Lenguaje I
Modo de Pánico
Características
Método más sencillo
Lo pueden usar la mayoría de los AS
No entra en lazos infinitos
Adecuado para lenguajes en los que son raros múltiples
errores en la misma proposición
Funcionamiento general
El AS desecha símbolos de la entrada, uno por uno, hasta
encontrar un token de sincronización para continuar
Delimitadores (punto y coma, palabras clave como end)
Inconvenientes
Podrían omitirse gran cantidad de símbolos sin analizar
7
Tratamiento de Errores. Procesadores de Lenguaje I
A nivel de frase
Características
Correcciones en la cadena de entrada
Funcionamiento
Descubierto el error se corrige (localmente) la entrada por un
prefijo que permite continuar el AS
Sustituir una coma por unpunto y coma, insertar un punto y
coma, etc.
Inconvenientes
Dificultad para resolver situaciones en las que el error se
produjo antes de la detección de éste
Pueden producir lazos infinitos
Evitar insertar símbolos antes del símbolo actual en la entrada
8
4
Tratamiento de Errores. Procesadores de Lenguaje I
Producciones de error
Funcionamiento
Conocidos los errores más comunes,se extiende la gramática
con producciones de error
Reconocido el error, se dan diagnósticos precisos de la
construcción errónea
Ej.:
E->E op T | E->T
E-> E T //falta operador
T->id | num
Inconvenientes
Dificultad para ir más allá de los casos particulares más
frecuentes
Generación ambigüedades
9
Tratamiento de Errores. Procesadores de Lenguaje I
Corrección Global
Características
...
Leer documento completo
Regístrate para leer el documento completo.