Teoría de Autómatas y Compiladores [ICI-445] Capítulo 1: Lenguajes y Gramáticas Formales



Documentos relacionados
Desarrollo de lenguajes y Compiladores [MII-771] Capítulo 1: Lenguajes y Gramáticas Formales

Capítulo 1 Lenguajes formales 6

MANEJO DE EXPRESIONES REGULARES

Conceptos básicos: 1,2 puntos

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

Autómatas Finitos. Leopoldo Altamirano, Eduardo Morales. Verano, 2011 INAOE. Introducción a. Autómatas. Definición formal de un. Finito Determinístico

Figura 4.1 Clasificación de los lenguajes de bases de datos

Operaciones lineales en R 3 y sus propiedades

personal.us.es/elisacamol Elisa Cañete Molero Curso 2011/12

Teoría de Autómatas y Compiladores [ICI-445] Capítulo 2: Autómatas Finitos

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores

Temas. Objetivo 07:00

Módulo 9 Sistema matemático y operaciones binarias

Cualquier lenguaje de contexto libre, L, puede ser generado por medio de una GCL, G, que cumpla las siguientes condiciones:

Comenzaremos recordando algunas definiciones y propiedades estudiadas en el capítulo anterior.

TIPOS DE VARIABLES EN PHP. DECLARACIÓN Y ASIGNACIÓN. LA INSTRUCCIÓN ECHO PARA INSERTAR TEXTO O CÓDIGO. (CU00816B)

Teoría de la Computación

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

Curso Cero Grado en Ingeniería Informática

4. (Junio 2005) Se está diseñando un lenguaje de programación para manejar objetos gráficos. Entre las constantes que tiene que manipular están las

LENGUAJES Y GRAMÁTICAS

Teoría Matemática de la Computación Primer Problemario Prof. Miguel A. Pizaña 11 de Octubre de 2006

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

TEMA 3.- El analizador sintáctico

Geometría Tridimensional

Lógica Proposicional IIC2212. IIC2212 Lógica Proposicional 1 / 56

NÚMEROS NATURALES Y NÚMEROS ENTEROS

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

LENGUAJES Y GRAMÁTICAS

CAPITULO 2: LENGUAJES

Soporte lógico de computadoras

Introducción. Las gramáticas definen las reglas que definen a los lenguajes Las reglas pueden tener una diversa variedad de esquemas

RESTRICCIONES DE INTEGRIDAD Y DEPENDENCIAS FUNCIONALES Bases de Datos Universidad de Talca, II Semestre Jorge Pérez R.

Preliminares. Tipos de variables y Expresiones

Introducción a la Ingeniería Informática [ICI-140] Capítulo 1: Algoritmos

UNIDAD I: LÓGICA PROPOSICIONAL

Para representar los conjuntos, los elementos y la relación de pertenencia, mediante símbolos, tendremos en cuenta las siguientes convenciones:

Modelos De Computación. Guía Modelos de Computación. Tema I: Lenguajes y Gramáticas

❷ Aritmética Binaria Entera

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales.

Unidad 1 Introducción

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz

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

3.8 Construcción de una ALU básica

Índice Introducción Números Polinomios Funciones y su Representación. Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones

PROGRAMACIÓN ORIENTADA A OBJETOS

1. MANEJO DE SUMATORIOS. PROPIEDADES Y EJERCICIOS.

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

DEFINICIONES BÁSICAS E INTRODUCCIÓN A LENGUAJES FORMALES

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

Matemáticas II CURVAS

INGENIERÍA DE SISTEMAS Y AUTOMÁTICA EN LOS NUEVOS PLANES DE ESTUDIO DE CICLO LARGO

Capítulo 6. Asociaciones y Declaraciones.

EXÁMENES DE REPASO Teoría de Autómatas y Lenguajes Formales UNIVERSIDAD FRANCISCO DE VITORIA

Existen tres Tipos de Formatos para Presupuestos que son la base de cualquier Opción de Impresión: Tradicional Moderno Formal

Ejercicios. 5.2 [5] < 5.3> Este ejercicio es similar al 5.1, pero ahora considere los fallos causados por permanecer en 1 (la señal es siempre 1).

MATEMÁTICAS para estudiantes de primer curso de facultades y escuelas técnicas

Nivelación de Matemática MTHA UNLP 1. Vectores

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Sistemas de Ecuaciones Lineales y Matrices

DISEÑO DEL SOFTWARE TRAFFIC ANALYZER. Analyzer. En este capítulo se reporta el desarrollo que se llevó a cabo para realizar el software

Lenguajes de Programación

Organización del Computador. Prof. Angela Di Serio

No todos los LRs finitos se representan mejor con ERs. Observe el siguiente ejemplo:

Práctica 1 Definición de un lenguaje de programación básico: milenguaje

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES


ORDENACIÓN, CONSERVACIÓN Y PRESERVACIÓN DE FONDOS BIBLIOGRÁFICOS

Capítulo 9. Introducción a los lenguajes formales. Continuar

Una cadena sobre Σ es cualquier secuencia de elementos de longitud finita sobre Σ.

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

