Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe:
|
|
- Esperanza Castilla García
- hace 7 años
- Vistas:
Transcripción
1 09:19 1
2 2 Temas Funciones del Analizador Léxico Manejo de buffers de entrada Especificación y reconocimiento de tokens Generación automática de Analizadores Léxicos Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe: Conocer las funciones del analizador léxico. Aprender a especificar formalmente analizadores léxicos. Conocer las distintas estrategias de implementación de analizadores léxicos.
3 3 Programa fuente Administrador de la Tabla de Símbolos Analizador Léxico Flujo de tokens o componentes léxicos Analizador Sintáctico Árbol sintáctico Analizador Semántico Árbol sintáctico Generador de Código Intermedio Representación intermedia Optimizador Representación intermedia Generador de Código Programa Objeto Manejador de errores
4 Función Principal Leer carácter por carácter de la entrada y elaborar como salida una secuencia de componentes léxicos (tokens) que utiliza el analizador sintáctico para hacer el análisis. Funciones secundarias Manejar el archivo fuente, es decir, abrirlo, leer sus caracteres y cerrarlo. Eliminar comentarios y espacios en blanco (espacios, tabuladores y fin de línea). Relacionar los mensajes de error con las líneas del programa fuente. Introducir los identificadores en la tabla de símbolos. 4
5 5 Razones para dividir en dos fases Diseño más sencillo: los símbolos que trata el analizador léxico se describen con una gramática más simple (gramática regular) que la del analizador sintáctico (gramática libre de contexto). Mejora la eficiencia: gran parte del tiempo de compilación se consume en la lectura y exploración de caracteres. Con técnicas especializadas de manejo de buffers se puede mejorar significativamente el rendimiento del compilador. Mejora la portabilidad: se pueden tener varias versiones del analizador léxico una para distintos códigos (EBCDID, ASCII,...), con el mismo analizador sintáctico.
6 6 Token (componente léxico): es un par que consiste en un nombre de token y un valor de atributo opcional. Componentes léxicos comunes en los lenguajes de programación Identificadores, Palabras claves, Operadores, Constantes, Cadena de literales, Signos de puntuación (paréntesis, coma, punto y coma, etc.) Patrón: el conjunto de cadenas de la entrada se describe mediante una regla llamada patrón asociada al componente léxico. Un patrón es una regla que describe el conjunto de lexemas. Para describir los patrones se utiliza la notación de expresiones regulares. Lexema: secuencia de caracteres en el programa fuente con lo que concuerda el patrón para un token. Los lexemas para el token que concuerdan con el patrón representan cadenas de caracteres en el programa fuente que se pueden tratar como unidad léxica.
7 7 Ejemplo: en la proposición de PASCAL Const pi = ; Componente Léxico Lexema Patrón Const Const Const id pi letra (letra/dígito)* Op-asig = = const dig + (.dig + )? (E(+/-)?dig + )? sig-punt ; ;
8 Cuando una secuencia de caracteres (por ejemplo, pi) aparece en el programa fuente se devuelve al analizador sintáctico un token que representa un identificador. Pero es necesario que el analizador léxico proporcione información adicional sobre el lexema concreto. Esta información adicional se denomina Atributos. Por ejemplo, el patrón num concuerda con las cadenas y 0, pero es indispensable que el generador de código conozca que cadena fue realmente la que se emparejo. El analizador léxico recoge información sobre los tokens en sus atributos asociados. El nombre de un token influye en las decisiones del analizador sintáctico, y el valor del atributo, en la traducción de los tokens después del analizador sintáctico. En la práctica los tokens suelen tener un solo atributo, un puntero a la tabla de símbolos, donde se guarda información del token. El puntero se convierte en el atributo. No siempre se necesita un valor de atributo, el nombre del token es suficiente para identificar al lexema. 8
9 El Analizador Léxico consumen mucho tiempo para realizar su tarea, por lo que se introducen buffers para mejorar su rendimiento. Funcionamiento El buffer se divide en dos mitades de tamaño N (N= un bloque del disco: 1024 o 4096). E = M * C * * 2 eof comienzo_lexema delentero Se leen N caracteres de entrada en cada mitad del buffer con una orden de lectura del sistema. El carácter eof marca el final del archivo fuente. Dos punteros: comienzo_lexema y delantero. Al principio los dos punteros apuntan al primer carácter del próximo lexema que hay que encontrar. El puntero delantero va avanzando hasta encontrar concordancia con patrón (un componente léxico). Una vez determinado el siguiente lexema, el puntero Delantero se coloca en su carácter derecho. Comienzo_lexema y delantero delimitan el lexema. Después de procesar el lexema (devolver componente léxico) se ubican comienzo_lexema en delantero (primer carácter del siguiente) Cuando termina una mitad, recarga la otra y continua hasta encontrar el siguiente componente léxico. 9
10 10 Algoritmo para avanzar puntero delantero: if delantero está al final de la primera mitad then begin recargar la segunda mitad; delantero: = delantero + 1 end else if delantero está al final de la segunda mitad then begin recargar la primera mitad; pasar delantero al principio de la primera mitad end else delantero := delantero + 1;
11 11 Si se utiliza el esquema anterior cada vez que se mueva el puntero delantero se debe comprobar si se ha salido de una mitad del buffer, si así ocurriera se deberá recargar la otra mitad. Excepto en los extremos de las mitades del buffer, el código anterior necesita dos pruebas para cada avance del puntero delantero. Se puede reducir estas dos pruebas a una si se amplía cada mitad del buffer para admitir un carácter centinela al final. Un centinela es un carácter especial (eof) que no existe en el programa fuente y se ubica al final de cada mitad. E = M * eof C * * 2 eof comienzo_lexema delentero
12 12 Algoritmo de recarga de buffers con centinelas: delantero: = delantero + 1: if delantero = eof then begin if delantero está al final de la primera mitad then begin recargar la segunda mitad; delantero: = delantero + 1 end else if delantero está al final de la segunda mitad then begin recargar la primera mitad; pasar delantero al principio de la primera mitad end else /* eof dentro de un buffer significa el final de la entrada */ terminar el análisis léxico end
13 13 Dos cuestiones: Cómo especificar los tokens? Cómo reconocer los tokens? Especificación Todos los elementos básicos en un lenguaje deben ser tokens, por lo tanto deben reconocerse. Los tokens se especifican con Expresiones Regulares.
14 Ejemplo: considere el siguiente fragmento gramatical prop if expr then prop / if expr then prop else prop / expr expr oprel termino / termino termino id / num Expresión Regular Componente léxico Atributo if if then then else else letra (letra/dig)* id Puntero a la T.S. dig + (.dig + )? (E(+/-)?dig + )? num Puntero a la T.S. < oprel MEN <= oprel MEI > oprel MAY >= oprel MAI = oprel IGU <> oprel DIF delim delim = blanco/tab/nueva línea 14
15 15 Como paso intermedio en la construcción de un Analizador Léxico se produce un diagrama de transición. Estos diagramas representan acciones que el analizador léxico debe llevar a cabo para obtener el siguiente token. Acciones: Getchar: leer el siguiente carácter de entrada. Devuelve (nombre-token, atributo): luego de reconocer un token, el A.L. devuelve al Analizador Sintáctico el token y el atributo. *: con asterisco se indica que se debe retroceder el puntero de entrada un símbolo a la izquierda.
16 16 ER= < / <= / > / >= / = / <> inicio 0 < 1 = 2 Devuelve (oprel,mei) > 3 Devuelve (oprel,dif) > otro 4 * Devuelve (oprel,men) 5 = 6 Devuelve (oprel,mai) = 8 otro Devuelve (oprel,igu) 7 * Devuelve (oprel,may)
17 17 ER= letra (letra/dig)* letra/dig inicio 0 letra 9 otro 10 Devuelve (obten-token, instala-id) Como las palabras claves son secuencias de letras, en vez de realizar diagramas de transición para cada palabra clave, se las considera como identificadores. Para ello, se almacenan, al comienzo, en la Tabla de Símbolos todas las palabras claves. Cuando se las reconoce se convoca a dos rutinas especiales: 1- obten-token: busca el lexema en la Tabla de Símbolos. Si el lexema es una palabra clave devuelve el correspondiente nombre de token, sino, devuelve id. 2- instala-id: examina la Tabla de Símbolos y si encuentra el lexema marcado como una palabra clave devuelve 0. Si se encuentra el lexema y es una variable del programa se devuelve un puntero a la Tabla de Símbolos. Si el lexema no se encuentra en la Tabla de Símbolos se instala como una variable y se devuelve un puntero a la entrada recientemente creada.
18 ER=dig + (.dig + )? (E(+/-)?dig + )? dig inicio 0 dig 11 otro. 12 * Devuelve (num, instala-num) dig dig otro * Devuelve (num, instala-num) E E dig 16 +/- 17 dig dig otro * Devuelve (num, instalanum) instala-num: cuando llega a cualquier estado de aceptación devuelve el nombre del token nun y llama a la rutina instala-id. Esta rutina introduce el lexema en una tabla de números y devuelve un puntero a la entrada creada. 18
19 19 delim= blanco/tab/nueva línea eb = delim + delim inicio 0 delim 20 otro 21 * Cuando el Analizador Léxico llega al estado de aceptación 21 no devuelve un nombre de token ni un atributo al Analizador Sintáctico.
20 20 1-Tabla de Transiciones: el Analizador Léxico recorre la tabla con un bucle ejecutando la sentencia: Estado := TablaTransiciones [ Estado, Entrada ]; s TablaTransición
21 21 De acuerdo a esta estrategia de implementación es necesario disponer de una variable de estado para codificar el estado actual y una batería de casos que describen la lógica de transición del autómata finito determínista. letra/dig 0 letra 1 otro 2
22 22 Hay pocos errores que el analizador léxico puede detectar ya que tiene una visión muy restringida de un programa fuente. Los errores que se detectan en esta fase ocurren cuando el Analizador Léxico no puede proceder, ya que ningún patrón para los tokens coincide con algún prefijo del resto de la entrada. Estrategias de recuperación Modo de pánico. Eliminar un carácter del resto de la entrada. Sustituir un carácter por otro. Transponer dos caracteres adyacentes.
23 23 Existen muchas herramientas para la generación automática de AL. Las más conocidas: Lex Flex Lex: Generador de analizadores léxicos a partir de expresiones regulares que definen el comportamiento del analizador. Genera código en distintos lenguajes de programación, como C. Esquema de funcionamiento de LEX: Especificaciones léxicas LEX yylex
24 24 Esquema de un archivo LEX: (zona de declaraciones) [código C o macros] %% (zona de reglas y acciones) %% (zona de rutinas de usuario) Zona de declaraciones: declaraciones necesarias como: declaración de variables, funciones, definiciones regulares. Ejemplo: Zona de declaraciones %{ #include <stdio.h> int y; %} digito ( ) letraab (a b)
25 Zona de reglas y acciones P 1 {acción 1 } P 2 {acción 2 }... P n {acción n } Donde p i es una expresión regular y cada acción es un fragmento del programa que describe cual será la acción del Analizador Léxico cuando el patrón p i concuerde con un lexema. Ejemplo %{ #include <stdio.h> int cuenta=0; %} digito ( ) %% {digito} {++cuenta} %% Zona de rutinas de usuario: contiene las rutinas auxiliares que pueden necesitar las acciones. 25
26 26 Gramáticas Regulares G = (V N, V T, P, S) while (a > b) do a:= a + 1; Lenguajes Regulares Autómatas Finitos Expresiones Regulares Obtén siguiente token Analizador Léxico token Leer carácter por carácter de la entrada y elaborar como salida una secuencia de tokens que utiliza el analizador sintáctico para hacer el análisis. A =(Q,,, q 0, F) Se puede definir un lenguaje comenzando con un número finito de palabras y aplicando operaciones regulares sobre ellas. Este método se conoce como expresiones regulares. Herramientas para la construcción automática de analizadores léxicos como [Lex] [Flex] [JFlex]. Se basan en la definición de una colección de reglas patrón-acción.
27 27 Alfred Aho, Mónica Lam, Ravi Sethi, Jeffrey Ullman. Compiladores. Principios, técnicas y herramientas. Pearson. Addison Wesley. 2 da. Edición (2008). Kenneth C. Louden. Construcción de compiladores: principios y práctica. International Thomson Editores (2004).
Compiladores e intérpretes Análisis Léxico I. Análisis Léxico I
Análisis Léxico I Profesor: Eridan Otto Análisis Léxico I Introducción Funciones Tokens,Patrones y Lexemas Reconocimiento de tokens Implementación de un AL 1 Análisis léxico: Introducción En esta unidad
Más detalles16 Análisis sintáctico I
2 Contenido Recordando la estructura de un compilador Recordando el análisis léxico l análisis sintáctico Comparación con el análisis léxico l Rol del Parser Lenguajes de programación Gramáticas structura
Más detallesPROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR:
UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS PROGRAMA DE LABORATORIO CÓDIGO: 777 CRÉDITOS: 4 NOMBRE CURSO: ESCUELA: PRE-REQUISITO: Organización de Lenguajes y Compiladores
Más detallesGeneración de Código Intermedio
Generación de Código Intermedio Programación II Margarita Álvarez Generación de código intermedio Con la generación de código intermedio se inicia la tarea de síntesis. Aunque un programa fuente se puede
Más detallesSeminario de introducción a Flex
Seminario de introducción a Flex David Portolés Rodríguez dporto@unizar.es Lenguajes y Sistemas Informáticos Dpto. de Informática e Ing. de Sistemas Universidad de Zaragoza Qué es Flex? Flex es un una
Más detallesProcesadores de lenguaje Tema 2 Análisis léxico
Procesadores de lenguaje Tema 2 Análisis léxico Departamento de Ciencias de la Computación Universidad de Alcalá de Henares Resumen del tema Objetivo: comprender la estructura, organización y funcionamiento
Más detallesCOMPILADORES E INTERPRETES
COMPILADORES E INTERPRETES Análisis semántico: Estudia el significado de la sentencia Procesadores de lenguaje: Convierte un programa fuente hecho en un lenguaje fuente a un programa objeto hecho en un
Más detallesLenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1
Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Análisis Sintáctico Parte I 1 Introducción El analizador sintáctico recibe una secuencia de tokens y decide si la secuencia está correcta o no.
Más detallesEl proceso del Análisis Léxico
El proceso del Análisis Léxico El proceso de análisis léxico se refiere al trabajo que realiza el scanner con relación al proceso de compilación. El scanner representa una interfaz entre el programa fuente
Más detallesTeoría de Autómatas y Lenguajes Formales, IS17 Ingeniería Técnica en Informática de Sistemas. Práctica 1: Introducción al Analizador Léxico FLEX
Teoría de Autómatas y Lenguajes Formales, IS17 Ingeniería Técnica en Informática de Sistemas Práctica 1: Introducción al Analizador Léxico FLEX Enunciado: El objetivo de esta práctica consiste en aprender
Más detallesTema 5 Tabla de Símbolos
Traductores, Compiladores e Intérpretes 1 Tema 5 También se la llama tabla de nombres o tabla de identificadores y tiene dos funciones principales: - Efectuar chequeos semánticos. - Generación de código.
Más detallesUNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3.
UNIVRSIDAD NACIONAL D DUCACIÓN A DISTANCIA scuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 3 Parte I Análisis Sintáctico Javier Vélez Reyes jvelez@lsi.uned.es Objetivos
Más detallesElementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Más detallesLEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.
LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.
Más detallesTema 3: Gramáticas regulares. Teoría de autómatas y lenguajes formales I
Tema 3: Gramáticas regulares Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación. Addison
Más detallesUNIDAD V. Analisis Semantico. 5.1 Introduccion. Analizador Semántico. Verifica que el significado de las construcciones del lenguaje tengan sentido.
UNIDAD V Analisis Semantico 5.1 Introduccion Analizador Semántico. Ejemplo: Verifica que el significado de las construcciones del lenguaje tengan sentido. Tareas del analizador semántico: 1) Comprobación
Más detallesLas Etapas de la Compilación
Las de la Compilación El en la Compilación Universidad de Cantabria Outline 1 El Problema 2 Las y el Qué pasos son necesarios dar para hallar la estructura de un programa? En qué pasos podemos dividirlos
Más detallesGenerador de analizadores léxicos FLEX
Generador de analizadores léxicos FLEX Procesadores de Lenguajes 4 o Informática PL curso 2008-2009 (CCIA) CCIA Octubre 2008 PL 0809 (CCIA) Introducción a FLEX Octubre-2008 1 / 12 Uso de FLEX FLEX: traduce
Más detallesProcesadores de lenguaje Tema 6 La tabla de símbolos
Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de
Más detallesUnidad II: Análisis semántico
Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico
Más detallesUNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 4
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 4 Análisis Sintáctico Ascendente Javier Vélez Reyes jvelez@lsi.uned.es Objetivos
Más detallesAnalista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final
Trabajo Final 1 Objetivo Comprender (en gran parte) un programa desarrollado en: C++ (Core ) Generador de código / Ejecución de comandos Flex (Lex) Lexer Genera un Analizador Léxico en C http://en.wikipedia.org/wiki/lex_(software)
Más detallesConceptos básicos sobre gramáticas
Procesamiento de Lenguajes (PL) Curso 2014/2015 Conceptos básicos sobre gramáticas Gramáticas y lenguajes Gramáticas Dado un alfabeto Σ, un lenguaje es un conjunto (finito o infinito) de cadenas de símbolos
Más detalles12 La herramienta LEX
2 Contenido La herramienta Lex Esquema de un fuente en Lex Zona de definiciones Zona de reglas Zona de rutinas del usuario Archivo de salida (lex.yy.c) Copilar un fuente de Lex Opciones estándar Depuración
Más detallesTEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Ingeniería Técnica en Informática de Sistemas Segundo curso Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba
Más detallesMETACOMPILADOR DIDÁCTICO GENERADOR DE CÓDIGO JAVA
METACOMPILADOR DIDÁCTICO GENERADOR DE CÓDIGO JAVA Erick Leonel Rico Preciado 1, Ana Cristina Bueno Campos 1, José Gerardo Carpio Flores 2, Ruth Sáez de Nanclares Rodríguez 2, Martha Alicia Rocha Sánchez
Más detallesTema 2 Introducción a la Programación en C.
Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes
Más detallesTema: Análisis Sintáctico
Compiladores. Guía 3 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Sintáctico Contenido En esta guía se abordarán los conceptos pertenecientes al componente de análisis
Más detallesToda copia en PAPEL es un "Documento No Controlado" a excepción del original.
S U P E RIO R DE MISANTLA Apartado: 7.1 Copia No. Código:PD-SCD-1016 Versión No.: 02 Hoja : 2 de 12 4.- COMPETENCIAS A DESARROLLAR 4.1 Competencias Específicas: Diseña mediante el uso de reglas semánticas
Más detallesALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y
Más detalles7.3. Estructura de un programa
TEMA 7 ALGORITMOS Y PROGRAMAS. ESTRUCTURA DE UN PROGRAMA 7.1. Algoritmos 7.2. Compilación 7.3. Estructura de un programa 7.1. Algoritmos Objetivo: Resolver problemas mediante computadoras (usando el lenguaje
Más detallesArchivo ASM. Es el documento que contiene el código fuente del programa.
ESTRUCTURA GENERAL Todo programa en ensamblador debe ser generado con extensión ASM. Al ser ensamblado se generan archivos en código objeto (OBJ) para reconocer los mnemónicos como códigos de operación.
Más detallesJavaCC Parte I. 1 Compiladores / Guía VII / Ciclo Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores.
1 Compiladores / Guía VII / Ciclo 02-2016 Centro de Investigación y Transferencia de Tecnología JavaCC Parte I Contenido Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores En la presente
Más detallesLenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación
COMPILADORES Unidad I: Introducción al proceso de compilación Flor Prof. Flor Narciso GIDyC-Departamento de Computación LABSIULA-Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de
Más detallesUnidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas
Unidad V Análisis Semántico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Analizador semántico 5.2 Verificación de tipos en expresiones. 5.3 Conversión de tipos. 5.4 Acciones agregadas en un analizador sintáctico
Más detallesLaboratorio de Arquitectura de Redes. Entrada y salida estándar
Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada
Más detallesInformática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida estándar V1.3 Autores Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato:
Más detallesProgramación en Lenguaje C
Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo
Más detallesTema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I
Tema 4: Gramáticas independientes del contexto Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación.
Más detallesFundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002
Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Ejercicios Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto
Más detallesÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.
ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. Los nodos terminales (nodos hojas) están rotulados por los
Más detallesUnidad IV Análisis Sintáctico. M.C. Juan Carlos Olivares Rojas
Unidad IV Análisis Sintáctico M.C. Juan Carlos Olivares Rojas Agenda 4.1 Introducción a las Gramáticas libres de contexto y árboles de derivación. 4.2 Diagramas de sintaxis. 4.3 Precedencia de operadores.
Más detallesTEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:
Más detallesElementos léxicos del lenguaje de programación C
Elementos léxicos del lenguaje de programación C Elementos léxicos de los lenguajes de programación (tokens) Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices
Más detallesProcesadores de lenguaje Tema Análisis sintáctico (Parte I)
Procesadores de lenguaje Tema 3 Análisis sintáctico (Parte I) Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Introducción Conceptos básicos Tipos de analizadores Gramáticas independientes
Más detallesPROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4
PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4 En esta práctica trabajaremos con ANTLR a nivel semántico utilizando gramáticas con atributos. ANTLR permite implementar con facilidad los dos modelos
Más detallesSSL Guia de Ejercicios
1 SSL Guia de Ejercicios INTRODUCCIÓN A LENGUAJES FORMALES 1. Dado el alfabeto = {a, b, c}, escriba las palabras del lenguaje L = {x / x }. 2. Cuál es la cardinalidad del lenguaje L = {, a, aa, aaa}? 3.
Más detallesLABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison
LABORATORIO DE PROCESADORES DE LENGUAJE Curso: 2008-2009 Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison Planteamiento del problema En esta práctica se trata de realizar, mediante el
Más detallesTema 4: Análisis sintáctico ascendente. Análisis sintáctico ascendente: un ejemplo
Tema 4: Análisis sintáctico ascendente Procesamiento de enguajes Dept. de enguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de enguajes Tema 4: Análisis sintáctico ascendente 1 / 21
Más detallesPROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07
PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal
Más detallesUNIVERSIDAD NACIONAL DE JUJUY FACULTAD DE INGENIERÍA APUNTES DE CÁTEDRA EL METACOMPILADOR FLEX
UNIVERSIDAD NACIONAL DE JUJUY FACULTAD DE INGENIERÍA Compiladores APUNTES DE CÁTEDRA EL METACOMPILADOR FLEX 1. Qué es y qué hace FLEX? La característica más destacable de las herramientas que vamos a utilizar
Más detallesCapítulo 9. Introducción a los lenguajes formales. Continuar
Capítulo 9. Introducción a los lenguajes formales Continuar Introducción Un lenguaje es un conjunto de símbolos y métodos para estructurar y combinar dichos símbolos. Un lenguaje también recibe el nombre
Más detallesSe guardan en archivos con extencion c y los cabezales con extension h
Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767
Más detallesLenguaje de programación C. Introducción
Lenguaje de programación C Introducción 1 Elementos del lenguaje C Colección de funciones Estas funciones contienen declaraciones, sentencias, expresiones y otros elementos que en conjunto indican a la
Más detallesEstructuras de Datos Declaraciones Tipos de Datos
Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación
Más detalles41 Jornadas Argentinas de Informática Concurso de Trabajos Estudiantiles 2012. Categoría: Teoría de la Computación, Modelos Formales y Compiladores.
41 Jornadas Argentinas de Informática Concurso de Trabajos Estudiantiles 2012 Categoría: Teoría de la Computación, Modelos Formales y Compiladores. Título: Implementación de un compilador de C- -. Autor:
Más detallesProcesadores de lenguaje Tema 1: Introducción a los compiladores
Procesadores de lenguaje Tema 1 Introducción a los compiladores Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá Resumen del tema Traductores Estructura
Más detallesCUP. Diseño de compiladores. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP 20/04/2014
CUP Diseño de compiladores CUP Cup es un generador de analizadores sintácticos LALR Recibe de entrada un archivo con la estructura de la gramática y su salida es un parser escrito en Java Manual oficial:
Más detallesFundamentos de programación
Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador
Más detallesEn este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.
El primer objetivo de un programa informático es el manejo de datos. Un dato es toda aquella información que se puede tratar en un programa informático. En este artículo vamos a conocer los tipos de datos
Más detallesTodo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
Más detallesTema 2 Conceptos básicos de programación. Fundamentos de Informática
Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis
Más detallesPROGRAMA INSTRUCCIONAL AUTOMATAS Y LENGUAJES FORMALES
UNIVERSIDAD FERMIN TORO VICE RECTORADO ACADEMICO UNIVERSIDAD FACULTAD DE INGENIERIA ESCUELA DE MANTENIMIENTO MECÁNICO ESCUELA DE TELECOMUNICACIONES ESCUELA DE ELÉCTRICA ESCUELA DE COMPUTACIÓN PROGRAMA
Más detallesCompiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz
Compiladores y Lenguajes de Programación Maria de Guadalupe Cota Ortiz Organizaciones que rigen las normas para estandarización de Lenguajes de Programación IEEE (Instituto de Ingenieros Eléctricos y Electrónicos)
Más detallesProcesadores de lenguaje Tema Análisis sintáctico (Parte II)
Procesadores de lenguaje Tema 3 Análisis sintáctico (Parte II) Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Análisis sintáctico ascendente
Más detallesMétodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo
TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para
Más detallesGenerador de analizadores sintácticos BISON
Generador de analizadores sintácticos BISON PROCESADORES DE LENGUAJES 4 o Informática http://ccia.ei.uvigo.es/docencia/pl noviembre-2008 2008 ccia PL 1. Introducción Traduce la especificación de una gramática
Más detallesFLEX: Un generador de analizadores léxicos. AT&T Lex (más común en UNIX) MKS Lex (MS-Dos) Flex Abraxas Lex Posix Lex ScanGen JLex...
Como hemos visto, el paso de una expresión regular a un AF se puede hacer de manera automatizada Existen varias herramientas que relizan dicho trabajo Generadores de analizadores léxicos AT&T Lex (más
Más detallesTema V Generación de Código
Tema V Generación de Código Una vez que se ha realizado la partición HW/SW y conocemos las operaciones que se van a implementar por hardware y software, debemos abordar el proceso de estas implementaciones.
Más detallesProcesadores de Lenguaje
Procesadores de Lenguaje Generación de código intermedio Cris%na Tirnauca Domingo Gómez Pérez DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia: CreaIve Commons BY NC SA
Más detallesTema 2. Análisis lexicográfico
Traductores, Compiladores e Intérpretes 1 Tema 2. Análisis lexicográfico Este capítulo estudia la primera fase de un compilador, es decir su análisis lexicográfico, o más concisamente análisis léxico.
Más detallesUniversidad Nacional del Santa Facultad de Ingeniería E.A.P. de Ingeniería de Sistemas e Informática TEORIA DE COMPILADORES ANALISIS SINTACTICO
ANALISIS SINTACTICO Análisis Sintáctico Descendente Análisis Sintáctico Ascendente EOF y α S (axioma inicial). 2. : la cadena de entrada no es válida. 3. : consiste en aplicar
Más detallesAlgoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Más detallesImplementación de una metodología de reparación de errores sintácticos para el generador de analizadores sintácticos GNU Bison
Implementación de una metodología de reparación de errores sintácticos para el generador de analizadores sintácticos GNU Bison Memoria de Título Claudio Saavedra Facultad de Ingeniería Universidad de Talca
Más detallesRELIPMOC: Construcción de un Compilador Básico haciendo uso de las herramientas JLex y CUP Semestre 2005-1
RELIPMOC: Construcción de un Compilador Básico haciendo uso de las herramientas JLex y CUP Semestre 2005-1 Mary Carmen Trejo Ávila mary@ciencias.unam.mx LDNL, UNAM 2 de septiembre de 2004 Índice 1. Introducción
Más detallesIntroducción a PL/SQL
Introducción a PL/SQL Grupo de Ingeniería del Software y Bases de Datos Departamento de Lenguajes y Sistemas Informáticos Universidad de Sevilla noviembre 2011 Objetivos de este tema Conocer PL/SQL. PL/SQL
Más detallesTeoría de la Computación
Teoría de la Computación Grado en Ingeniería Informática Prácticas de Laboratorio Profesor: Gregorio de Miguel Casado * email: gmiguel@unizar.es Dpto. de Informática e Ingeniería de Sistemas Escuela de
Más detallesConvertir un AFND a un AFD
Convertir un AFND a un AFD Existe una equivalencia entre los AFD y AFN, de forma que un autómata M es equivalente a un autómata M' si L(M) ) L(M'). Ejemplo: Los autómatas de la siguiente figura son equivalentes.
Más detallesCAPITULO 4: ENTRADA Y SALIDA DE DATOS.
CAPITULO 4: ENTRADA Y SALIDA DE DATOS. 1. INTRODUCCIÓN. Hemos visto que el lenguaje C va acompañado de una colección de funciones de biblioteca que incluye un cierto número de funciones de entrada/salida.
Más detallesTema 7. Generación de código
Departamento de Tecnologías de la Información Tema 7 Generación de código Ciencias de la Computación e Inteligencia Artificial Índice 7.1 Visión general 7.2 Código de tres direcciones 2 Índice 7.1 Visión
Más detallesTema: Autómatas de Estado Finitos
Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Autómatas de Estado Finitos Contenido En esta guía se aborda la aplicación de los autómatas en el campo de
Más detallesAutómatas Deterministas. Ivan Olmos Pineda
Autómatas Deterministas Ivan Olmos Pineda Introducción Los autómatas son una representación formal muy útil, que permite modelar el comportamiento de diferentes dispositivos, máquinas, programas, etc.
Más detallesPrincipios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario
Más detallesIII. Generación de Código orientado a objetos
III. Generación de Código orientado a objetos UNIDAD III Aspectos fundamentales Del código orientado a objetos. MÓDULOS DE CÓDIGO 1 DE FORMULARIO Almacenan el código en VB 2 ESTÁNDAR 3 DE CLASE Contiene
Más detallesElementos léxicos del lenguaje de programación Java
Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores
Más detallesINDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación
INDICE Prologo XI Capitulo 1. Algoritmos y programas 1.1. Configuraciones de una computadora 1 1.2. Lenguajes de programación 2 1.3. Resolución de problemas 1.3.1. Fase de resolución del problema 3 1.3.1.1.
Más detallesCarrera: SCC - 0425 4-2-10. Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: Horas teoría-horas práctica-créditos Programación de sistemas Ingeniería en Sistemas Computacionales SCC - 0425 4-2-10
Más detallesContenido. Capítulo 1. Teoría de conjuntos. 1. Capítulo 2. Lenguaje. 39. Capítulo 3. Lenguajes formales. 55
Contenido Capítulo 1. Teoría de conjuntos. 1 1.1 Conjuntos.... 3 1.1.1 Definiciones básicas.... 3 1.1.2 Operaciones sobre conjuntos.... 6 1.1.3 Diagrama de Venn.... 7 1.1.4 Álgebra de conjuntos.... 7 1.2
Más detallesEl proceso de diseño. Análisis de tareas
El proceso de diseño Diseño Iteración: Prototipado y Evaluación Técnicas de prototipado Técnicas de evaluación Definir tareas: Análisis de tareas: HTA: Análisis jerárquico de tareas : Diagramas de secuencias
Más detallesSentencias o instrucciones en Visual BASIC
Tecnología a de la Informació Sentencias o instrucciones en Visual BASIC REM Tecnología a de la Informació REM es una sentencia no ejecutable y permite introducir comentarios en los programas. A esta práctica
Más detallesIntroducción a los generadores de analizadores léxicos y sintácticos FLEX y BISON: Implementación de una pequeña calculadora
Introducción a los generadores de analizadores léxicos y sintácticos FLEX y BISON: Implementación de una pequeña calculadora Objetivo Con la ayuda de FLEX, el generador automático de analizadores léxicos,
Más detallesAnalizador Léxico. UCR ECCI CI-2414 Recuperación de Información Prof. M.Sc. Kryscia Daviana Ramírez Benavides
UCR ECCI CI-2414 Recuperación de Información Prof. M.Sc. Kryscia Daviana Ramírez Benavides Aspectos Generales Un analizador léxico es la especificación y el diseño de programas que ejecuten las acciones
Más detallesFunciones Definición de función
Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas
Más detallesTEMA 2: ANÁLISIS LÉXICO-SINTÁCTICO
1 TEMA 2: ANÁLISIS LÉXICO-SINTÁCTICO OBJETIVO Dar respuesta a las siguientes preguntas: Qué es el análisis léxico-sintáctico de un lenguaje? Cómo se diseña y construye un analizador léxico-sintáctico?
Más detallesGUÍA BÁSICA DE FLEX Y BISON
GUÍA BÁSICA DE FLEX Y BISON PRÁCTICAS COMPILADORES 4º INGENIERÍA INFORMÁTICA / 1º MÁSTER EN INFORMÁTICA Curso 2011/2012 LEX/FLEX: GENERADOR DE ANALIZADORES LÉXICOS 1. Introducción Lex es una de las herramientas
Más detallesUnidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas
Unidad I Introducción a la programación de Sistemas M.C. Juan Carlos Olivares Rojas Agenda 1.1 Qué es y que estudia la programación de sistemas? 1.2 Herramientas desarrolladas con la teoría de programación
Más detallesCompiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.
Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Sintaxis Define la estructura del lenguaje Ejemplo: Jerarquía en
Más detallesManual de turbo pascal
Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de
Más detallesNormas de estilo para la codificación de programas
Normas de estilo para la codificación de programas v.1.0 11/09/97 12.17 Departamento de Informática e Ingeniería de Sistemas Centro Politécnico Superior Universidad de Zaragoza María de Luna 3 50015, Zaragoza
Más detallesProceso de información en la computadora
1.1 Introducción La computadora no solamente es una maquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados.
Más detalles