Teoría de la Computación

Documentos relacionados
Teoría de la Computación

Práctica 4 Manejo Avanzado de Bison

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática

Generador de analizadores léxicos FLEX

Prácticas de Lenguajes, Gramáticas y Autómatas

Lenguajes, Gramáticas y Autómatas Conceptos

Unidad 4. Autómatas de Pila

Procesadores de Lenguaje

Tema 3.- Predicados y sentencias condicionales

Lenguajes y Gramáticas

Expresiones regulares y distancia de edición.

Analizador Léxico. UCR ECCI CI-2414 Recuperación de Información Prof. M.Sc. Kryscia Daviana Ramírez Benavides

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 2

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR:

Expresiones regulares, gramáticas regulares

Lenguajes (gramáticas y autómatas)

DOMINE PHP Y MYSQL por LOPEZ QUIJADO Isbn Indice del Contenido INTRODUCCIÓN PARTE I. REDES E INTERNET

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo

Tema: Autómata de Pila

Generador de analizadores sintácticos BISON

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

Guía práctica de estudio 06: Lenguaje binario

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

PHP: Lenguaje de programación

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

ÍNDICE INTRODUCCIÓN...15

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

En matemáticas el concepto de conjunto es considerado primitivo y no se da una definición de este, por lo tanto la palabra CONJUNTO debe aceptarse

Ficha de Aprendizaje N 1

Autómatas de Pila y Lenguajes Incontextuales

Universidad de Costa Rica. Escuela de Ciencias de la Computación e Informática CI-2700 TÓPICOS ESPECIALES - COMPILADORES.

Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos o negativos), sin decimales. Incluye a los naturales.

Teoría de Autómatas y Lenguajes Formales LEX BISON Dr. Eric Jeltsch F. Introducción para los laboratorios y actividades relacionadas.

Fundamentos de Programación 2017-I

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

UNIDAD 8: SUCESIONES Y SERIES

UNA ECUACIÓN es una igualdad de dos expresiones algebraicas.

TUTORIAL SOBRE HOJAS DE CALCULO

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Informática Ingeniería en Electrónica y Automática Industrial

Representación de la información

Sistemas Operativos. IES Pedro Espinosa. Relación de ejercicios Tema 1: Conceptos básicos de informática

MANUAL DESCARGA DE CALIFICACIONES

Recopilación de ejercicios sobre expresiones regulares en exámenes de Compiladores e intérpretes

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Actividad colaborativa Ejercicios de programación Programación básica C++

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Contenidos Mínimos MATEMÁTICAS 3º ESO ENSEÑANZAS ACADÉMICAS. U 1 Fracciones y decimales. CRITERIOS DE EVALUACIÓN. ESTÁNDARES DE APRENDIZAJE EVALUABLES

Teoría de Autómatas y Lenguajes Formales. Introducción a las Gramáticas. Gramáticas incontextuales

SISTEMA DE NUMEROS REALES

TEMA N 1 LÓGICA Y CONJUNTOS

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Grado en Ingeniería Informática Online, Curso Universidad Rey Juan Carlos

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Contenidos mínimos 1º ES0. 1. Contenidos. Bloque I: Aritmética y álgebra.

Hoja de ejercicios del Tema 3

Tema 2 Introducción a la Programación en C.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

GUIA DE ESTUDIO PARA EXAMEN DEL PRIMER PERIODO PARCIAL

Operación de Microsoft Word

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Flex a la rápida. José Ignacio Medina

Universidad Central Del Este U.C.E. Facultad de Ciencias Administrativas y de Sistemas Escuela de Contabilidad

El dictado Elaborado por Cheryl Urow y Karen Beeman, y adaptado del trabajo de Kathy Escamilla y el grupo de Literacy Squared

MANUAL BÁSICO CORREO WEB ULPGC ÍNDICE

Profesor(a): Ing. Miriam Cerón Brito

Tema 2. Fundamentos de la Teoría de Lenguajes Formales

PRÁCTICAS DE OPENOFFICE CALC Práctica 1:

UT01 03 Sistemas de codificación

Tema: Entorno a C# y Estructuras Secuenciales.

Guía 1: PATRONES DE REPETICIÓN

ALGEBRA y ALGEBRA LINEAL. Primer Semestre CAPITULO I LOGICA Y CONJUNTOS.

Paso 1: Autómata. A 1 sin estados inútiles, que reconoce el lenguaje denotado por a a* b*

Preliminares. Tipos de variables y Expresiones

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Páginas web ::: El sitio web: estructura y navegación Diseño de materiales multimedia. Web Sitio web: estructura y navegación

Procesamiento de documentos XML.

Programación en java. Estructuras algorítmicas

TALLER ESTADISTICAS EN EXCEL MSP 21 VERANO 2014

INTRODUCCIÓN DE DATOS EN LA HOJA DE CÁLCULO

1.3.- V A L O R A B S O L U T O

Computabilidad y Lenguajes Formales: Autómatas de Pila

6 ARCHIVOS DXF 12 Formato general

GUÍA BÁSICA DE FLEX Y BISON

GUIA PARA LA PRESENTACION DE INFORMES

JLex. JLex. Instalación JLex. Generación y Ejecución del Analizador Léxico. Lex en Java

Un conjunto es un grupo, una colección de objetos; a estos objetos se les llama miembros o elementos del conjunto.

Introducción a la Programación en Java. Page 1

Estructura y partes del teclado

Software de Evaluación por Internet. Manual del Usuario

Texto: Hopcroft, J. E., Motwani, R., Ullman, J.D., Introduction to Automata Theory, Languajes, and Computation. 3rd Edition. Addison Wesley, 2007.

INSTRUCTIVO CORREOS ELECTRÓNICOS

TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8.

