Errores lexicos - Tarea PDF

Title Errores lexicos - Tarea
Course Lenguajes y Automatas I
Institution Instituto Tecnológico de Tijuana
Pages 5
File Size 141.5 KB
File Type PDF
Total Downloads 65
Total Views 731

Summary

INSTITUTO TECNOLÓGICO DE TIJUANA SUBDIRECCIÓN ACADÉMICADEPARTAMENTO DE SISTEMAS Y COMPUTACIÓNSEMESTRE ENERO - JUNIO 2020CARRERA:INGENIERÍA EN SISTEMAS COMPUTACIONALESMATERIA: LENGUAJES Y AUTOMATAS IUnidad 4 - Errores léxicosALUMNO: IVANNOMBRE DEL MAESTRO:LAURA ANGELICA CEGOBIANO GARCIA FECHA DE ENTR...


Description

INSTITUTO TECNOLÓGICO DE TIJUANA SUBDIRECCIÓN ACADÉMICA DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN

SEMESTRE ENERO - JUNIO 2020

CARRERA: INGENIERÍA EN SISTEMAS COMPUTACIONALES

MATERIA: LENGUAJES Y AUTOMATAS I Unidad 4 - Errores léxicos

ALUMNO: IVAN

NOMBRE DEL MAESTRO: LAURA ANGELICA CEGOBIANO GARCIA FECHA DE ENTREGA: 07/05/20

Errores léxicos Los errores léxicos son detectados, cuando durante el proceso de reconocimiento de caracteres, los símbolos que tenemos en la entrada no concuerdan con ningún patrón. Hay que tener en cuenta que hay pocos errores detectables por el analizador léxico. Tipos de errores léxicos Nombres incorrectos: de los identificadores Se debe a que se utilizan caracteres inválidos para ese patrón, como por ejemplo un paréntesis, o se empieza por un número. Números incorrectos: Debido a que está escrito con caracteres inválidos (puntos en lugar de comas) o no está escrito correctamente. Palabras reservadas escritas incorrectamente: Se producen errores de ortografía. El problema aquí es cómo distingues entre un identificador y una variable reservada. Caracteres que no pertenecen al alfabeto del lenguaje: Ejemplos: @, €, ¿, ?, ñ, etc. Analizadores léxicos El principal objetivo del analizador léxico es leer el flujo de caracteres de entrada y transformarlo en una secuencia de componentes léxicos que utilizará el analizador sintáctico. Al tiempo que realiza esta función, el analizador léxico se ocupa de ciertas labores de “limpieza”. Entre ellas está eliminar los blancos o los comentarios. También se ocupa de los problemas que pueden surgir por los distintos juegos de caracteres o si el lenguaje no distingue mayúsculas y minúsculas. Para reducir la complejidad, los posibles símbolos se agrupan en lo que llamaremos categorías léxicas. Tendremos que especificar qué elementos componen estas categorías, para lo que emplearemos expresiones regulares. También será necesario determinar si una cadena pertenece o no a una categoría, lo que se puede hacer eficientemente mediante autómatas de estados finitos. Ventajas -

-

Se simplifica el diseño, puesto que hay una herramienta especializada en el tratamiento del fichero que contiene el código fuente. Aumenta la portabilidad del compilador, pudiendo tenerse versiones diferentes para distintos formatos del texto de código fuente (ASCII, EBCDIC, etc.). Mejora la eficiencia al ser una herramienta especializada en el tratamiento de caracteres. Detección de determinados errores fáciles de corregir a este nivel (5.25 por 5,25).

Desventajas -

Tablas de gran tamaño, se incrementa el espacio necesario (velocidad algo reducida respecto al método anterior). Este método es el que utiliza Flex (Linux) y Lex (Unix). Coste: O(|x|), es independiente del tamaño del autómata.

Aplicaciones -

El analizador léxico divide la entrada en componentes léxicos. Los componentes se agrupan en categorías léxicas. Asociamos atributos a las categorías léxicas. Especificamos las categorías mediante expresiones regulares. Para reconocer los lenguajes asociados a las expresiones regulares empleamos autómatas de estados finitos (AFD). Se pueden crear los AFD directamente a partir de la expresión regular. El analizador léxico utiliza la maquina discriminadora determinista. El tratamiento de errores en nivel léxico es muy simple. Se pueden emplear las ideas de los analizadores léxicos para facilitar el tratamiento de ficheros de texto.

