Análisis Léxico Área Software de Base.

Slides:



Advertisements
Presentaciones similares
Clasificación de los compiladores
Advertisements

Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes
Prof. Ing.Maria Rosa Damaso Rios
Análisis Lexicográfico
¿Compilador ? Es un traductor que convierte un texto escrito en un lenguaje fuente y lo traduce a un programa objeto en código máquina.
Teoría de Autómatas y Compiladores
TIPOS DE GRAMATICAS JERARQUIAS DE CHOMSKY
¿Cómo hacer para que una máquina comprenda el LN?
Facultad de Ciencias de la Computación
Analizadores Sintácticos Descendentes Predictivos
Unidad 2. Análisis léxico
Unidad 1. Introducción al proceso de compilación.
Teoría de lenguajes y compiladores
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
Traducción dirigida por la Sintaxis
ANALISIS SINTACTICO DESCENDENTE
Teoría de lenguajes y compiladores
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Sistemas Evolutivos Introduccion.
Programación de sistemas
TRADUCTOR DE UN PROGRAMA
CONDICIONES DE LA MATERIA
M.C. Meliza Contreras González
Análisis sintáctico LR: SLR (LR simple)
Teoría de lenguajes y compiladores
FUNDAMENTOS DE PROGRAMACION
ANALISIS SINTACTICO Parte I
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
Clasificación de Gramáticas y Manejo de Errores
Compiladores (23/04/ :35) Compiladores Tema 3 Análisis Lexicográfico Scanners.
Universidad Nacional de Jujuy Facultad de Ingeniería
Tema 6. Conceptos básicos de programación (Repaso) Prof. María Alejandra Quintero Informática Año 2013.
Tema 2 Análisis Léxico.
Procesadores de Lenguajes
Todo traductor esta basado en una gramática para el lenguaje fuente. Todo traductor esta basado en una gramática para el lenguaje fuente. Una gramática.
Lenguajes regulares Teoría del Autómata.
Teoría de lenguajes y compiladores Analizadores lexicográficos
Programación de Sistemas
Compiladores e intérpretes
Tema 1. Introducción y Conceptos Básicos
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
COMPILADORES DIANA ROCIO OLAYA MESA.
Implementación del analizador léxico Prácticas EDI - © Juan Ramón Pérez1.
INFORMATICA VII (Programación e implementación de sistemas)
Teoría de Autómatas y Lenguajes Formales Informática Técnica de Gestión ESCUELA SUPERIOR DE INFORMATICA Universidad de Castilla-La Mancha Tema 1. Introducción.
UNIVERSIDAD VALLE DEL MOMBOY FACULTAD DE INGENIERIA ESCUELA DE COMPUTACIÓN CATEDRA: EDUMATICA Br: JENNY CORONADO C.I
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Teoría de lenguajes y compiladores
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
Preposición: suma= var1 + var2 + 10; Análisis Léxico El analizador léxico lee los caracteres del programa fuente, y verifica que correspondan a una secuencia.
PRINCIPIOS DE PROGRAMACIÓN
El proceso de compilación
Diagrama de Transición de Estado
Simulación de un AFD Conversión de un AFND a un AFD.
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
CENTRO UNIVERSITARIO UAEM TEXCOCO INGENIERÍA EN COMPUTACIÓN
Unidad 2 Lenguajes, Expresiones Regulares, Autómatas
Autómatas y Compiladores. Primera Semana. Ricardo Vargas Del Valle A35469.
Sintaxis y Semántica. S.Takahashi Fases en el proceso de análisis de lenguajes Lexer Parser caracteres tokensrespuesta.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Transcripción de la presentación:

Análisis Léxico Área Software de Base

Análisis Léxico El papel del analizador léxico Es la primera fase del programa traductor Es el único que gestiona el archivo de entrada Es el que lee los caracteres del programa fuente y construye símbolos intermedios, los cuales serán la entrada del analizador sintáctico ¿Por qué separar el análisis léxico del sintáctico? El diseño de las partes posteriores dedicadas al análisis queda simplificada Con fases separadas se pueden aplicar técnicas específicas y diferenciadas para cada fase Se facilita la portabilidad Los componentes léxicos se especifican mediante expresiones regulares que generan lenguajes regulares más fáciles de reconocer que los LLC(Lenguajes Libres de Contexto)

Errores Léxicos Utilizar caracteres que no pertenecen al alfabeto del lenguaje Encontrar una cadena que no coincide con ninguno de los patrones de los tokens posibles. Posibles acciones que el analizador léxico puede llevar a cabo para recuperarse de los errores Ignorar los caracteres no válidos hasta formar un token según los patrones dados Borrar los caracteres extraños Insertar un caracter que pudiera faltar Reemplazar un caracter presuntamente incorrecto por uno correcto Conmutar las posiciones de dos caracteres adyacentes