Transcripció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 Ingeniería y Arquitectura Universidad de Zaragoza http://webdiis.unizar.es/asignaturas/tc/ Curso 2011-2012 * Material elaborado a partir de los guiones de prácticas creados y mantenidos por los profesores Pedro Álvarez, Rubén Béjar y Jorge Júlvez para la asignatura Lenguajes Gramáticas y Autómatas de la titulación Ingeniería de Informática (122) del plan de estudios BOE 1-2-1995.

Práctica 1 Introducción al manejo de Flex Tareas 1. Aprende a acceder a la página web de la asignatura, al entorno BlackBoard Learn y a trabajar con tu cuenta en Hendrix. 2. Descarga el documento Intro_Flex_Bison.pdf elaborado por el profesor Rubén Béjar Hernández y lee detenidamente el capítulo Introducción a Flex. 3. Lee la introducción de esta práctica y realiza los ejercicios 1 a 5 propuestos. 4. Elabora una memoria con los siguientes contenidos: Portada: Número de Práctica, Grupo y Autor/Autores. Ejemplo: Grupo COM1-M Práctica 1 Autores: Al Anturing & Alon Zochurch Una sección para cada ejercicio resuelto. Explica los aspectos fundamentales de la solución que propones y adjunta el código fuente. Ejemplo: LA ENTREGA: Ejercicio 1: 1. Resumen... 2. Código fuente... QUÉ? Fichero en formato PDF. Ejemplo: COM1-M_P1_AlAnturing_AlonZochurch.pdf CÓMO? Usando la plataforma BlackBoard Learn. CUÁNDO? Hasta las 23:59:59 del día anterior a la tercera sesión de prácticas. Nota: El incumplimiento de las normas de entrega se reflejará en la calificación de la memoria. 3

Introducción El objetivo principal de esta primera practica de la asignatura es familiarizarse con la herramienta de creación de analizadores léxicos Flex y aprender aspectos básicos sobre teoría de lenguajes y expresiones regulares. Para ello, se propone la creación con dicha herramienta de una serie de pequeños procesadores de texto Las prácticas de TC se realizan en hendrix-ssh.cps.unizar.es. Para compilar los programas, los ejecutables correspondientes a Flex y Bison están en los directorios en /opt/csw/bin/flex y /opt/csw/bin/bison, respectivamente. Ejemplo: flex nombre_fichero_fuente gcc lex.yy.c lfl o nombre_ejecutable El alfabeto Σ que maneja Flex está formado por los caracteres manejables por el sistema (p. ej. todos los símbolos del código ASCII). En las prácticas se trabaja con letras (distinguiendo entre mayúsculas y minúsculas), números y signos de puntuación. El cuadro 1.1 muestra algunas correspondencias entre la notación empleada en clase de teoría y la que se utiliza en Flex para trabajar con Expresiones Regulares (ERs). Operación Notación Teoría Notación Flex Concatena ERs ó {vacío} {vacío} (yuxtaposición) Unión de ERs + Cerradura de Kleene Cerradura Positiva + + Paréntesis ( ) ( ) Conjunto a,b,c,d,0,1,2 {a, b, c, d, 0, 1, 2} [abcd012] ó [a d0 2] {vacío} ó a ɛ + a a? Repetir 0 veces ɛ Sin equivalencia (ver ó?) Cuadro 1.1: Correspondencia entre notaciones 4

Ejercicio 1 Escribe un programa con Flex que elimine los caracteres blancos al final de cada línea del texto de entrada y reduzca a un solo carácter blanco cualquier grupo de éstos en el interior de cada línea. Se entiende por carácter blanco el espacio en blanco y el carácter de tabulación. Ejemplo: Entrada: Este es un texto <EOL> con varios blancos <EOL> <EOF> Salida: Este es un texto <EOL> con varios blancos <EOL> <EOF> Ejercicio 2 Elabora un programa en Flex que copie el archivo de entrada en uno de salida, sustituyendo todo numero entero positivo múltiplo de 7 por el carácter. Este ejercicio tiene al menos dos enfoques: Construir una ER que denote el lenguaje de las palabras sobre el conjunto de símbolos 0,1,2,3,4,5,6,7,8,9 y que en decimal sean múltiplo de 7 para luego buscarla en Flex. Se puede construir una ER que reconozca los números decimales múltiplos de 7? Cómo sería la expresión? Construir una ER para leer números en decimal, y después en la acción asociada en Flex comprobar si éstos son múltiplos de 7. Ejercicio 3 Construye un programa en Flex que cuente el número de palabras del texto de entrada que contengan alguna vez el carácter w. Cómo sería la ER? Y cómo sería la ER si queremos identificar las palabras que contengan un solo carácter w? Ejercicio 4 Escribe un programa en Flex que para una secuencia de entrada dada, realice lo siguiente para cada uno de estos casos: 5

Informar del número de caracteres, palabras y líneas de texto. Reconocer los números enteros, calcular e informar de su media. Reconocer los números reales e indicar cuántos de ellos están comprendidos en el rango entre cero y uno. Nota: La principal dificultad de este ejercicio está en saber tratar los números como palabras compuestas por caracteres numéricos. Además, hay que tener en cuenta que un carácter del fichero de entrada en Flex sólo se puede emparejar con un solo patrón (ER) como máximo. Ejercicio 5 Elabora un programa con Flex que, a partir de un fichero de texto que se pasa a la entrada, verifique que siempre que se abre un paréntesis, se cierre. Si detecta algún error, se informará de la línea donde se produce dicho error. La dificultad de este ejercicio radica en saber responder a las siguientes cuestiones: Es regular el lenguaje de las palabras sobre el alfabeto {(, )} que representa todos los pares de paréntesis correctamente anidados? Puedes demostrarlo? Si no fuera regular, Se puede hacer algo? 6