Su diseo e implementacin se simplificaran mucho las primeras versiones de
nuestros programas suelen ser incorrectas y un buen compilador debera
ayudar al programador a identificar y localizar errores ah q considerar q desde el principio el manejo de errores puede simplificar la estructura de un compilador y mejorar su respuesta a los errores . Los errores en la programacin pueden ser de los siguientes tipos : A) lxicos: producidos al escribir mal un identificador, una palabra reservada o un operador B) sintctico: por una expresin aritmtica (no equilibrados) C) SEMANTICO: por ejemplo como un operador aplicado a un operando incompatible D) lgicos: puede ser una llamada infinitamente recursiva E) cuando el programa no hace lo q el programador realmente desea resulta evidente q los errores de correccin no pueden ser detectados por un compilador ,Debido .por otro lado la deteccin de errores lgicos implica un esfuerzo computacional muy grande en tanto q el compilador debe ser capaz de averiguar los distintos flujos q puede seguir un programa en ejecucin lo cual en muchos casos es costoso e imposible El manejo de errores de sintaxis es el mas complicado pero nos interesa q cuando el compilador encuentre un error , no sea cancelada la compilacin , sino q se recupere y siga buscando errores .recuperar un error no quiere decir corregirlo , si no ser capas de seguir construyendo el rbol sintctico a pesar de los errores un manejador de errores sintcticos debe tener como objetivos a) Indicar los errores de forma clara y precisa b) recuperarse del error c) distinguir entre errores y advertencias d) no ralentizar significativamente la compilacin un buen compilador debe hacerse teniendo en cuenta los errores q se puedan producir con lo q se consigue simplificar su estructura existen varias estrategia para generar los errores detectados a) Ignorar el problema denominada panic-mode ,consiste en i ignorar el resto de la entrada hasta llegar a una condicin de por ejemplo sean las
b) Recuperacin a nivel de frase se intenta corregir el error una vez
descubierto, pero ah q tener cuidado con este mtodo por q puede dar lugar a recuperaciones infinitas c) Reglas de produccin adicionales :este mecanismo aade a la gramtica formal q describe al lenguaje reglas de produccin para reconocer los errores mas comunes : siguiendo con el caso anterior se puede proponer algo como Sent_erronea-- sent_sin_acabar sent _acabada Sent _acabada sentencia ; Sent_ sin_acabar sentencia Lo cual nos da mayor control e incluso permite recuperar y corregir el problema y emitir una advertencia en lugar de un error d) Correccin global :este mtodo trata por todos los medios de obtener un rbol sintctico para una sentencia de tokens si ah algn error ,este mtodo infiere una secuencia de tokens sintcticamente correcta lo mas parecida ala original y genera el rbol para dicha secuencia