Analizador sintáctico Análisis Léxico Funcionamiento del analizador léxico Su principal función es procesar la cadena de caracteres y devolver pares (token, lexema). Generalmente debe funcionar como una subrutina del analizador sintáctico. token Programa fuente Analizador léxico Analizador sintáctico Tabla de símbolos Operaciones que realiza el analizador léxico Procesador léxico del programa fuente e identificación de tokens y de sus lexemas Manejo del archivo del programa fuente Ignorar comentarios y en los lenguajes de formato libre, ignorar los separadores

Análisis Léxico Cuando se produzca una situación de error será el analizador léxico el que sitúe el error en el programa fuente Preproceso de macros, definiciones, constantes y órdenes de inclusión de otros ficheros El analizador léxico debe intentar leer siempre el token más largo posible Especificación de un analizador léxico Términos comunes en esta fase: token, patrón, lexema, atributos Token: nombre que se le da al componente léxico Lexema: secuencia de caracteres de la entrada que corresponde a un token. Patrón(ER): forma compacta de describir conjuntos de lexemas

Token Lexema Patrón (ER) Identificador cont, i, aux Let(Let|Dig)* entero 178, -675 SignoDigDig* reservada for

Bautizo y forma abreviada de ER Bautizo: consiste en asignar nombre a determinadas expresiones regulares. Ejemplo dig  0|1|3|4|5|6|7|8|9 let  a|b|c|d|e|f ….. signo +|-|  Forma abreviada: […] expresa elección en un conjunto de elementos del alfabeto [a e i o u]  a|e|i|o|u

Diagrama de Transiciones (DT) Diferencias entre un DT y un AFD Un AFD sólo dice si la cadena de caracteres pertenece al lenguaje o no; un DT debe funcionar como un analizador léxico, debe retornar el token leído y debe dejar el buffer de entrada listo para el siguiente llamado Un DT no puede tener estados de absorción ni de error De los estados de aceptación de un DT no deben salir transiciones En el caso de las tiras no específicas, ncesitamos otro estado al que ir cuando se lea un caracter que no pueda formar parte del patrón (caracteres de retroceso, se indican con un * o más dependiendo del número de caracteres de retroceso) Ejemplo: Reconocedor de enteros sin signo [0-9] [0-9] [0-9] [0-9] otro * 1 1 2 Num_entero DT AFD

Atributos de los componentes léxicos Cuando concuerda con un lexema más de un patrón el AL debe proporcionar información adicional sobre el lexema (atributos) p/e while es una palabra reservada pero también concuerda con el patrón de identificador. En la práctica los componentes léxicos suelen tener un solo atributo, un apuntador a la entrada de la tabla de símbolos donde se guarda información sobre los componentes léxicos. Identificación de palabras reservadas Todas las palabras reservadas responden al mismo patrón que los identificadores, pero son tokens diferentes a los identificadores. Enfoques: Buscar una solución práctica Integrar los DT de las PR en la máquina reconocedora

Análisis Léxico Primera Solución: Iniciar la tabla de símbolos con todas las palabras reservadas, PR, (por orden alfabetico) Cuando encuentra un token id, ir a la tabla donde se encuentran las PR y revisar si el token es una PR, si la encuentra entonces el token es una PR; sino la encuentra, entonces el token es un identificador el cual será añadido a la tabla de símbolos Segunda solución: Se utilizarán formalmente expresiones regulares y diagramas de transición. Problema: una PR puede ser un prefijo de un ID Ejemplo: L|D L-’i’ * Id otro 1 2 L=letra D=digito otro=Caracteres-{L,D} ‘i’ ‘f’ otro * PR_if 3 4 5 L-‘f’|D otro DT que revisa la PR ‘if’ L|D a 1 a 1 a 2

Tabla de transición Forma de implementar el DT Entradas Estado [0-9] 1 2 3 [0-9] otro * Num DT 0 estado de error Entradas Estado [0-9] otro token retroceso 1 2 - 3 Num while ((Estado!= Final) || Error) Estado=TablaTransiciones[Estado, Entrada];

Análisis Léxico Tabla de transición ‘i’ ‘f’ L-‘f’|D a 3 a 2 1 2 3 L-’i’ L|D otro * Id 4 ‘i’ 5 6 ‘f’ a 2 L-‘f’|D a 3 PR_if Tabla de transición Ejemplo: Obtener la tabla de transición para el DT anterior Entradas Estado ‘i’ ‘f’ L D otro token retroceso 1 4 2 - 3 Id 5 6 PR_if while ((Estado!= Final) || Error) Estado=TablaTransiciones[Estado, Entrada];

Análisis Léxico Implementación de analizadores léxicos Usar un generador automático de analizadores léxicos (LEX) Ventaja: comodidad y rapidez en el desarrollo Desventaja: ineficiencia del analizador resultante y mantenimiento complicado 2. Escribir el AL en un lenguaje de alto nivel Ventaja: más eficiente Desventaja: hay que hacerlo todo 3. Hacerlo en lenguaje ensamblador Ventaja: máxima eficiencia Desventaja: muy complicado de desarrollar