3 Espacios Vectoriales

Unidad III El lenguaje de programación C

Nociones Básicas de Sémantica: Semántica Denotacional

Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 1: Lógica Proposicional

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

CAPÍTULO 1. PROPAGACIÓN DE LAS ONDAS PLANAS UNIFORMES

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Sistemas de numeración, operaciones y códigos.

UNIDAD 4 PROCESOS DE MARKOV

Teoría de Lenguajes - Segundo Obligatorio

Apuntes de Matemática Discreta 11. Teorema Fundamental de la Aritmética

BASE DE DATOS RELACIONALES

Arquitectura Cliente/Servidor

Relaciones binarias. ( a, b) = ( c, d) si y solamente si a = c y b = d

Informática I para Bachillerato

Tema 3: Aplicaciones de la diagonalización

SSL Guia de Ejercicios

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD CIENCIAS DE LA COMPUTACIÓN

Tema 2 Límites de Funciones

Tema 3: Variables aleatorias y vectores aleatorios bidimensionales

Sistemas de numeración y aritmética binaria

Las Gramáticas Formales

EJERCICIOS DE PROGRAMACIÓN RELACIÓN VII (EJERCICIOS DE REPASO)

TEORÍA DE CONJUNTOS.

Estadística con Excel Informática 4º ESO ESTADÍSTICA CON EXCEL

5.1Definición transformación lineal de núcleo ó kernel, e imagen de una transformación lineal y sus propiedades

Arrays y Cadenas en C

Transcripción:

Teoría de Autómatas y Compiladores [ICI-445] Capítulo 1: Lenguajes y Gramáticas Formales Dr. Ricardo Soto [ricardo.soto@ucv.cl] [http://www.inf.ucv.cl/ rsoto] Escuela de Ingeniería Informática Pontificia Universidad Católica de Valparaíso Marzo, 2010 Dr. Ricardo Soto Teoría de Autómatas y Compiladores 1/17

1. Introducción Un autómata es una máquina teórica que lee instrucciones en forma de símbolos y cambia de estado según éstas. a, b q a 0 q b 1 q 2 Áreas de aplicación de la teoría de autómatas: Comunicaciones. Teoría de Control. Circuitos secuenciales. Recocimiento de Patrones.. Compiladores. Dr. Ricardo Soto Teoría de Autómatas y Compiladores 2/17

1. Introducción Un compilador es un programa que traduce un programa escrito en un lenguaje a (lenguaje fuente) a un lenguaje b (lenguaje objeto). Programa Fuente Analizador Léxico Analizador Sintáctico Analizador Semántico Generador Código Intermedio Optimizador Código Intermedio Generador Código Objeto Programa Objeto Dr. Ricardo Soto Teoría de Autómatas y Compiladores 3/17

2. Alfabetos y palabras Un alfabeto es un conjunto finito y no vacío de elementos llamados símbolos o letras. Una palabra o cadena sobre un alfabeto V es una cadena finita de símbolos del alfabeto. Notaciones: ω denota la longitud de la cadena ω. λ denota a una cadena de longitud 0, también conocida como palabra vacía. V n denota al conjunto de todas las palabras de longitud n sobre V V 0 denota al conjunto cuyo único elemento es la palabra vacía, es decir, V 0 = {λ}. V denota al conjunto de todas las cadenas de cualquier longitud sobre V. V + denota al conjunto de todas las cadenas de cualquier longitud sobre V, excepto la vacía. Un elemento de V n es una cadena del tipo a 1 a 2... a n donde cada a i V. Dr. Ricardo Soto Teoría de Autómatas y Compiladores 4/17

3. Lenguajes Formales Llamamos lenguaje sobre el alfabeto V a cualquier subconjunto de V. Especificación de lenguajes: Extensión (lenguajes finitos) L = {a, aa, aaa} es un lenguaje sobre el alfabeto V = {a} L = {aba, cab, aaabc} es un lenguaje sobre el alfabeto V = {a, b, c} Comprensión (lenguajes infinitos) L = {a(bc) n n >= 1} Dr. Ricardo Soto Teoría de Autómatas y Compiladores 5/17

4. Gramáticas Formales El uso de gramáticas es otra forma de describir un lenguaje en forma general y rigurosa. Definiciones: Una gramática es una cuadrupla G = (V N, V T, S, P) donde: V T es el alfabeto de símbolos terminales. V N es el alfabeto de símbolos no terminales, de forma que V T V N =, y denotamos con V al alfabeto total de la gramática, esto es, V = V N V T S es el símbolo inicial y se cumple que S V N P es un conjunto finito de reglas de producción. Dr. Ricardo Soto Teoría de Autómatas y Compiladores 6/17

4. Gramáticas Formales Definiciones: Una regla de producción es un par ordenado (α, β) de forma que: α = γ 1 Aγ 2, donde: γ 1, γ 2 (V N V T ) A V N β (V N V T ) Una regla de producción (α, β) se suele escribir como α β Ejemplo Definir una gramática para el lenguaje L = {a(bc) n n >= 1}: Solución: S ab B bcb bc donde V N = {S, B} y V T = {a, b, c}. Dr. Ricardo Soto Teoría de Autómatas y Compiladores 7/17

Ejercicios Definir una gramática para los siguientes lenguajes: L 1 = {a n b m n 4 y m 3} L 2 = {a n b n n > 0} L 3 = {a n b 2n n > 0} L 4 = {a n b n c m d m n > 0 y m > 0} Dr. Ricardo Soto Teoría de Autómatas y Compiladores 8/17

4.1 Jerarquía de Chomsky Noam Chomsky clasificó las gramáticas en cuatro familias: Tipo 3 (Gramáticas regulares). Lineales por la derecha. Producciones del tipo: A λ A α A αb donde A, B V N y α V T. Lineales por la izquierda. Producciones del tipo: A λ A α A Bα donde A, B V N y α V T. Los lenguajes generados por estas gramáticas se llaman lenguajes regulares (lenguajes de la clase L 3 ). Dr. Ricardo Soto Teoría de Autómatas y Compiladores 9/17

4.1 Jerarquía de Chomsky Tipo 2 (Gramáticas libres de contexto). Producciones del tipo: A α donde A V N y α (V N V T ). Los lenguajes generados por estas gramáticas se llaman lenguajes libres de contexto (lenguajes de la clase L 2 ). La mayoría de los lenguajes de programación pertenecen a esta categoría. Tipo 1 (Gramáticas sensibles al contexto). Producciones del tipo: αaβ αγβ S λ donde A, S V N, α, β V y γ V +. Los lenguajes generados por estas gramáticas se llaman lenguajes sensibles al contexto (lenguajes de la clase L 1 ). La sensibilidad al contexto se puede interpretar en la 1era regla de producción: A puede ser reemplazada por γ sólo cuando A aparezca en el contexto de α y β. Dr. Ricardo Soto Teoría de Autómatas y Compiladores 10/17

4.1 Jerarquía de Chomsky Tipo 0 (Gramáticas sin restricciones o Gramáticas con estructura de frase). Producciones del tipo: α β donde α (V V N V ) y β V Los lenguajes generados por estas gramáticas se llaman lenguajes libres de contexto (lenguajes de la clase L 0 ). Clases de lenguajes L 3 L 2 L 1 L 0 Dr. Ricardo Soto Teoría de Autómatas y Compiladores 11/17

4.2 Notación BNF (Backus-Naus-Form) BNF es una metasintaxis utilizada para definir gramáticas BFN y sus extensiones son ampliamente utilizadas para definir gramáticas de lenguajes de programación. En BNF, símbolos no terminales se definen entre ángulos ( ) y producciones se definen utilizando el símbolo ::=. Ejemplos 1. <S> ::= a<b> <B> ::= bc<b> bc 2. <class-dec> ::= class <identifier> { <class-body> } Dr. Ricardo Soto Teoría de Autómatas y Compiladores 12/17

4.3 Notación EBNF (Extended BNF) EBNF introduce el uso de paréntesis cuadrados para símbolos opcionales y llaves para repeticiones. El uso de ángulos para símbolos no terminales no es obligatorio. Introduce el uso de comillas en terminales para evitar ambigüedad con símbolos reservados de EBNF. Símbolo opcional class-dec ::= "class" identifier ["extends" identifier] "{" class-body "}" Repetición number ::= {digit} Dr. Ricardo Soto Teoría de Autómatas y Compiladores 13/17

4.4 Otras convenciones denota desde cero a n repeticiones + denota desde una a n repeticiones () para agrupaciones Repetición number ::= digit+ Opción y repetición import-dec ::= identifier ("." identifier )* ["." "*"] ";" Dr. Ricardo Soto Teoría de Autómatas y Compiladores 14/17

Ejercicios Utilize EBNF para construir las siguientes gramáticas: Número entero. Número real. Letra. Palabra. Dirección Postal. Ej: Juan Maldonado Perez, 6 norte 1234, Viña del Mar, Chile Una expresión. if-else en Java. for en Java. Clase Java. Dr. Ricardo Soto Teoría de Autómatas y Compiladores 15/17

4.5 Expresiones Regulares Las expresiones regulares también permiten especificar lenguajes regulares. Las expresiones regulares son de gran utilidad en editores de texto y aplicaciones para buscar y manipular textos. En la actualidad existe gran soporte para el uso de expresiones regulares (Perl, PHP, bibliotecas Java, bibliotecas.net, shell Unix, etc). Similar a EBNF: denota desde cero a n repeticiones + denota desde una a n repeticiones {n} denota n repeticiones {m, n} denota de m a n repeticiones? denota elemento opcional () para agrupaciones Dr. Ricardo Soto Teoría de Autómatas y Compiladores 16/17

Ejercicios Defina los siguientes lenguajes mediante expresiones regulares: L 1 = {(ab) n n > 1} L 2 = {a n b m n 4 y m 3} Todas las palabras que empiezen con a y terminen con o Todas las palabras que empiezen con a, tengan una s y terminen con o Todas las palabras que tengan entre 5 y 8 letras Dr. Ricardo Soto Teoría de Autómatas y Compiladores 17/17