PL1erroresSintactico

Páginas: 12 (2875 palabras) Publicado: 4 de mayo de 2015
Recuperación de Errores

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

3 Tratamiento 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.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS