La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Universidad Nacional de Jujuy Facultad de Ingeniería

Presentaciones similares


Presentación del tema: "Universidad Nacional de Jujuy Facultad de Ingeniería"— Transcripción de la presentación:

1 Universidad Nacional de Jujuy Facultad de Ingeniería
COMPILADORES ANALISIS LEXICO Elizabeth Reinoso

2 Objetivos Generales Conocer el funcionamiento de un analizador léxico
Entender las relaciones de éste con La tabla de símbolos La gestión de errores Aprender a especificar formalmente un analizador Conocer las distintas técnicas de implementación Eliz2abeth Reinoso:

3 Índice General Introducción Especificación de un Analizador Léxico
Implementación de un Analizador Léxico Elizabeth Reinoso:

4 INTRODUCCION Análisis Léxico Funciones Scanner Tabla de Símbolos
Gestión de Errores Funciones Tratar con la tabla de símbolos Generar tokens bajo demanda del analizador sintáctico Manejar el fichero fuente Ignorar comentarios Contabilizar posición de tokens Preprocesar macros, constantes, includes … e d a d T. Símbolo Scanner G. Errores [ID, “edad”] Elizabeth Reinoso:

5 Análisis Léxico Utilidad:
Se utiliza para la construcción de compiladores, como para interpretar el código HTML de una página web. Va leyendo del fichero de entrada los caracteres secuencialmente y los va agrupando en tokens con un significado conocido por el programador. Hace la función de preprocesador ya que se encarga de eliminar los caracteres innecesarios para el proceso de compilación Por ejemplo: elimina los espacio en blanco que hay entre palabra y palabra De las siguientes de opciones cual no es una utilidad del analisis lexico: Se utiliza para la construcción de compiladores interpreta el código HTML de una página web Va leyendo del fichero de entrada los caracteres secuencialmente y los va agrupando en tokens Hace la función de procesador ya que se encarga de eliminar los caracteres innecesarios para el proceso de compilación Falso ya q es preprocesador

6 Funciones Agrupar caracteres según categorías establecidas por la especificación del lenguaje fuente. Rechazar texto con caracteres ilegales o agrupados según un criterio no especificado Cual de las siguientes es una funcion del analisis lexico: a) Agrupar caracteres según categorías establecidas por la especificación del lenguaje objeto (falso es el lenguaje fuente) b) Agrupar caracteres según categorías establecidas por la especificación del lenguaje fuente c) Aceptar texto con caracteres legales o agrupados según un criterio especificado d) Rechazar texto con caracteres legales o agrupados según un criterio especificado C y d falso rechazar texto con caracteres ilegales o agrupados según criterio no especificado.

7 Funcionamiento La relación entre el A-L y el A-S es una relación de maestro-esclavo. El sintáctico demanda al léxico que lea el siguiente lexema y el léxico lee los caracteres necesarios del fichero de entrada hasta que consiga completar un lexema, que será entregado a su maestro. La relacion entre el analisis lexico y le analisis sintactico es: Esclavo maestro Maestro maestro Esclavo esclavo Maestro esclavo D) verdadero es maestro esclavo

8 Analizador Sintactico
Código Fuente Lee caracteres Analizador léxico Componente léxico Solicita un componente lexico Analizador Sintactico Siguiente fase

9 Funcionamiento Construir tokens validos a partir de la lectura carácter a carácter del fichero de entrada. Pasar tokens validos al analizador sintáctico Gestionar el manejo de fichero de entrada. Ignorar los espacio en blanco, comentarios y demás caracteres o tokens innecesarios para el proceso de análisis Avisar de los errores encontrados en esta fase. Llevar la cuenta del numero de líneas par incluir lo en el aviso de error. Hacer las funciones de preprocesador De las siguientes opciones cual no corresponde al funcionamiento del Analisis Lexico : a) Construir tokens validos a partir de la lectura carácter a carácter del fichero de entrada. b) Pasar token validos al analizador léxico (falso al analizador sintáctico) c) Gestionar el manejo de fichero de entrada d) Avisar de los errores encontrados en esta fase a) Ignorar los espacio en blanco, comentarios y demás caracteres o tokens innecesarios para el proceso de análisis b) Avisar de los errores encontrados en esta fase c) Llevar la cuenta del numero de líneas par incluir lo en el aviso de error d) Hacer las funciones de procesador (falso de preprocesador)

10 Funcionamiento El analizador léxico va leyendo carácter a carácter el fichero de entrada y va guardando estos caracteres en el buffer. Cuando encuentra un carácter que no le sirve para construir un token valido, se para y envía los caracteres acumulados al A-L y espera una nueva petición de lectura. Cuando recibe una nueva petición del A-S, limpia el buffer y vuelve a leer el carácter donde paro la vez anterior.

