1.7 manejo de errores semánticos

 MANEJO DE ERRORES

Un compilador es un sistema que en la mayoría de los casos tiene que manejar una entrada incorrecta, sobre todo en las primeras etapas de la creación de un programa, es probable que el compilador se usar para efectuar las características que deberá proporcionar un buen sistema de edición 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 diseño.

Es indispensable que un compilador:

  • Sea capaz de detectar errores en la entrada.
  • El compilador debe recuperarse de los errores sin perder demasiada información.
  • Debe producir un mensaje de error que permita al programador encontrar y corregir fácilmente 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 realización. 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 semánticos son ms sutiles. Un error semántico se produce cuando la sintaxis del código es correcta, pero la semántica o significado no es el que se pretenda. La construcción obedece las reglas del lenguaje, y por ello el compilador o intérprete no detectan errores semánticos. Un error semántico puede hacer que el programa termine de forma anormal, con o sin un mensaje de error.

Los principales errores semánticos son:

Conversiones de tipos no permitidas:

Int x;

x=4.32;

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

Variables usadas y no definidas

String nombre;

nombre= Jos; 

apellido=Prez;

La variable apellido no ha sido declarada

Operandos de tipos no compatibles

Ejemplo:

A: float;

B: String;

A: =B+5;

Análisis Sintáctico:

Se realiza el árbol sintáctico y comprobamos su validez La sintaxis es válida. Análisis Semántico




Comentarios

Entradas más populares de este blog

Fractal

Registros de Emu8086

Pila semántica en un analizador sintáctico