Вы находитесь на странице: 1из 3

3.

MANEJO DE ERRORES
Un compilador es un sistema que en la mayora de los casos tiene que manejar una
entrada incorrecta, sobre todo en las primeras etapas de la creacin de un programa,
es probable que el compilador se usar para efectuar las caractersticas que debera
proporcionar un buen sistema de edicin dirigido por la sintaxis, es decir, para
determinar si las variables han sido declaradas antes de usarla, o si faltan corchetes o
algo as. Por lo tanto, el manejo de errores es parte importante de un compilador y el
escritor del compilador siempre debe tener esto presente durante su diseo.
Es indispensable que un compilador:
Sea capaz de detectar errores en la entrada.
El compilador debe recuperarse de los errores sin perder demasiada
informacin.
Debe producir un mensaje de error que permita al programador encontrar y
corregir fcilmente los elementos incorrectos de su programa.
Es una de las misiones ms importantes de un compilador, aunque, al mismo tiempo,
es lo que ms dificulta su realizacin. A veces unos errores ocultan otros. A veces un
error provoca una avalancha de muchos errores que se solucionan con el primero. Es
conveniente un buen manejo de errores, y que el compilador detecte todos los errores
que tiene el programa y no se pare en el primero que encuentre.

ERRORES SEMANTICOS
Los errores semnticos son ms sutiles. Un error semntico se produce cuando la
sintaxis del cdigo es correcta, pero la semntica o significado no es el que se
pretenda. La construccin obedece las reglas del lenguaje, y por ello el compilador o
intrprete no detectan errores semnticos. Un error semntico puede hacer que el
programa termine de forma anormal, con o sin un mensaje de error.
Los principales errores semnticos son:

Conversiones de tipos no permitidas:

Int x;
La variable x est declarada como entero,
x=4.32;
por lo tanto, no se le puede asignar un
valor de tipo flotante.

Variables usadas y no definidas

String nombre;
nombre= Jos; La variable apellidono ha sido declarada
apellido=Prez;
Operandos de tipos no compatibles
Ejemplo:
A: float;
B: String;
A:=B+5;

Anlisis Sintctico:
Se realiza el rbol sintctico y
comprobamos su validez

La sintaxis es
vlida.

Anlisis Semntico

Hasta aqu la entrada es lxica y sintcticamente valida, ahora se analiza desde


el punto de vista semntico.

Error

Cadena + entero= error_tipo

Se comprueba que los operandos son de tipo no compatibles, por lo cual


existe error semntico.

TRATAMIENTO DE ERRORES SEMANTICOS


Comprobacin de tipos

1. Aspectos Generales
Un lenguaje con comprobacin fuerte de tipos es capaz de garantizar que los
programas se pueden ejecutar sin errores de tipo, por lo que los errores de tipo se
detectarn siempre en tiempo de compilacin.
Como mnimo, ante un error, un comprobador de tipos debe informar de la naturaleza
y posicin del error y recuperarse para continuar con la comprobacin del resto del
programa a analizar.

Veamos algunas de las operaciones a tener en cuenta en una comprobacin de tipos:

Conversin de tipos: A veces es necesario transformar el tipo de una expresin


para utilizar correctamente un operador o para pasar de forma adecuada un
parmetro a una funcin.
Coercin: Es una conversin de tipos que realiza de forma implcita el propio
compilador. Si es el programador el que realiza la conversin se tratar
entonces de una conversin explcita.
Sobrecarga de operadores: La sobrecarga se resuelve determinando el tipo de
cada una de las expresiones intervinientes en la sobrecarga.
Funciones polimrficas: Son aquellas que trabajan con argumentos cuyo tipo
puede cambiaren distintas llamadas a la funcin
2. Especificacin de un comprobador de tipos bsico

Bsicamente se debern realizar dos tareas:


a) Asignacin de tipos: en las declaraciones.
b) Evaluacin y comprobacin de tipos: En las expresiones y en las funciones,
as como en las sentencias.

CONCLUSION:
Decimos que los errores encontrados en las distintas fases de anlisis se envan a un
mdulo denominado manejador de errores. En el caso ms sencillo puede ser un
subprograma al que se le invoca envindole el cdigo de error, y que se puede encargar
de escribir un mensaje con el error correspondiente.
Este tratamiento para los errores que surgen en la creacin de cualquier programa
resulta muy til, ya que sin este la creacin de un programa seria tediosa y complicada
ya que no sabramos donde cometimos algn error y la nica solucin sera analizar
todo el cdigo lnea por lnea.

Вам также может понравиться