1 / 12

Teoría de lenguajes y compiladores

Teoría de lenguajes y compiladores. Unidad I. Analizadores lexicográficos. Semana 5. Errores lexicográficos. Objetivo General.

gaius
Download Presentation

Teoría de lenguajes y compiladores

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Teoría de lenguajes y compiladores Unidad I Analizadores lexicográficos Semana 5 Errores lexicográficos

  2. Objetivo General El alumno al finalizar el curso podrá desarrollar aplicaciones que le permitan determinar si una estructura gramatical corresponde a una sentencia valida en la definición de un lenguaje en particular, teniendo en cuenta el contexto sintáctico y semántico. Así mismo estará capacitado para proponer nuevas formas estructurales en la definición de lenguajes de programación.

  3. Objetivos Específicos Desarrollar un analizador lexicográfico

  4. Objetivos Instruccionales • Aplicar criterios para la recuperación de errores durante la etapa del análisis lexicográfico. • Utilizar herramientas para la generación de analizadores léxicos.

  5. El scanner agrupa a uno o mas caracteres del programa fuente formando un token, para ello se apoya en el concepto de “delimitador”, que es un carácter que sirve para acabar un token pero sin incluirse en el. Scanners y Lenguajes de programación

  6. Tipos de errores léxico Según Morgan los errores lógicos se dividen en cuatro grupos: Se ha incluido un símbolo o carácter absolutamente extraño para vocabulario terminal de la gramática del lenguaje de programación Se ha omitido un carácter (se declaro conta y se uso cont). Se ha introducido un nuevo carácter que viene a sumarse a los que realmente componen el nombre (se indico arraysen vez dearrayen la definición de arreglos). Han sido permutados dos caracteres del token analizado (se indico esle en vez de else) Scanners y Lenguajes de programación

  7. Manejo de errores en el análisis léxico • Los errores léxicos se detectan cuando el analizador léxico intenta reconocer componentes léxicos en el código fuente. Los errores léxicos típicos son: • Nombres ilegales de identificadores: un nombre contiene caracteres inválidos; • Números inválidos: un número contiene caracteres inválidos (por ejemplo; 2,13 en lugar de 2.13), no está formando correctamente (por ejemplo, 0.1.33), o es demasiado grande y por tanto produce un desbordamiento; • Cadenas incorrectas de caracteres: una cadena de caracteres es demasiado larga (probablemente por la omisión de comillas que cierran); • Errores de ortografía en palabras reservadas: caracteres omitidos, adicionales, incorrectos o mezclados; • Etiquetas ilegales: una etiqueta es demasiado larga o contiene caracteres inválidos. Scanners y Lenguajes de programación

  8. La mayoría de los errores léxicos se deben a descuidos del programador. En general, la recuperación de los errores léxicos es relativamente sencilla. • Si un nombre, un número o una etiqueta contiene un carácter inválido, se elimina el carácter y continúa el análisis en el siguiente carácter; en otras palabras, el analizador léxico comienza a reconocer el siguiente componente léxico. El efecto es la generación de un error de sintaxis que será detectado por el analizador sintáctico. Este método también puede aplicarse a números mal formados. • Las secuencias de caracteres como 12AB pueden ocurrir si falta un operador (el caso menos probable) o cuando se han tecleado mal ciertos caracteres. Es imposible que el analizador léxico pueda decidir si esta secuencia es un identificador ilegal o u número ilegal. En tales casos, el analizador léxico puede saltarse la cadena completa o intentar dividir las secuencias ilegales en secuencias legales más cortas. Independientemente de cuál sea la decisión , la consecuencia será un error de sintaxis. Detección de errores en el análisis lexicográfico

  9. La detección de cadenas demasiado largas no es muy complicada, incluso si faltan las comillas que cierran, porque por lo general no está permitido que las cadenas pasen de una línea a la siguiente. Si faltan las comillas que cierran, puede usarse el carácter de fin de línea como el fin de cadena y reanudar el análisis léxico en la línea siguiente. Esta reparación quizás produzca errores adicionales. En cualquier caso, el programador debe ser informado por medio de un mensaje de error. • Un caso similar a la falta de comillas que cierran en una cadena, es la falta de un símbolo de terminación de comentario. Como por lo regular está permitido que los comentario abarquen varias líneas, no podrá detectarse la falta del símbolo que cierra el comentario hasta que el analizador léxico llegue al final del archivo o al símbolo de fin de otro comentario. • Si se sabe que el siguiente componente léxico debe ser una palabra reservada, es posible corregir una palabra reservada mal escrita. Esto se hace mediante funciones de corrección de errores. Detección de errores en el análisis lexicográfico

  10. Un procedimiento corrector para tales situaciones consiste en formar subconjuntos de los mismos n caracteres que el nombre no ha encontrado en la tabla de símbolos (no declarado) y comparar. • Se debe tener especial cuidado al realizar la recuperación, pues pudiera suceder que una vez “interpretado” el error mediante este procedimiento no fuera coincidente con la idea original del programador. Recuperación de errores en el análisis lexicográfico

  11. Teoría de lenguajes y compiladores Unidad I Analizadores lexicográficos Semana 5 Errores lexicográficos

More Related