Generadores de analizadores léxicos Se pueden usar varias técnicas para acelerar el algoritmo y ahorrar espacio Las etiquetas pueden guardarse mediante dispersión para producir un sistema de firmas que acelere sus búsquedas Como las tablas de transiciones son muy escasas, se pueden guardar en una lista corta que se consulte cada vez que se necesite hacer una transición a partir de un estado. Generador Lex Es un programa para generar analizadores léxicos (en inglés scanners o lexers), se utiliza comúnmente con el programa yacc que se utiliza para generar análisis sintáctico, escrito originalmente por Eric Schmidt y Mike Lesk, es el analizador léxico estándar en los sistemas Unix, y se incluye en el estándar de POSIX. Lex toma como entrada una especificación de analizador léxico y devuelve como salida el código fuente implementando el analizador léxico en C. Aunque tradicionalmente se trata de software propietario, existen versiones libres de lex basadas en el código original de AT&T en sistemas como OpenSolaris y Plan 9 de los laboratorios Bell. Otra versión popular de software libre de lex es Flex.

Generador Flex Es una herramienta para la generación de programas que realizan concordancia de patrones en texto, es una herramienta para generar escáneres. programas que reconocen patrones léxicos en un texto, es una reescritura de la herramienta LEX del Unix de AT&T (aunque las dos implementaciones no comparten ningún código), con algunas extensiones e incompatibilidades, de las que ambas conciernen a aquellos que desean escribir analizadores aceptables por cualquier implementación. Flex lee los archivos de entrada dados, o la entrada estándar si no se le ha indicado ningún nombre de archivo, con la descripción de un escáner a generar. La descripción se encuentra en forma de parejas de expresiones regulares y código C, denominadas reglas. Generador JTLex JTLex en cambio permite expresar conjuntamente sintaxis y semántica al estilo de los esquemas de traducción. A su vez el proceso de cómputo de atributos es implementado por JTLex por un autómata finito traductor con las ventajas de eficiencia que esto supone. Una especificación JTLex permite no sólo asociar un procedimiento, o acción, a cada expresión regular, sino también a cada ocurrencia de un símbolo dentro de la expresión. Aplicaciones Se pueden emplear para muchos programas “convencionales”. Los ejemplos más claros son aquellos programas que tienen algún tipo de entrada de texto donde hay un formato razonablemente libre en cuantos espacios y comentarios. En estos casos es bastante engorroso controlar donde empieza y termina cada componente y es fácil liarse con los punteros a char. Este simplifica notablemente la interfaz y si se dispone de un generador automático, el problema se resuelve en pocas líneas de código.

Referencias bibliográficas http://www.cartagena99.com/recursos/alumnos/apuntes/ININF2_M4_U2_T1.pdf http://repositori.uji.es/xmlui/bitstream/handle/10234/5877/lexico.apun.pdf? sequence=1 http://informatica.uv.es/docencia/iiguia/asignatu/2000/PL/2008/tema2.pdf https://dc.exa.unrc.edu.ar/staff/fbavera/papers/jtlex_cacic02.pdf https://www.infor.uva.es/~mluisa/talf/docs/labo/L3.pdf https://prezi.com/mghu3fnrdwd7/generador-de-analizadores-lexicos/ http://ccia.ei.uvigo.es/docencia/PL/doc/flex.pdf https://www.researchgate.net/profile/Juan_Vazquez33/publication/302941976_Ens enanzas_de_la_Implementacion_de_un_Analizador_Lexico/links/5733db5308ae9f 741b261a57/Ensenanzas-de-la-Implementacion-de-un-Analizador-Lexico.pdf https://repositorio.uniandes.edu.co/bitstream/handle/1992/10047/u240109.pdf? sequence=1 http://jsjuarez.com/compiladores/material/biblioteca/CapituloLexico.pdf...


Similar Free PDFs