11 Funcionamiento Ejemplo: Tenemos el siguiente fichero de entrada:
int x; main() { }. Entrada Buffer Accion i Leer otro caracter n in t int Espacio en blanco Enviar token y limpiar buffer x ; Leer otro carácter….

12 Términos utilizados Patron: Es una representación lógica de una serie de agrupación de caracteres con unas características comunes. Por ejemplo, en Java el identificador de una variable puede ser cualquier combinación de letras y numero que no comience con un numero. Para describir formalmente esta definición, se utilizan las expresiones regulares. Por ejemplo: letra::=(a-zA-Z), digito::=(0-9) Identificador::=(letra)(letra|digito)

13 Términos utilizados Lexema: es cada una de las combinaciones de caracteres que encajan en la definición de un patrón. Por ejemplo: variable1, x Es decir el patrón es la definición formal y el lexema es cada una de las secuencia que pueden encajar en esa definición. Token: es el nombre que se le va a dar cada patrón definido. Este nombre se utilizara en los procesos de análisis en representación de todos los lexemas encontrados Ej: el token es como la palabra fruta y los lexemas son las frutas en concreto, como manzana, banana,

14 Especificación del analizador léxico
Para comprender el funcionamiento de una A-L, lo especificaremos como un AF, muy parecida a una AFD con las siguientes diferencia: El AFD solo dice si la secuencia de caracteres pertenece al lenguaje o no, y el DT debe leer la secuencia hasta completar un token y luego retornar el token y dejar la entrada para leer el token siguiente. En un DT cada secuencia no determinada es un error Los estados de aceptación de los DT deben ser terminales

15 Especificación de analizador léxico
En un DT, cuando se lea una carácter que no pertenezca a ninguna secuencia especificada, se debe ir a un estado especial terminal y volver el cursor de lectura de caracteres al carácter siguiente a la secuencia correcta leida.

16 Construcción de un analizador léxico
Utilizar un DT Mediante programas especiales que construyen analizadores. Identificar las palabras reservadas: 1. Hacer una tabla con todas las palabras y consultarla para cada identificador y ver si esta en la tabla o no. 2. Implementar cada una de las palabras reservadas en el DT para diferenciarlas del resto de identificadores, lo que complicaría bastante la programación. Construir el diagrama de transiciones

17 Construcción de un Analizador Lexico
Construir el diagrama de transiciones: Ejemplo: vamos a crear un analizador léxico para un lenguaje que reconoce numero enteros sin signo, la suma, incremento y el producto: a) Definir los patrones o E-R: Entero::=(“0”|“1”|“2”|“3”|“4”|“5”|“6”|“7”|“8”|“9”)+ Suma::=“+” Producto::=“*” Incremento::=“++” b) Creamos el Automata

18 Construcción de un Analizador Léxico
1 o 5 6 2 4 3 * digito otro + PRODUCTO * ENTERO INCREMENTO * SUMA

19 Construcción de un Analizador Léxico
c) Crear la tabla de transicion Consta de tantas filas como estado del automata. En cuanto a las columnas: una para numerar el estado, tantas como distintas posibles entradas, otra para señalar el token que se reconoce; una ultima para numerar los retrocesos que hay que hacer pata reconocer los lexemas.

20 Construcción de un Analizador Léxico
Entradas Estado Digito + * Otro Token Retroc. 5 2 1 Error - PRODUCTO 3 4 SUMA . INCREMENT 6 ENTERO

21 Construcción de un Analizador Léxico
Ej: tenemos la siguiente entrada: 25+5* **/5 El automata efectuara los siguientes pasos: Estado=0, Entrada=2, Estado=5, Entrada=5, Estado=5, Entrada=+, Estado=6, Token=ENTERO, Lexema=25, Retroceso=1, Estado=0, Entrada=+,Estado=2, Entrada=5, Estado=3, Token=SUMA, Lexema=+,Retroceso=1, Estado=0, Entrada=5, Estado=5, Entrada=*, Estado=6, Token=ENTERO, Lexema=5, Retroceso=1.

22 Ejercicio Diseñar un DT para reconocer los siguientes componentes lexicos: LETRAS: cualquier secuencia de una o mas letras ENTERO: cualquier secuencia de uno o mas números (si tiene mas de un numero, no deberá comenzar por 0). ASIGNAR: la secuencia =. SUMAR: la secuencia +. RESTAR: la secuencia -. IMPRIMIR: la palabra reservada print.

23 [AHO] AHO, SETHI, ULLMAN: Compiladores: Principios, técnicas y herramientas,: Addison-Wesley Iberoamericana, 1990 [GARRIDO] A. Garrido, J. Iñesta, F. Moreno y J. Pérez Diseño de compiladores. Universidad de Alicante. [CATALAN] Jacinto Ruiz Catalan Compiladores: Teoria e Implementacion. Alfaomega.


Descargar ppt "Universidad Nacional de Jujuy Facultad de Ingeniería"

Presentaciones similares


Anuncios Google