El documento habla sobre el manejo de errores léxicos en el análisis de programas. Menciona que son pocos los errores que pueden detectarse a nivel léxico debido a su visión restringida. Describe técnicas comunes de recuperación de errores como borrar caracteres extraños, insertar caracteres faltantes o reemplazar caracteres incorrectos. Finalmente, enfatiza la importancia de que los compiladores reporten los errores de manera clara y permitan continuar detectando otros posibles errores.
El documento habla sobre el manejo de errores léxicos en el análisis de programas. Menciona que son pocos los errores que pueden detectarse a nivel léxico debido a su visión restringida. Describe técnicas comunes de recuperación de errores como borrar caracteres extraños, insertar caracteres faltantes o reemplazar caracteres incorrectos. Finalmente, enfatiza la importancia de que los compiladores reporten los errores de manera clara y permitan continuar detectando otros posibles errores.
El documento habla sobre el manejo de errores léxicos en el análisis de programas. Menciona que son pocos los errores que pueden detectarse a nivel léxico debido a su visión restringida. Describe técnicas comunes de recuperación de errores como borrar caracteres extraños, insertar caracteres faltantes o reemplazar caracteres incorrectos. Finalmente, enfatiza la importancia de que los compiladores reporten los errores de manera clara y permitan continuar detectando otros posibles errores.
El documento habla sobre el manejo de errores léxicos en el análisis de programas. Menciona que son pocos los errores que pueden detectarse a nivel léxico debido a su visión restringida. Describe técnicas comunes de recuperación de errores como borrar caracteres extraños, insertar caracteres faltantes o reemplazar caracteres incorrectos. Finalmente, enfatiza la importancia de que los compiladores reporten los errores de manera clara y permitan continuar detectando otros posibles errores.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 4
Manejo de errores lxicos
Son pocos los errores que se pueden
detectar al hacer anlisis lxico fi (a == f(x)) //Error de sintaxis Pero puede existir algn error si ninguno de los patrones con cuerda con el prefijo de entrada Tcnicas de recuperacin de errores Borrar un carcter extrao Insertar un carcter que falta Reemplazar un carcter incorrecto por otro correcto Intercambiar dos caracteres adyacentes http://antares.itmorelia.edu.mx/~jcolivares/courses/ps207b/ps2_u3.pdf 3.1 Manejo de errores lxicos.
Recuperacin en modo pnico: este tipo de estrategia es la ms comn. Consiste en que cuando se detecta una cadena no reconocible, se siguen leyendo caracteres hasta que se vuelve a detectar un token vlido. Borrar un carcter extrao. Insertar un carcter que falta (e.g. reemplazar 2C por 2*C). Reemplazar un carcter incorrecto por otro correcto (e.g. reemplazar INTEJER por INTEGER si el lugar en donde aparece el primer lexema no es el indicado para un identificador) Intercambiar dos caracteres, tokens, adyacentes (e.g. I INTEGER por INTEGER I). La recuperacin de errores durante el AL puede producir otros en las siguientes fases. var numero : integer; begin num?ero:=10; end el compilador podra producir los siguientes mensajes de error: ERROR LXICO: carcter no reconocido (?) ERROR SEMNTICO: identificador no declarado (num) ERROR SINTCTICO: falta operador entre identificadores ERROR SEMNTICO: identificador no declarado (ero) Otras veces no: var i,j: integer; begin i:=1; ? j:=2; end
1.1. MANEJO DE ERRORES
Debido a la naturaleza del proceso de programacin, un traductor de programas se confronta con errores sintcticos con mucha frecuencia en los programas. Debido a esto, se requiere de una estrategia para tratar los errores respecto a las reglas que define el lenguaje de programacin. La respuesta a los errores cae entre el colapso total del sistema hasta a la correccin automtica completa del programa fuente.
Una clasificacin posible de los errores es la siguiente:
I. Respuestas inaceptables 1. Respuesta incorrecta (el error no se reporta) a. El compilador sufre un colapso y falla b. El compilador cae en un lazo infinito c. El compilador continua 2. Respuesta correcta (pero casi sin utilidad) a. El compilador reporta el primer error y se detiene
II. Respuesta aceptable 1. Respuestas posibles a. El compilador reporta el error y continua para encontrar otros posteriores si existen. b. El compilador reporta el error y lo repara si es posible, continua y entrega el cdigo correcto. 2. Respuestas imposibles con la tecnologa actual a. El compilador corrige el error y entrega el cdigo que el programador intentaba escribir.
1.2. DETECCIN DE ERRORES
1.2.1. La Naturaleza de los errores
Por definicin, un compilador slo puede detectar errores sintcticos. Los errores semnticos se manifiestan slo al ejecutar el programa y no son posibles de detectar antes con las tcnicas actuales. Para ello se requiere un programa que verifique que lo que el programador escribi sea lo que se requiere para el problema en cuestin.
Cualquier desviacin de las reglas de programacin de un lenguaje dado es llamado error sintctico. Los errores sintcticos son detectadas en parte, en la mayora de los compiladores modernos, por un analizador libre de contexto y el resto por algunos mecanismos a la medida con el uso de tablas de compilacin.
1.2.2. Cmo se detectan los errores? Los errores son detectados de dos formas:
Los errores en la sintaxis libre de contexto del programa fuente son las ms fciles de encontrar debido a las especificaciones precisas de la sintaxis.
Los errores pueden detectarse tambin por verificaciones de la sintaxis sensitiva al contexto del programa fuente.
Los errores en este tipo incluyen los de definicin de tipo en variables y expresiones y son difciles de detectar en forma efectiva debido a lo vago e impreciso de las descripciones propuestas para la sintaxis libre de contexto.
Dnde se detectan los errores?
Es posible que la deteccin del error no ocurra hasta que el analizador haya procedido una distancia arbitraria ms all del punto donde el error tuvo lugar:
a=b+c THEN x=x-2 ; ELSE x=x+1 ;
En este ejemplo est claro para casi cualquier programador que el error es una ficha del tipo IF que falta. El punto donde se localiza THEN es el mnimo donde el error se puede detectar en un analizador de izquierda a derecha. Cuando nuestros ojos alcanzan este punto somos capaces rpidamente de saltar hacia atrs para descubrir el punto exacto del error.
Se puede codificar un analizador que salte hacia atrs para encontrar el error, pero el proceso en general lleva demasiado tiempo para ser prctico. Algunos autores ofrecen algoritmos para reparar un programa invlido y transformarlo en uno vlido lo ms prximo al errneo. El algoritmo toma un nmero de pasos proporcional a n3 donde n representa el nmero de smbolos del programa fuente.
Se debe recalcar que un compilador usualmente no es capaz de determinar la causa de un error aunque este se detecte de inmediato. El error puede deberse a un error de mecanografa, un descuido del programador o una falta de entendimiento del lenguaje de programacin. Mientras ms pronto se detecte el error hay ms probabilidad de que el compilador pueda tratar de adivinar la causa y tomar la accin correctiva adecuada.
1.2.3. Reporte de errores
Cada error una vez detectado debe ser reportado de forma clara y precisa.
Existen an compiladores que confrontan al usuario con mensajes tales como: error 221- 34 o, pero an erro de tipo desconocido.
El usuario debe referirse, entonces, a un manual de explicaciones que provee el autor del compilador donde quiz encuentre una explicacin.
En los mensajes de error se debe incluir cualquier informacin que el compilador conozca y pueda utilizarse para que el usuario discierna la causa del error; tal informacin puede incluir apuntadores, nombres, atributos, etc. Toda esta informacin se debe expresar en trminos de lenguaje fuente y debe orientarse hacia el usuario.
CONCLUSIONES
Para empezar se debe entender el proceso de compilacin, para que la maquina entienda el lenguaje a analizar, esto inicia con el lxico. Los autmatas son para poder entender el proceso del compilador, cuando pasa por diferentes estados para llegar a su estado final. . BIBLIOGRAFIA Anlisis y diseo de compiladores Emiliano Llano Daz Errores lxicos El anlisis lxico constituye la primera fase, aqu se lee el programa fuente de izquierda a derecha y se agrupa en componentes lxicos (tokens), que son secuencias de caracteres que tienen un significado. Adems, todos los espacios en blanco, lneas en blanco, comentarios y dems informacin innecesaria se elimina del programa fuente. Tambin se comprueba que los smbolos del lenguaje (palabras clave, operadores,...) se han escrito correctamente.
Como la tarea que realiza el analizador lxico es un caso especial de coincidencia de patrones, se necesitan los mtodos de especificacin y reconocimiento de patrones, y stos mtodos son principalmente las expresiones regulares y los autmatas finitos. Sin embargo, un analizador lxico tambin es la parte del traductor que maneja la entrada del cdigo fuente, y puesto que esta entrada a menudo involucra un importante gasto de tiempo, el analizador lxico debe funcionar de manera tan eficiente como sea posible.
Son pocos los errores simplemente en el nivel lxico ya que tiene una visin muy restringida de un programa fuente. El analizador lxico debe devolver el componente lxico de un identificador y dejar a otra fase se ocupe de los errores.
Suponga que una situacin en la cual el analizador lxico no puede continuar por que ninguno de los patrones concuerda con un prefijo de la entrada. Tal vez la estrategia de recuperacin ms sencilla sea recuperacin EN MODO PANICO (este mtodo de recuperacin es donde se borra caracteres sucesivos de la entrada hasta que el analizador lxico pueda encontrar un componente lxico bien formado). Los programas no siempre son correctos!!
El compilador tiene que: 1. Reportar clara y exactamente la presencia de errores 2. Recuperarse de cada error lo suficientemete rpido para poder detectar errores subsiguientes: Tratar de evitar mensajes falsos de error Un error que produce un token erroneo Errores lxicos posibles
Un token o componente lxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje de programacin. Ejemplos de tokens, podran ser palabras clave (if, while, int), identificadores, nmeros, signos, o un operador de varios caracteres. Son los elementos ms bsicos sobre los cuales se desarrolla toda traduccin de un programa, surgen en la primera fase, llamada anlisis lxico. http://manejodeerrores.blogspot.mx/