Compiladores e Intérpretes

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

NÚMEROS NATURALES Y NÚMEROS ENTEROS

Capítulo 1 Lenguajes formales 6

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

Í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

Estructuras de Datos y Algoritmos. Árboles de Expresión

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

INSTITUTO VALLADOLID PREPARATORIA página 9

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice

La ventana de Microsoft Excel

Tema 07. LÍMITES Y CONTINUIDAD DE FUNCIONES

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

Ámbito Científico-Tecnológico Módulo III Bloque 2 Unidad 1 Quien parte y reparte, se lleva la mejor parte

EXPRESIONES ALGEBRAICAS. POLINOMIOS

Teclado sobre una PDA para Personas con Parálisis Cerebral

UNIDAD I NÚMEROS REALES

SSL Guia de Ejercicios


Los números racionales

Los polinomios. Un polinomio es una expresión algebraica con una única letra, llamada variable. Ejemplo: 9x 6 3x 4 + x 6 polinomio de variable x

Centro de Capacitación en Informática

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

Teoría de Lenguajes. Teoría de la Programación I

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

INSTITUTO VALLADOLID PREPARATORIA página 37

Lección 9: Polinomios

Capitulo V Administración de memoria

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

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

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones

Conceptos básicos: 1,2 puntos

Módulo 9 Sistema matemático y operaciones binarias

Problemas indecidibles

Fundamentos de Investigación de Operaciones Investigación de Operaciones 1

Números Reales. MathCon c

Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios. Dra. Noemí L. Ruiz Limardo 2009

TEMA 5: HOJAS DE CÁLCULO. Edición de hojas de cálculo con OpenOffice Calc

Índice general de materias LECCIÓN 7 74

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Tema : ELECTRÓNICA DIGITAL

Este documento ha sido generado para facilitar la impresión de los contenidos. Los enlaces a otras páginas no serán funcionales.

Teoría del Juego - Juegos Combinatoriales Imparciales

Matrices Invertibles y Elementos de Álgebra Matricial

PROPORCIONALIDAD - teoría

Hoja1!C4. Hoja1!$C$4. Fila

REPASO NÚMEROS NATURALES Y NÚMEROS ENTEROS

UNIDAD 1. LOS NÚMEROS ENTEROS.

UNIDAD 6. POLINOMIOS CON COEFICIENTES ENTEROS

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

COLEGIO APUNTES ACCESS

Matemáticas para la Computación

PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN

Clases de apoyo de matemáticas Fracciones y decimales Escuela 765 Lago Puelo Provincia de Chubut

Tema 3. Espacios vectoriales

PROGRAMACIÓN ORIENTADA A OBJETOS

TEMA 3: EN QUÉ CONSISTE?

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Ejercicios de Programación Lineal

Fórmulas y funciones

Operación de Microsoft Word

Relaciones entre conjuntos

UNIDAD 4: PLANO CARTESIANO, RELACIONES Y FUNCIONES. OBJETIVO DE APRENDIZAJE: Representar gráficamente relaciones y funciones en el plano cartesiano.

Los elementos que usualmente componen la identidad digital son:

Fórmulas y funciones

6. VECTORES Y COORDENADAS

VECTORES. Módulo, dirección y sentido de un vector fijo En un vector fijo se llama módulo del mismo a la longitud del segmento que lo define.

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

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

PRÁCTICAS DE GESTIÓN GANADERA:

Módulo 2: Expresiones polinómicas. Factorización

e-conocimiento Manual de uso

Base de datos en Excel

Vamos a ver los principales conceptos básicos que debemos

Informática Bioingeniería

Programación Lineal. Ficha para enseñar a utilizar el Solver de EXCEL en la resolución de problemas de Programación Lineal

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

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

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Instrucciones para la familiarización de los alumnos con el instrumento de evaluación de EECL (ES)

Divisibilidad y números primos

EMPLEO NTIC`S II SEGUNDO SEMESTRE

Instructivo de Microsoft Excel 2003

Lección 24: Lenguaje algebraico y sustituciones

Módulo II - PowerPoint

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO

Operaciones con polinomios

INSTITUTO VALLADOLID PREPARATORIA página 57

2.1 Funcionamiento del MPLS

Profr. Efraín Soto Apolinar. Números reales

Una desigualdad se obtiene al escribir dos expresiones numéricas o algebraicas relacionadas con alguno de los símbolos

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows

La suma y la resta. Introducción. Capítulo

PROYECTO EDUCATIVO LA CALERA

a < b y se lee "a es menor que b" (desigualdad estricta) a > b y se lee "a es mayor que b" (desigualdad estricta)

NÚMEROS RACIONALES Y DECIMALES

Microsoft Excel Unidad 6. La Hoja de Cálculo

DEFINICIONES BÁSICAS E INTRODUCCIÓN A LENGUAJES FORMALES

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Transcripción:

Compiladores e Intérpretes Coordinador: Prof. Ing. Pablo Pandolfo 1

Contenido: Lenguajes Formales. Gramáticas Formales. Lenguajes Regulares. Lenguajes Incontextuales. Maquina de Turing. Proceso de compilación 2

Lenguajes Formales Lenguajes Formales: Los LENGUAJES FORMALES están formados por PALABRAS, las palabras son CADENAS y las cadenas están constituidas por SÍMBOLOS de un ALFABETO. 3

Lenguajes Formales Símbolo: Es el elemento constructivo básico; es la entidad fundamental, indivisible, a partir de la cual se forman los alfabetos. Ejemplos: La letra a es un símbolo o carácter que forma parte del alfabeto español, del alfabeto inglés, etc. Los símbolos >, = y + son elementos del alfabeto de los operadores de los lenguajes Pascal y ANSI C. 4

Lenguajes Formales Alfabeto: Es un conjunto (colección de objetos) no vacío y finito de símbolos. Se lo identifica, habitualmente, con la letra griega Σ (sigma) y con sus caracteres se construyen las palabras de un lenguaje. Ejemplo: El alfabeto Σ = {0, 1} proporciona los caracteres utilizados en la construcción de los números binarios. Los números enteros con signo en base 10 se construyen con símbolos del siguiente alfabeto: Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -, +} 5

Lenguajes Formales Cadena Es una secuencia finita de caracteres tomados de cierto alfabeto y colocados uno a continuación de otro. Se construye CONCATENANDO (yuxtaponiendo) caracteres de un alfabeto dado. Ejemplo: abac (se lee a-b-a-c ) es una cadena formada con caracteres del alfabeto {a, b, c}. 101110 ( uno-cero-uno-uno-uno-cero ) es una cadena construida con caracteres del alfabeto {0, 1}. 6

Lenguajes Formales Longitud de una cadena La LONGITUD de una cadena S (se representa S ) es la cantidad de caracteres que la componen. Ejemplo: La longitud de la cadena abac es: abac = 4. La longitud de la cadena b es: b = 1. Cadena vacía Se representa λ (lambda) Es la cadena que no tiene caracteres. Es la cadena de longitud 0 ( λ = 0). Este símbolo λ no forma parte de ningún alfabeto. 7

Lenguajes Formales Potenciación de un símbolo c n representa la repetición del carácter c, n veces. Simplifica la escritura de cadenas. Ejemplo: aaaaabbbbbbb = a 5 b 7. Concatenación de dos cadenas La operación de CONCATENACIÓN aplicada a cadenas (S1S2) produce una nueva cadena formada por los caracteres de la primera cadena seguidos inmediatamente por los caracteres de la segunda cadena. Ejemplo: Sean las cadenas S1 = aab y S2 = ba; entonces, S1S2 = aabba. NO ES CONMUTATIVA La cadena vacía (λ) es la IDENTIDAD para la concatenación. Esto es: para cualquier cadena S, S λ = λ S = S. 8

Lenguajes Formales Potenciación de una cadena Si S es una cadena, entonces S n (con n 1 y entero) representa la cadena que resulta de concatenar la cadena S, consigo misma, n-1 veces. S 0 es λ (la cadena vacía), para cualquier cadena S Ejemplo: Sea S = ab; entonces: S 3 = SSS = (ab) 3 = ababab. Prefijo de una cadena: Es una secuencia de cero o más caracteres iniciales de esa cadena. Ejemplo: Sea la cadena abcd. Entonces, sus prefijos son: λ, a, ab, abc y abcd (la cadena completa). Sufijo de una cadena: Es una secuencia de cero o más caracteres finales de esa cadena. Ejemplo: Sea la cadena abcd. Entonces, sus sufijos son: λ, d, cd, bcd y abcd. Subcadena de una cadena: es una secuencia de caracteres que se obtiene eliminando cero o más caracteres iniciales y cero o más caracteres finales de esa cadena. Ejemplo: Sea la cadena abcd. Entonces, sus subcadenas son: abcd, bcd, cd, d, abc, ab, a, bc, b, c y λ. 9

Lenguajes Formales Lenguajes Naturales Lenguajes Formales Lenguaje Natural Lenguaje hablado y/o escrito que es utilizado por los seres humanos para comunicarse. Características: EVOLUCIONAN con el paso del tiempo, incorporando nuevos términos y nuevas reglas gramaticales para mejorar y actualizar la comunicación Sus REGLAS GRAMATICALES surgen después del lenguaje, para poder explicar su estructura, es decir: su sintaxis El SIGNIFICADO (o sea, la semántica) de cada palabra y de cada oración de un Lenguaje Natural es, en general, más importante que su composición sintáctica. 10

Lenguajes Formales Lenguajes Naturales Lenguajes Formales Lenguaje Formal Conjunto de cadenas formadas con los caracteres de un alfabeto dado, y tiene una característica fundamental: es un lenguaje abstracto, en el que el término FORMAL pone de manifiesto que, en esta disciplina, solo estamos interesados en la forma de una cadena (sintaxis) y no en su significado (semántica). Definidos por reglas gramaticales PREESTABLECIDAS y se deben ajustar rigurosamente a ellas. En consecuencia, un LF nunca puede evolucionar. Un LF puede ser descripto por enumeración (extensión), por comprensión, mediante una frase en un lenguaje natural (castellano) o mediante otras formas especiales. Ejemplo: Sea Σ = {a}, un alfabeto con un solo símbolo. Los que siguen son algunos LFs que se pueden construir sobre este alfabeto: L1 = {a}; L2 = {aa, aaa}; L3 = {λ, a, a 18 }. 11

Lenguajes Formales Palabra Una cadena es vacía, o bien está compuesta por una sucesión de uno o más caracteres que pertenecen a un alfabeto dado. Si una cadena pertenece a un determinado lenguaje, decimos que es una PALABRA de ese lenguaje. Propiedades: longitud de una palabra palabra vacía concatenación de dos o más palabras potenciación de una palabra prefijos y sufijos de una palabra subpalabras 12

Lenguajes Formales Cardinalidad de un LF Es la cantidad de palabras que lo componen. Ejemplos: L = {a, ab, aab} es un lenguaje de cardinalidad 3 sobre el alfabeto {a, b}. El lenguaje L = {λ} es un lenguaje de cardinalidad 1, ya que contiene una sola palabra. Sublenguajes Dado que un Lenguaje Formal es un conjunto, un SUBLENGUAJE es un subconjunto de un lenguaje dado. Ejemplo: Sea L1 = {a, ab, aab}. Entonces, L2 = {ab, aab} es un sublenguaje de L1, mientras que L3 = { } es el sublenguaje vacío de L1. 13

Lenguajes Formales Lenguajes formales finito Lenguajes con un número finito de palabras Ejemplo: L1 = {a, ab, aab}. Lenguajes formales infinitos Lenguajes con una cantidad infinita de palabras, pero cada una de longitud finita (no existen las palabras de longitud infinita). Ejemplo: L = {a n / n 1} es un LF infinito ya que no existe un límite superior para el supraíndice n. Cada palabra de este lenguaje está formada por una secuencia de una o más aes. Por ello, la concatenación de dos palabras cualesquiera de este lenguaje producirá siempre otra palabra del lenguaje L. Por esta propiedad, se dice que este lenguaje L es cerrado bajo la concatenación. 14

Lenguajes Formales Lenguaje Universal Dado un alfabeto Σ, el LENGUAJE UNIVERSAL sobre este alfabeto es un lenguaje infinito que contiene todas las palabras que se pueden formar con los caracteres del alfabeto Σ, más la palabra vacía. Se lo representa con la notación Σ*, que se lee sigma clausura o sigma estrella. Es cerrado bajo concatenación. Cualquier lenguaje L sobre el alfabeto Σ es un sublenguaje de Σ*. Por lo tanto, existen infinitos lenguajes sobre un alfabeto dado. Ejemplo: Si Σ = {a, b}, entonces el Lenguaje Universal para este alfabeto es: Σ* = {λ, a, b, aa, ab, ba, bb, aaa, aab, aba, abb,..., aabaabbbab, } 15

Lenguajes Formales Operaciones con Lenguajes: Unión: es el lenguaje que contiene las palabras de L1, de L2 o de ambos. L1 U L2 = {x ЄΣ* : xєl1 v x Є L2} Intersección: es el lenguaje que contiene las palabras de L1 y de L2. L1 L2 = {x ЄΣ* : xєl1 ^ x Є L2} Complementación: es el lenguaje que contiene todas las palabras sobre el alfabeto Σ que no pertenecen a L. Ī = {x ЄΣ* : xєl} Diferencia: L1 L2 = L1 Ī2 Diferencia simétrica L1 L2 = (L1 Ī2) U (Ī1 L2) Producto L1 L2 = {x,y ЄΣ* : xєl1 ^ x Є L2} Potencia L n = {{λ} si n=0 v L n-1 si n>0} Cierre estrella (de Kleene) L* = U L i i 0 Cierre positivo L + = U L i i > 0 16

Lenguajes Formales Operaciones con Lenguajes: L* = {λ} U L + L + = L* λ Є L λєl + L*L = LL* = L + L* = L* L + = L + L*L* = L* pero L + L + = L 2 L* (L*)* = (L + )* = (L * ) + = L* (L + ) + = L + Ø* = {λ} Ø + = Ø 17

Lenguajes Formales - Ejercicios (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) Describa, mediante una frase en castellano, el lenguaje del Ejercicio 2. (4) Escriba todas las palabras del lenguaje L = {a 2n+1 / 1 n 4}. (5) Sea el lenguaje L = {λ, a, ba, abc}. Cuál es el mínimo alfabeto Σ sobre el que se puede construir este lenguaje? (6) Sea el lenguaje L = {0, 00, 01, 010}. Escriba una concatenación de dos palabras que produce otra palabra de este lenguaje. (7) Sea el lenguaje anterior. Escriba una concatenación de dos palabras que produce una cadena que no es palabra del lenguaje. (8) Sea el lenguaje del Ejercicio (6). Escriba tres sublenguajes de L, de distinta cardinalidad. (9) Describa, mediante una frase en castellano, el lenguaje L = {a n b n / 1 n 3000}. (10) Sea Σ = {a, b} y sea el lenguaje Σ*. Cuántas palabras de longitud 3 tiene este lenguaje? Y cuántas de longitud 4? (11) Sea el lenguaje infinito L = {ab n / n 1}. Escriba las tres palabras de menor longitud. (12) Sea el lenguaje infinito L = {(ab) n / n 1}. Escriba las tres palabras de menor longitud. (13) Sea el alfabeto Σ = {0, 1}. Describa, por comprensión, un lenguaje infinito L sobre Σ (que no sea Σ*). (14) Describa, mediante una frase en castellano, el lenguaje definido en el ejercicio anterior. 18

Lenguajes Formales - Ejercicios IMPLEMENTACIÓN EN ANSI C o JAVA Para cada una de los ejercicios que siguen, construir en ANSI C O JAVA la función solicitada y un programa que la pruebe con todos los datos constantes que sean necesarios. (15) Longitud de una cadena (16) Determinar si una cadena dada es vacía. (17) Concatenación de dos cadenas. (18) Determinar si una subcadena es Prefijo de una cadena dada. 19

Gramáticas Formales Estructuras que generan las palabras que forman un Lenguaje Formal. Es un conjunto de producciones (reglas de re escritura) que se aplican para obtener cada una de las palabras del LF que la GF en cuestión genera. Ejemplo: Sea el lenguaje L = {a}, formado por una sola palabra. Este lenguaje es generado por una gramática con una única producción: S -> a (se lee S produce a ). Toda producción está formada por tres partes: el lado izquierdo, el lado derecho, y la flecha, que indica que el lado izquierdo de la producción produce (o es reemplazado por o equivale a ) el lado derecho. 20

Gramáticas Formales Definición formal: Toda GF es una 4-upla (V N, V T, P, S), donde: V N es el vocabulario de no terminales o variables (un conjunto finito), V T es el vocabulario de terminales o caracteres del alfabeto sobre el cual se construye el LF que es generado por la gramática descripta (otro conjunto finito), P es el conjunto finito de producciones S Є V N es un no terminal especial, llamado símbolo inicial (start) o axioma o símbolo distinguido, desde el cual siempre debe comenzar a aplicarse las producciones que generan todas las palabras de un determinado LF Ejemplo: G = ({S, T}, {a, b}, {S -> at, T -> a, T -> b}, S). 21

Gramáticas Formales Jerarquía de Chomsky: En 1956 y 1959, el lingüista norteamericano Noam Chomsky publicó dos trabajos sobre los Lenguajes Naturales que, aplicados al área de los Lenguajes Formales, produjeron lo que se conoce como Jerarquía de Chomsky. Establece una clasificación (según las restricciones que se imponen a sus producciones ) de cuatro tipos de GFs que, a su vez, generan cuatro tipos diferentes de LFs. Tipos: Gramáticas Regulares o Gramáticas Tipo 3 Gramáticas Independientes del Contexto o Gramáticas Tipo 2 Gramáticas Dependientes del Contexto o Gramáticas Tipo 1 Gramáticas Irrestrictas o Gramáticas Tipo 0 22

Gramáticas Formales Gramáticas Regulares o racionales o de Kleene o Gramáticas Tipo 3 Una GF es Regular si sus producciones tienen las siguientes restricciones: Tipos el lado izquierdo debe tener un solo no terminal, el lado derecho debe estar formado por un solo terminal, o un no terminal seguido de un terminal. el símbolo distinguido puede o no derivar a λ Lineales por la izquierda P={(S λ) (A Bv) (A v) / (A,B) Є V N, v Є V T } Lineales por la derecha P={(S λ) (A vb) (A v) / (A,B) Є V N, v Є V T } Ejemplo: P = {(S C0), (S D1), (C 1), (D C1)} 23

Gramáticas Formales Gramáticas Independientes del Contexto o incontextuales o algebraicas o de Chomsky o Gramáticas Tipo 2 Una GF es Independiente del Contexto si sus producciones tienen las siguientes restricciones: el lado izquierdo debe tener un solo no terminal, el símbolo distinguido puede o no derivar a λ P={(S λ) (A v) / A Є V N, v ЄΣ + } Ejemplo: P = {(S λ), (S 01S1), (S 0S10), (S A1), (A 0S10)} Estas GICs son de gran utilidad en la representación de la sintaxis de los Lenguajes de Programación. 24

Gramáticas Formales Gramáticas Dependientes del Contexto o Contextuales o Gramáticas Tipo 1 Una GF es Dependiente del Contexto si sus producciones tienen las siguientes restricciones: β α. el símbolo distinguido puede o no derivar a λ P={(S λ) (xay xvy) / (A Є V N, (x,y) ЄΣ*, v ЄΣ + } Ejemplo: P = {(S λ), (S 0A100), (0A1 011), (0A0 000)} 25

Gramáticas Formales Gramáticas Irrestrictas o con Estructura de frase o Gramáticas Tipo 1 Una GF es Irrestricta si sus producciones no tienen ningún restricción P={(u v) / u = xay, u ЄΣ +, (v,x,y) ЄΣ*, A Є V N } Ejemplo: P = {(S 0), (0SA 0A10), (A 1), (A 1S0)} 26

Gramáticas Formales Cada tipo de GF genera un tipo de LF cuyo nombre deriva del nombre general de la correspondiente gramática. Así, las GRs generan LENGUAJES REGULARES, las GICs generan LENGUAJES INDEPENDIENTES DEL CONTEXTO, las GDCs generan Lenguajes Sensibles al Contexto y las GIs generan Lenguajes Irrestrictos. 27

Gramáticas Formales Derivación: Es el proceso que permite obtener cada una de las palabras de un LF a partir del axioma de una GF que lo genera y aplicando sucesivamente las producciones convenientes de esa GF. Existen diferentes formas de representar una derivación: en forma horizontal, utilizando el símbolo => en cada paso de una derivación; S => asb => aasbb => aaabbb en forma vertical, reemplazado un no terminal por su lado derecho para producir una nueva línea; S asb aasbb aaabbb en forma de árbol. Se llama Lenguaje generado por una gramática G. al conjunto de todas las palabras que derivan a partir del axioma. L(G) = {x ЄΣ* : S x} Dos gramáticas G y G son equivalentes si generan el mismo lenguaje, es decir, si L(G) = L(G ) 28

Gramáticas Formales - Ejercicios (1) Describa el orden en que se aplican las producciones para generar las palabras del lenguaje formal L ={aa, aab} (2) La producción O λ Genera la palabra vacía? (3) Qué lenguaje formal genera la gramática G = ({S,T}, {a,b}, {S at, T a, T λ}, S)? (4) Sea la gramática formal con producciones: {S at bq, T a b, Q a λ} a) La gramática con estas seis producciones genera la cadena bab? Justifique b) Cuál es el lenguaje formal generado por esta gramática? Justifique. (5) Escriba la definición formal y las producciones de una GR que genere el Lenguaje Regular L = {a n b / 1 n 3} (6) Escriba la definición formal y las producciones de una GR que genere el Lenguaje Regular L = {a n b n / 0 n 2} (/) Indique cual es la mínima palabra del LR generado por la GR {S as at, T b}. Escriba la sucesión de producciones que aplicaría para generar la palabra aaab (8) Escriba una GR que genere cualquier secuencia de uno o más digitos decimales. (9) Justifique: a) Una GR es siempre una GIC b) Una GIC es siempre una GR 29

Gramáticas Formales - Ejercicios (10) Cual es la mínima palabra generada por la GIC {S asb a} Cual es la palabra que le sigue en longitud? Describa por comprensión, el LIC generado por la GIC (11) Sea el lenguaje L = {a n b n+1 / n 0}. Escriba las producciones de una GIC que lo genere. (12) Sea el lenguaje L = {a 2n b n+1 a r / n 1, r 0}. Escriba la definición formal de una GIC que lo genere. (13) Dada la GIC {S asb ab}, determine aplicando una derivación vertical, si la cadena aaabbbb es una palabra del LIC generado por esta GIC. Dibuje la misma derivación en forma de árbol. (14) Sea el LF infinito L = {a n bc n / n 1}. Describa la Definición Formal de una GIC que genere este LF. (15) Dada la GIC construida en el punto anterior, utilice DERIVACIÓN VERTICAL para determinar si las siguientes cadenas son o no palabras del LF generado: a) aaabccc b) aabbcc c) aaabcc d) aabccc e) aaaccc 30

Gramáticas Formales - Ejercicios (16) Supongamos un Lenguaje de Programación en el que sus expresiones aritméticas están formadas por los números enteros 2 y 6, el operador de suma y siempre termina con un punto y coma. Algunas expresiones aritméticas de este Lenguaje de Programación son: {6; 2+2+6; } Vamos a construir una GIC que genere la totalidad de estas expresiones aritméticas. Para ello, debemos definir el vocabulario de noterminales, el vocabulario de terminales, el axioma y el conjunto de producciones. Supongamos que el vocabulario de noterminales esta formado por: S (el axioma), E (de expresión) y T (de término). Los terminales son 2, 6, + y ; (punto y coma). Las producciones de la GIC que genera el lenguaje de estas expresiones aritméticas son: {S E; E T E+T T 2 6} a) Determine, aplicando derivación a izquierda, si 6; es una expresión correcta. b) Determine, aplicando derivación a izquierda, si 6+6+6+; es una expresión correcta. c) Determine, aplicando derivación a derecha, si 6+6+6+; es una expresión correcta. d) Determine, aplicando derivación a izquierda, si 6+6+6+2; es una expresión correcta. 31

Lenguajes Regulares Son los lenguajes formales mas simples. Importancia en el diseño de los LENGUAJES DE PROGRAMACIÓN: los identificadores, las palabras reservadas, las constantes numéricas, los operadores y los caracteres de puntuación (Técnicas de reconocimiento de patrones). La tarea de reconocimiento de patrones es manejada por el analizador léxico del compilador. Un LENGUAJE es REGULAR si: Si el LF es FINITO, Si existe una GRAMÁTICA REGULAR que lo genere. Si se puede representar mediante una EXPRESIÓN REGULAR. Si puede ser reconocido por un AUTÓMATA FINITO 32

Lenguajes Regulares Ejemplos: L1 = {a n b n / 1 n 4} Es Regular L2 = {a n / n 1} Es Regular L3 = {a n b n / n 1} No es Regular L4 = {a n / 1 n 1000} Es Regular L5 = {a n b t / n 1, t 1} Es Regular L6 = {(ab) n (cde) t a z / n 1, t 1, z 1} Es Regular L7 = {1 2n+1 0 / n 0} Es Regular 33

Lenguajes Regulares Expresiones Regulares Es la forma mas precisa y útil de REPRESENTAR a los Lenguajes Regulares. Mecanismo alternativo al igual que las gramáticas regulares para definir los lenguajes regulares. Forman un metalenguaje. Componentes: Caracteres del alfabeto Símbolo λ Operadores: Concatenación. Unión 34

Lenguajes Regulares Expresiones Regulares Una expresión regular sobre un Σ se define en forma inductiva como sigue: Ø es una ER que denota al lenguaje vacío. λ es una ER que denota el lenguaje que contiene únicamente a la cadena vacía {λ} a ЄΣ, a es una ER que denota el lenguaje que contiene únicamente a cadena a, {a} Sea r una ER que denota el lenguaje Lr, entonces (r) es también una expresión regular para el mismo lenguaje. r s es una ER que denota la unión de los lenguajes denotados por r y s r.s es una ER que denota la concatenación de los lenguajes denotados por r y s r* es una ER que denota la clausura del lenguaje denotado por r. 35

Lenguajes Regulares Expresiones Regulares Propiedad de los operadores aa* <> (aa)* ( ) paréntesis * clausura. concatenación unión Ejemplos: (aa)* aa* (0 1)* (0 1)*00(0 1)* (1 10)* 36

Lenguajes Regulares Expresiones Regulares Propiedades de equivalencia. Sean a,b,c expresiones regulares sobre el alfabeto Σ Asociatividad de la unión a (b c) = (a b) c Conmutatividad de la unión a b = b a Asociatividad de la concatenación (ab)c = a(bc) Distributividad de la concatenación respecto de la unión a(b c) = ab ac Elemento neutro de la concatenación aλ = λa = a Elemento neutro de la unión a Ø = Ø a = a λ* = λ Øa = a Ø = Ø Ø* = λ a*a* = a* aa* = a*a (a*)* = a a* = λ a aa a n a n+1 a* a* = λ aa* a* = (λ a) n-1 a n a* (a* b*)* = (a*b*)* = (a b)* (ab)*a = a (ba)* (a*b)*a* = (a b)* (a*b)* = (a b)*b λ a+ = aa* = a*a 37

Lenguajes Regulares Expresiones Regulares Dos expresiones regulares son equivalentes si representan el mismo lenguaje regular Ejemplo: a b = b a ambos representan al L = {a,b} Dos expresiones regulares son diferentes si representan a diferentes lenguajes regulares Ejemplo: a(a b) <> (a b)a Expresión regular universal (ERU) Expresión regular que representa al Lenguaje Universal sobre un alfabeto dado. Representa al LR que contiene la palabra vacía y todas las palabras que se pueden formar con caracteres del alfabeto dado. Ejemplo: Σ = {a,b}, la ERU es (a b)* 38

Lenguajes Regulares Expresiones Regulares Operaciones sobre lenguajes regulares Unión: Si L1 es representado por la ER a*b y L2 es representado por la ER ba b*, L1 U L2 es representado por la ER (a*b) (ba b*) = a*b ba b* Concatenación: Si L1 es representado por la ER a*b y L2 es representado por la ER a b*, el LR concatenación L1L2 es representado por la ER a*b(a b*). Clausura de Kleene: Si L es representado por la ER a*b, L* es representado por la ER (a*b)* Clausura positiva: Si L es representado por la ER a*b, L+ es representado por la ER (a*b)+ Complemento: Si L es representado por la ER a(a b)*, L c es representado por la ER b(a b)* λ Intersección: Si L1 es representado por la ER a(a b)* y L2 es representado por la ER (a b)*b, L1 L2 es representado por la ER a(a b)*b 39

Lenguajes Regulares Expresiones Regulares y Lenguajes de programación Los componentes léxicos de un LP identificadores, palabras reservadas, constantes, operadores constituyen diferentes LRs. Ejemplos: Identificador L(L D)* Constante real D+.D* Palabras reservadas if else while Expresiones regulares extendidas Las ERs también se emplean para representar datos que serán procesados por diversas herramientas de software. Toda herramienta de software que necesite representar ERs para su posterior procesamiento, considera a estas expresiones como un lenguaje: El Lenguaje de las Expresiones Regulares. Un metalenguaje es un lenguaje que se usa para describir otro lenguaje. 40

Lenguajes Regulares Expresiones Regulares en Java (string.matches(regex)) Intervalos de caracteres [abc] a, b, o c [^abc] Cualquier carácter excepto a, b, o c (negación) [a-za-z] Desde la a a la z o desde la A hasta la Z, incluidos Intervalos de caracteres predefinidos. Cualquier carácter d Un numero: [0-9] D Todo menos un numero: [^0-9] s Un espacio en blanco: [ x0bf ] S Todo menos un espacio en blanco: [^s] w Una letra: [a-za-z_0-9] W Todo menos letras: [^w] Cuantificadores de cantidad X? X, una o ninguna vez X* X, cero o ninguna vez X+ X, una o mas veces X{n} X, exactamente n veces X(n,} X, por lo menos n veces X{n,m} X, por lo menos n veces pero no mas de m veces Operadores lógicos XY X seguido de Y X Y X o Y (X) X, como un grupo 41

Lenguajes Regulares Ejercicios ER (1) Escriba una ER que defina el siguiente lenguaje: identificadores de cualquier longitud que comience con a y contenga a, b o c. No pueden terminar con c y además no pueden contener dos c seguidas. (2) Escriba una ER que represente al LR L = {a n b n / 1 n 3} (3) Describa mediante una frase sin ambigüedades, el LR representado por la ER a(b a)b (4) Determine si las siguientes ERs son equivalentes: aa ab ba, a(a b) ba y ab ba aa. Justifique su respuesta. (5) Escriba una ER que represente al LR: Todas las palabras sobre el alfabeto {a,b} que tienen longitud 100 y terminan con 28 bes. (6) Sea el LR: Todas las palabras sobre el alfabeto {a,b,c} que: a) Comienzan con 16 aes, terminan con 16 aes y tienen una longitud total de 1200 caracteres. b) Comienzan con 342 bes y terminan con 100 repeticiones de cualquiera de los caracteres del alfabeto (pero siempre uno solo de ellos) (7) Compare las ER a 1000 y a*. Informe sus conclusiones. 42

Lenguajes Regulares Ejercicios ER (8) Escriba las tres palabras de menor longitud de LR representado por la ER (aba)* (9) La cadena a 24 b 24 a 24 es una palabra de LR representado por la ER (aba)*? Justifique su respuesta. (10) Describa, mediante una frase, el LR representado por la ER (a b)+ (11) Sea la ER a+ba+. Describa por comprensión, el LR representado por esta ER (12) Escriba las únicas palabras comunes a los LRs representados por las ERs (ab)* y a*b* (13) Defina mediante una frase, el LR representado por la ER (b*ab*ab*)* (14) Construya la ER que representa al LR: Todos los números binarios que comienzan con un 1 o con un 0. el cual puede estar seguido por una secuencia de 1s. (15) Construya la ER que representa al LR: Todas las palabras que comienzan con una secuencia de dos o mas 1s seguida de un 0 como último carácter o que comienzan con una secuencia de dos o más 0s seguida de un 1 como último carácter. (16) Si el alfabeto fuera todos los dígitos decimales, Cuál sería la ERU sobre ese alfabeto? (17) Dado dos LRs representados, respectivamente, por las ERs (a b)*a* y a 24 b, escriba dos ERs que representen la unión de los dos LRs. Escriba cinco palabras del LR unión (18) Sean los LRs representados por las ERs a*bc y b(a b)*. Escriba la ER que representa a la concatenación de estos dos LRs. Escriba las cinco palabras de menor longitud del LR concatenación. (19) Sea L = {a n bc t / n,t >= 1}. Escriba la ER que representa a L+ 43

Lenguajes Regulares Autómatas Finitos Es una herramienta abstracta que se utiliza para reconocer un determinado Lenguaje Regular. Es un modelo formal de un sistema que trabaja con entradas y salidas discretas. Es un modelo matemático de un sistema que recibe una cadena constituida por caracteres de cierto alfabeto Σ y tiene capacidad de determinar si esa cadena pertenece al Lenguaje Regular que el Autómata Finito reconoce. Es una máquina de estados finitos. Una máquina es una abstracción matemática que capturan solamente el aspecto referente a las secuencias de eventos (transiciones) que ocurren. RECONOCER un lenguaje regular aceptar cada cadena que es una palabra del Lenguaje Regular y rechazar cada cadena que no pertenece al lenguaje. Una palabra es aceptada si: Cadena ha sido consumida (se ha analizado todos los caracteres de la cadena) El autómata finito se encuentra en un estado especial llamado ESTADO FINAL o ESTADO DE ACEPTACION. 44

Lenguajes Regulares Autómatas Finitos Definición formal <Q, Σ, q0, F, δ> Q: Conjunto finito de estados Σ: Alfabeto de entrada reconocidos por el autómata q0: Estado inicial q0 Є Q, único en un conjunto. F: Conjunto de estados finales F C Q δ: Función de transición Q x Σ Q Ejemplo: ab (lenguaje regular finito) ACTIVIDAD 0 a 1 b 2 RECONOCE a b 0 1 2 45

Lenguajes Regulares Autómatas Finitos Casos La cadena ab pertenece al LR reconocido por este AF? ACTIVIDAD 0 a 1 b 2 RECONOCE Se dice que la cadena x es aceptada por el AF M cuando δ(q0, x) Є F Se define el Lenguaje aceptado por el AF M como L(M) = {x ЄΣ* / δ(q0, x) Є F} La cadena a es reconocida? ACTIVIDAD 0 a 1 RECHAZA La cadena abab es reconocida? ACTIVIDAD 0 a 1 b 2 a?? RECHAZA La cadena baa es reconocida? ACTIVIDAD 0 b?? RECHAZA Ejemplo: a*b (lenguaje regular infinito) 46

Lenguajes Regulares a*b 0 b 1 a (a b)* a 0 b 47

Lenguajes Regulares Autómatas Finitos. Hay dos maneras de equivocarse al diseñar un AF Sobren palabras : El autómata acepte algunas palabras que no debería aceptar. Solución INCORRECTA Falten palabras : palabras en el lenguaje que no son aceptadas por el autómata cuando debería serlo. Solución INCOMPLETA 48

Lenguajes Regulares Autómatas Finitos. Tipos: Autómatas Finitos Deterministas (AFD). Deterministic Finite Automaton Para cualquier estado en que se encuentre el autómata en un momento dado, la lectura de un carácter determina, SIN AMBIGUEDADES, cuál será el estado de llegada en la próxima transición. (unívocamente determinado) Es un AFN (ya que es un caso especial) Se puede encontrar un AFD por cada AFN que acepte el mismo lenguaje. Autómatas Finitos No Determinitas (AFN). Non-deterministic Finite Automaton Permite cero, una o más transiciones a partir de un estado con un determinado símbolo de entrada. Una cadena de entrada se dice que es aceptada por un AFN si existe una secuencia de transiciones, correspondiente a la cadena de entrada, que lleva del estado inicial a algún estado final. Acepta transiciones vacías: el autómata puede cambiar de estado sin tener que leer ningún símbolo de la entrada (arcos sin etiquetas entre pares de estados). 49

Lenguajes Regulares a(a ba*) 0 a 1 a 2 M = (Q, Σ, q0, F, δ) Q = {0,1,2,3} Σ = {a,b} q0 = 0 F = {2,3} δ = {0=>a=>1, 1=>a=>2, 1=>b=>3, 3=>a=>3} b 3 δ 0 1 2 3 a a 1 2-3 b - 3 - - 50

Lenguajes Regulares AFD completo Un AFD es completo si cada estado tiene exactamente una transición por cada carácter del alfabeto. Un AFD es completo cuando su tabla de transiciones no tiene huecos ; si los tiene, el AFD es incompleto. Completar un AFD significa eliminar los huecos de su tabla de transiciones, agregando un nuevo estado, que se denomina ESTADO DE RECHAZO o ESTADO DE NO ACEPTACION. AFD equivalentes Dos AFDs son EQUIVALENTES si reconocen al mismo Lenguaje Regular. 51

Lenguajes Regulares Autómata Finito No Determinista (a b)*abb a 0 a b b 1 2 3 b Sea M = (Q, Σ, q0, F, δ) un AFN, Se define el lenguaje aceptado por el AFN M como: L(M) = {x ЄΣ* / δ(qo,x) F Ø} δ 0 1 2 3 a {0,1} - - - b 0 2 3-52

Lenguajes Regulares Autómata Finito Determinista (a b)*abb a a 0 a b b 1 2 3 a b El número de estado de un AFN puede llegar a ser logarítmicamente menor que el número de estados del mínimo AFD que reconozca el mismo lenguaje. b δ 0 1 2 3 a 1 1 1 1 b 0 2 3 0 53

Lenguajes Regulares Autómatas Finitos. Operaciones: Complementación: Se define el autómata complementario M c como aquel que se obtiene a partir de M dando a los estados no aceptadores el carácter de aceptadores y viceversa L(M c ) = ~L(M) M c = (Q, Σ, q0, F=Q-F, δ) Intersección: M1 M2 M = (Q=Q1xQ2, Σ, q0=q1,q2, F=F1xF2 p Є Q1 q Є Q2 w ЄΣ* δ((p,q), w) = (δ1(p,w), δ2(q,w)) (p,q)w = (pw, qw) Unión: M1 U M2 M = (Q=Q1UQ2, Σ, q0=q1uq2, F=F1UF2, δ= δ1uδ2) δ(q,w) = δ1(q,w) si q Є Q1 δ(q,w) =δ2(q,w) si q Є Q2 Concatenación: M1.M2 M = (Q=Q1UQ2, Σ, q0=q1, F=F2 δ(q,a) = δ1(q,a) si q Є Q1 y a ЄΣ δ(q,a) = δ2(q,a) si q Є Q2 y a ЄΣ δ(q,λ) = q2 para cada q Є F1 54

Lenguajes Regulares Ejercicios AF (1) Sea el Σ {a, b} y el LR {a, aba} (a) Dibuje el AF que reconoce este LR (b) Describa los diferentes casos posibles y sus actividades. (2) Diseñe un AF que reconozca la ER a*bb*a (3) Diseñe un AF que reconozca la ER (a b c d)* (4) Diseñe un AF que reconozca la ER a(ab)+ (5) Diseñe un AF que reconozca la ER a* ab (6) Escriba la definición formal de un AF que reconozca el LR Todas las palabras sobre el alfabeto {a,b,c} que tienen por lo menos tres letras (7) Sea el AFD definido formalmente de la siguiente manera: M = (Q, Σ, q0, F, δ) Q={0,1,2,3}; Σ={a,b,c}; q0=0; F={2,3}; δ ={0=>a=>1, 1=>c=>2, 1=>b=>3, 3=>a=>3} (a) Describa formalmente el AFD equivalente con la δ completa. (b) Escriba una ER que represente al LR reconocido por este AFD. (c) Describa las actividades de este AFD para todos los casos posibles. (8) Diseñar un AFD que acepte las palabras en el alfabeto {a,b} en que la cantidad de a s es impar. (9) Diseñar un AFD que acepte las palabras en el alfabeto {0,1} en que las cadenas empiecen con 1 no tienen un par de 0 s consecutivos. (1 10)* (10) Diseñe un AFD que reconozca la ER (a) 1(1 0 -)*(1 0) 1 (g) (0 1)*00 (b) (a b)(a b(a b))* (h) (b bab)+ (c) (0 1)(10)* (i) (ab ba)+ (d) a(bb*a)* (j) ba* (e) a(aa)* (k) (ba)* (f) (aa)+ (l) b*a* 55

Lenguajes Incontextuales Es un lenguaje formal. Generado por una Gramática Independiente de Contexto. Ejemplos: expresiones aritméticas, sentencias de un lenguaje de programación. 56

Lenguajes Incontextuales Lema del bombeo Sea L un lenguaje regular. Entonces existe un entero ("longitud de bombeo") Tal que cualquier cadena w perteneciente a L, de longitud mayor o igual que p, Puede ser escrita como w = xyz (p. ej. dividiendo w en tres subcadenas), de forma que se satisfacen las siguientes condiciones: 1. y 1 2. xy p 3. i / i 0, xy i zєl y es la subcadena que puede ser bombeada (borrada o repetida un número i de veces como se indica en (3), y la cadena resultante seguirá perteneciendo a L). (1) significa que la cadena y que se bombea debe tener como mínimo longitud uno. (2) significa que y debe estar dentro de los p primeros caracteres. No hay restricciones acerca de x o z. 57

Lenguajes Incontextuales Autómata Finito Con Pila Conocidos como autómatas push-down Mas poderosos que los AF, porque además de reconocer a los Lenguajes Regulares tienen la capacidad de reconocer a los Lenguajes Independientes de Contexto. Además de tener estados y transiciones, tiene una memoria en forma de PILA (stack) que permite almacenar, retirar y consultar cierta información que será útil para reconocer los LICs. Su lógica es LIFO (Last In First Out) Los AFD no tienen memoria: no pueden representar el lenguaje: L = {x n y n, n Є N} Es un dispositivo no determinístico. 58

Lenguajes Incontextuales Autómata Finito Con Pila Definición formal: AP = <Q, Σ, Ґ, q0, p0, F, > Q: Conjunto finito de estados. Σ: Alfabeto de entrada Ґ : Alfabeto de la pila (terminales, símbolos de la pila) q0: Estado inicial p0: Símbolo inicial de la pila, el que indica que la pila no tiene símbolos. Ejemplo: $ F: Conjunto de estados finales. : Relación de transición ((Q, Σ, Ґ),(Q, Ґ)) (estado actual, símbolo del alfabeto que se lee en la entrada, símbolo que se extrae de la pila, nuevo estado, símbolo que se inserta en la pila) Transiciones especiales: δ(p,x,λ)=(q,z) (transita sin extraer nada de la pila) δ(p,λ,s)=(q,λ) (transita sin avanzar en la cinta de entrada) δ (p,λ,λ)=(q,λ) (transita sin avanzar en la cinta de entrada y sin extraer nada de la pila) δ(p,x,λ)=(q,λ) Autómata finito!!!!! 59

Lenguajes Incontextuales Autómata Finito Con Pila Un AP puede reconocer un LIC de dos maneras: Por estado final, como en los AF s Por pila vacía. Lenguaje aceptado por el AP: L(M) Es la colección de todas las cadenas que acepta M Los lenguajes aceptados por los autómatas de pila incluyen los lenguajes regulares Teorema: Para cada autómata de pila que acepte cadenas sin vaciar su pila, existe un autómata que acepta el mismo lenguaje pero que vacía su pila antes de llegar a un estado de aceptación. Vaciado de pila: 1) Se crea un nuevo estado inicial y se añade la transición:δ(i,λ,λ)=(q0,#) 2) Para cada uno de los estados finales se añade un nuevo estado mediante la transición δ(f,λ,λ)=(s, λ) 3) Para cada símbolo de pila x se añade la transición: δ(s,λ,x)=(s, λ) 4) Se añade un estado final nuevo y la transición δ(s,λ, #)=(F, λ) 60

Lenguajes Incontextuales Ejemplo: Cualquier cadena que contenga un número de y s menor o igual a que de x s. Pueden estar intercaladas. L={xyx, xxy, xxyxyx, } leo / saco / pongo q x / λ / x y / x / λ 61

Lenguajes Incontextuales Ejemplo: S asb λ p a / λ / a leo / saco / pongo FALTA LEER aabb abb LEO a PILA λ a b / a / λ bb a aa b b a q b / a / λ λ b λ 62

Lenguajes Incontextuales Ejemplo: L = {ww -1 / w,w -1 ЄΣ*} S A λ A aa bb aaa bab a / λ / a FALTA LEER LEO PILA p b / λ / b abba a λ bba a λ / λ / λ ba b ba λ ba ba q a / a / λ b / b / λ a b a a λ λ 63

Lenguajes Incontextuales Ejemplo: S cac A b ba FALTA LEER LEO PILA p cbbc c λ c / λ / c bbc b c q b / λ / λ bc c b c c c c / c / λ λ λ r 64

Lenguajes Incontextuales Ejemplo: x n y n x n x / λ / x y / λ / λ x / x / λ p q r s t λ / λ / # λ / λ / λ λ / λ / λ λ / # / λ 65

Lenguajes Incontextuales Autómata Finito Con Pila Para cada gramática G independiente del contexto, existe un autómata de pila M tal que L(G)=L(M) Dada una gramática G independiente del contexto, construimos un autómata de pila M de la manera siguiente: Designe el alfabeto de M como los símbolos terminales de G, y los símbolos de pila de M como los símbolos terminales y no terminales de G, junto con el símbolo especial #. 2) Designe los estados de M como i, p, q y f, donde i es el estado inicial y f es el único estado de aceptación. 3) Introduzca la transición (i, λ, λ; p, #). 4) Introduzca una transición (p, λ, λ; q, S) donde S es el símbolo inicial de G. 5) Introduzca una transición de la forma (q, λ, N; q, w) para cada regla de reescritura N w en G (aquí empleamos nuestra nueva convención que permite que una sola transición inserte más de un símbolo de pila. W puede ser una cadena de cero o más símbolos, incluyento terminales y no terminales. 6) Introduzca una transición de la forma (q, x, x; q, λ) para cada terminal x de G (es decir, para cada símbolo del alfabeto de M 7) Introduzca la transición (q, λ, #; f, λ) 66

Lenguajes Incontextuales Ejemplo: S zmnz M ama z N bnb z 67

Lenguajes Incontextuales Análisis completo de la cadena zazabzbz que efectúa el autómata: 68

Lenguajes Incontextuales Ejemplo: S aa A Sb b λ / Aa / S λ / b / A λ / bs / A b / λ / b a / λ / a p q r r λ / λ / # λ / S / λ λ / # / λ 69

Lenguajes Incontextuales Ejemplo: S xsy λ λ / S / xsy λ / S / λ y / y / λ x / x / λ p q r r λ / λ / # λ / λ / S λ / # / λ 70

Lenguajes Incontextuales Compilador LL Es un analizador sintáctico. L: left to right: lee la entrada de izquierda a derecha. L: left derivation: produce una derivación por la izquierda. Principio de previsión ( lookahead ): observar un carácter de la palabra de entrada que aún no ha sido leído El carácter leído por adelantado nos permite en algunas ocasiones decidir adecuadamente cual de las transiciones del AP conviene aplicar. 71

Lenguajes Incontextuales Compilador LL FALTA LEER abcba LEO PILA λ Ejemplo: S asa bsb c abcba λ S λ p abcba a asa bcba Sa λ λ / λ / S bcba bsba b λ / S / asa cba Sba q λ / S / bsb λ / S / c a / a / λ b / b / λ cba ba a λ c b cba ba a c / c / λ λ a λ 72

Lenguajes Incontextuales Compilador LL FALTA LEER aabbb LEO PILA λ Ejemplo: S asb asbb λ aabbb λ S λ p aabbb a asbb abbb Sbb λ λ / λ / S abbb asbbb a λ / S / asb bbb λ Sbbb q λ / S / asbb λ / S / λ bbb bb b bbb bb a / a / λ b / b / λ b b b b λ λ 73

Lenguajes Incontextuales Compilador LR Es un analizador sintáctico. L: left to right: lee la entrada de izquierda a derecha. R: righmost derivation: produce una derivación mas a la derecha. No tratan de adivinar una derivación, sino que tratan de ir reconociendo cadenas que correspondan al lado derecho de una regla gramatical, para reemplazar por el lado izquierdo. Recorren el árbol de derivación de abajo hacia arriba, por lo que se llaman también compiladores ascendentes. Cadena reconocida con el símbolo distinguido en el tope de la Pila. Se analiza el tope de la Pila Operaciones: Desplazar: pasar un carácter de la entrada al tope de la pila Reducir: reemplazar en el tope de la pila el lado derecho de una regla gramatical por el lado izquierdo de la misma. 74

Lenguajes Incontextuales Compilador LR Ejemplo: S aa; A Sb b i λ / λ / # λ / Aa / S FALTA LEER aabb aabb PILA λ # ACCION λ / λ / # DESP p λ / bs / A λ / b / A abb bb b a# aa# baa# DESP DESP RED q λ / S / λ λ / # / λ a / λ / a b / λ / b b b λ λ λ Aaa# Sa# bsa# Aa# S# RED DESP RED RED λ / S / λ f λ λ # λ λ / # / λ FIN 75

Lenguajes Incontextuales Compilador LR Ejemplo: S asa bsb c i λ / λ / # λ / asa / S FALTA LEER abcba abcba PILA λ # ACCION λ / λ / # DESP p λ / bsb / S λ / c / S bcba cba ba a# ba# cba# DESP DESP RED q λ / S / λ λ / # / λ a / λ / a b / λ / b c / λ / c ba a a λ λ Sba# bsba# Sa# asa# S# DESP RED DESP RED λ / S / λ f λ λ # λ λ / # / λ FIN 76

Lenguajes Incontextuales Compilador LR Ejemplo: S cac; A ba b i p q λ / λ / # λ / S / λ λ / # / λ λ / cac / S λ / Ab / A λ / b / A b / λ / b c / λ / c FALTA LEER cbbc cbbc bbc bc bc c c λ λ λ PILA λ # c# bc# Ac# bac# Ac# cac# S# # ACCION λ / λ / # DESP DESP RED DESP RED DESP RED λ / S / λ λ / # / λ f λ λ FIN 77

Lenguajes Incontextuales Compilador LR Ejemplo: S asb asbb λ i p q λ / λ / # λ / S / λ λ / # / λ λ / bsa / S λ / bbsa / S λ / λ / S a / λ / a b / λ / b FALTA LEER aabbb aabbb abbb bbb bbb bb bb b λ λ PILA λ # a# aa# Saa# bsaa# Sa# bsa# bbsa# S# ACCION λ / λ / # DESP DESP DESP DESP RED DESP DESP RED λ / S / λ f λ λ # λ λ / # / λ FIN 78

Lenguajes Incontextuales Ejercicios (1) En uno de sus viajes, Alicia pasó por un pueblo dispuesta a encontrar alojamiento para pasar la noche. Sin embargo, pronto se dio cuenta de que no entendía una palabra a ninguno de los habitantes. Al cabo de un tiempo de intentar, infructuosamente, establecer comunicación con alguno de ellos, se le acercó un muchacho de aspecto bonachón que la saludó cortésmente: Buenos días. Alicia respiró aliviada. Buenos días. Menos mal que me encuentro a alguien que me entiende! Estaba ya a punto de marcharme de aquí. Qué lengua hablan en este pueblo? A decir verdad, hay en el pueblo dos dialectos diferentes. Si le interesa, puedo hablarle sobre ellos. Me gustaría mucho. 79

Lenguajes Incontextuales Ejercicios (cont.) Pues verá, en el lenguaje oficial, se utiliza una única vocal, la a, combinada con dos consonantes, la s y la b, para formar sílabas. Una sílaba puede ser, o bien una vocal, o bien una consonante seguida por una vocal. Además, para complicar las cosas, cuando una sílaba comienza por consonante, la sílaba precedente puede terminar en s. Eso es fácil, en mi idioma las sílabas son muy similares. Y cómo se forman las palabras? Una palabra siempre tiene una o varias sílabas. Sin embargo, se da el caso de que todas las palabras han de tener el mismo número de sílabas acabadas en s, que de sílabas acabadas en a. Ah, sí? Qué lenguaje tan original! Entonces, basba es una palabra válida, pero asbaa no lo es, no? Exacto. Pero eso no es todo, porque, como te dije, en el norte del pueblo se habla otro dialecto. En qué se diferencia? Las palabras se forman de manera parecida, pero no hay eses al final de las sílabas, por lo que no existe la restricción de que haya el mismo número de sílabas acabadas en s que acabadas en a. Entonces, palabras válidas del sur serían bassa y basba, y palabras válidas del norte serían aa, basa, o sasasa, verdad?. Así es! 80

Lenguajes Incontextuales Ejercicios (cont.) Se pide, para cada uno de estos dos dialectos: En el caso de que sea un lenguaje regular, a. Proporcionar una Expresión Regular para el lenguaje. b. Construir un autómata finito determinista que acepte las palabras del mismo. c. Proporcionar una gramática regular para el lenguaje. En el caso de que sea independiente del contexto no regular, a. Proporcionar una gramática independiente del contexto para el lenguaje. b. Proporcionar un autómata a pila LL que acepte las palabras del lenguaje. c. Analizar la palabra basba con un autómata de pila de tipo LR. 81

Lenguajes Incontextuales Ejercicios (2) Cual es el lenguaje que acepta el siguiente AP q 0 / λ / 0 0 / 1 / λ 1 / 0 / λ 1 / λ / 1 (3) Diseñe el AP que reconoce el lenguaje generado por esta gramática: S λ A A aab baa ab ba 82

Lenguajes Incontextuales Ejercicios (4) Obtenga la gramática G tal que L(G) = {xyxy n zy 2n+1 ; n 0} Solución: S xyxa; A yayy zy (5) Construya la tabla de análisis sintáctico LR para la cadena zxzxyzyz S zabz A xax z B yby z (6) Grafique y defina el AP de análisis sintáctico LL para la siguiente gramática: S AA 0 A SS 1 83

Máquina de Turing Los autómatas son insuficientes: AF modelan adecuadamente mecanismos que requieren una memoria pequeña. AP modelan adecuadamente mecanismos que requieren memoria infinita que sólo puede ser replicada con una pila LIFO (Last In First Out) {a n b n c n n > 0} no es un lenguaje libre de contexto pero sí es sensitivo al contexto, es decir, es generado por una gramática sensitiva al contexto. {a n b n c n n 0} no es un lenguaje sensitivo al contexto (porque contiene λ) pero sí es un lenguaje recursivamente numerable, es decir, es generado por una gramática sin restricción. 84

Máquina de Turing {a n b n c n n > 0} es un lenguaje sensitivo al contexto 1. S abtc abc 2. T ABTc 3. T ABc 4. BA BX 5. BX YX 6. YX AX 7. AX AB 8. aa aa 9. ab ab 10. bb bb {a n b n c n n 0} es un lenguaje recursivamente enumerable 1. S abtc abc λ 2. T ABTc 3. T ABc 4. BA BX 5. BX YX 6. YX AX 7. AX AB 8. aa aa 9. ab ab 10. bb bb 85

Máquina de Turing LR {a n b m } {a n b n } X α LSC LLC {a n b n c n } α X β α γ β 86

Máquina de Turing Máquina abstracta definida por el matemático inglés Alan Turing en Proceedings of the London Mathematical Society 2:230-265, 1936. Turing empezó tratando de modelar a una computadora humana, es decir, a un humano tratando de resolver algorítmicamente un problema utilizando papel y lápiz. Reglas básicas: Sólo se pueden escribir símbolos que pertenecen a un conjunto finito. Cada acción que la computadora toma sólo depende del símbolo que está siendo examinado y del estado mental en ese momento. Aunque el estado mental puede cambiar como resultado de los símbolos o cálculos que se han efectuado, el número de estados mentales distintos es finito. Máquina abstracta Examinar un símbolo individual en el papel. Borrar un símbolo o reemplazarlo por otro. Trasladar la atención de una parte del papel a otra. 87

Máquina de Turing Se tiene un alfabeto de entrada y un alfabeto, posiblemente mayor, de los símbolos utilizados durante la operación o cálculos de la máquina. Un conjunto finito de estados que representan los distintos estados mentales. En lugar de una hoja de papel, se tiene una cinta lineal semi-infinita con inicio en el extremo izquierdo e infinita hacia la derecha. Esta cinta esta dividida en cuadros, en cada uno de los cuales puede estar un símbolo o un espacio en blanco (#). 88

Máquina de Turing Caricatura de una MT 89

Máquina de Turing Operación de la MT: La acción está determinada por el estado actual y el símbolo en la cinta y consiste de tres partes Reemplazar el símbolo en el cuadrado actual por otro que puede ser distinto o el mismo. Mover la cabeza lectora a la derecha o a la izquierda (a menos que se encuentre en el extremo izquierdo de la cinta) o quedarse donde está. Hacer una transición de estado, que puede ser distinto o el mismo. La cinta sirve como dispositivo de entrada y salida así como la memoria disponible para utilizar durante la operación o cálculos de la máquina. Diferencias de una MT con un autómata La cabeza lectora se puede mover a la izquierda o derecha o quedarse donde está. Puede modificar los datos de entrada. Puede examinar parte de los datos de entrada, modificarlos, irse a otro lugar de la cinta y ejecutar ciertos cálculos, regresar a re-examinar los datos de entrada, repetir cualquiera de estas acciones y quizás detener el proceso antes de procesar todos los datos de entrada. En lugar de que un subconjunto de los estados sean estados finales o de aceptación, tendremos dos estados de paro que son un estado de aceptación h a y un estado de rechazo h r. 90

Máquina de Turing Definición formal: Una Máquina de Turing es un quinteto T = (Q, Σ, Γ, q 0, δ) Q es un conjunto finito de estados en el que no está incluído los estados de paro h a y h r. Σ es el alfabeto de entrada con el que se forman las cadenas a procesar. Γ es el alfabeto de la cinta que contiene a Σ pero no al espacio en blanco (#). q 0 es el estado inicial y pertenece a Q. La función de transición δ: Q (Γ {#}) Q {h a, h r } (Γ {#}) {#}) {R, L, S} δ(q, X) = (r, Y, D) significa que si la máquina se encuentra en el estado q y leyendo el símbolo X en la cinta, entonces la máquina reemplaza X por Y, se mueve al estado r y mueve la cabeza lectora en la dirección D. 91

Máquina de Turing Notación gráfica: δ(q, X) = (r, Y, D) se puede representar gráficamente de la siguiente manera: X/Y, D q r 92

Máquina de Turing Configuración inicial # a b b a # # #... 93

Máquina de Turing Aceptación de palabras por MT Una palabra x Σ* es aceptada por una MT T si empezando con la configuración inicial correspondiente a la palabra x, eventualmente se llega al estado de aceptación h a. Note que no es necesario procesar toda la palabra para aceptarla. El lenguaje aceptado por T es el conjunto de palabras aceptadas por T. Rechazo de palabras por MT Una palabra x Σ* es rechazada por una MT T si empezando con la configuración inicial correspondiente a la palabra x, eventualmente se llega al estado de rechazo h r. Note que no es necesario procesar toda la palabra para rechazarla. Es costumbre omitir el estado de rechazo y rechazar una palabra cuando no existe una transición, es decir, cuando la máquina se queda colgada. 94

Máquina de Turing Ejemplo 1: MT que acepta palabras sobre {a, b} que inician con a #/#,R a/a,s 1 2 h a b/b,s #/#,S h r 95

Máquina de Turing Ejemplo 2: MT palabras en {a, b} que terminan con a a/a,r b/b,r 1 #/#,R #/#,L a/a,s 2 3 h a b/b,s #/#,S h r 96

Máquina de Turing Ejemplo 3: MT que acepta (a b)*aba (a b)* 97

Máquina de Turing Ejemplo 4: MT que acepta (a b)*aba 98

Máquina de Turing Ejemplo 5: MT que acepta palíndromos sobre {a, b}. 99

Máquina de Turing Ejemplo 6: MT que acepta el lenguaje L = {ss s (a + b)*} Este lenguaje no es libre de contexto 100

Máquina de Turing Ejemplo 7: MT que acepta la reversa de un string 101

Máquina de Turing Ejemplo 8: MT que calcula n % 2 102

Máquina de Turing Ejemplo 9: MT que copia strings 103

Máquina de Turing Ejemplo 10: MT que borra un símbolo 104

Máquina de Turing Configuración de una Máquina de Turing Definida por: El estado en el que se encuentra El contenido de la cinta La posición de la cabeza lectora. Representada como uqv cuando la MT se encuentra en el estado q, el contenido de la cinta es la cadena uv (en ese orden, de izquierda a derecha) y la cabeza lectora se encuentra en el primer símbolo de v. La cinta sólo contiene espacios blancos (#) a la derecha del último símbolo de v; para abreviar, estos blancos a la derecha de la palabra no se indican en la configuración. Por ejemplo, #1011q 7 01111 representa la configuración cuando el contenido de la cinta es #101101111###..., el estado es q 7 y la cabeza lectora se encuentra sobre el segundo 0. # 1 0 1 1 0 1 1 1 1 # # #... q 7 105

Máquina de Turing Aceptabilidad Un lenguaje L es Turing-aceptable si existe una máquina de Turing que dá halt para toda entrada w L, es decir, la palabra w es aceptada por la máquina de Turing. Ejemplo: Máquina de Turing que acepte el lenguaje L = {1 x x = 2 n para n 0}, es decir, cadenas de 1 s cuya longitud es una potencia de 2. Idea de construcción: 1) Barrer la palabra de izquierda a derecha tachando un 1 sí y otro no. 2) Si en el paso 1) la cinta contiene sólo un 1, entonces parar y aceptar. 3) Si en el paso 1) la cinta contiene más de un 1 y el número de 1 s es impar, entonces rechazar. 4) Regresar la cabeza lectora al extremo izquierdo de la cinta. 5) Ir al paso 1). 106

Máquina de Turing 1/1,L Ejemplo de aceptabilidad x/1,l x/x,r 1/#,L #/#,L #/#,R #/#,R 1/x,R 1/1,R 1/x,R #/#,L #/#,S h a 1/1,R 107

Máquina de Turing Decidibilidad Un lenguaje L es Turing-decidible si hay alguna MT que entrega un resultado 1 si la entrada w está en L, y un resultado 0 en caso contrario. Debe quedar claro que para que una MT entregue como resultado 1 o 0, es condición indispensable que la palabra de entrada haya sido aceptada. Esto tiene la consecuencia siguiente: Un lenguaje es Turing-decidible solamente si es Turing-aceptable. Si un lenguaje no es Turing-decidible se dice que es indecidible. M as adelante veremos lenguajes indecidibles. 108

Máquina de Turing Ejemplo de decidibilidad 109

Máquina de Turing Tesis de Church y límites de MT 1.- Todo lenguaje T-decidible es T-aceptable. 2.- L es T-decidible si L c es T-decidible. 3.- L es T-decidible si tanto L como L c son T-aceptables. No hay ningún tipo de máquina abstracta más poderosa que la MT (es decir, que acepte / decida clases de lenguajes más grandes). La tesis de Church no ha sido ni probada ni refutada. 110

Máquina de Turing Se ha comparado la MT con: Extensiones de la misma MT: Cinta infinita a la izquierda No determinismo Varias cintas, varias cabezas Otras máquinas: Máquinas de Post Autómatas de varias pilas Otros paradigmas: cálculo lambda 111

Máquina de Turing Límites de las MT Problema del paro ( halt ) de una MT con una palabra w. El lenguaje indecidible en este caso es el formado por palabras d(m)w en que M da halt con la entrada w. Teorema: No existe ninguna MT que decida el lenguaje formado por palabras d(m)w en que M da halt con la entrada w. 112

Máquina de Turing Fin de ejecución: Estado de paro ( halt ) detiene la operación. acepta la palabra. Ciclo infinito o colgar la máquina ejecución nunca termina o no puede continuar. la palabra es rechazada. Un lenguaje para el que existe una Máquina de Turing que lo acepte se dice que es un lenguaje recursivamente numerable. 113

Proceso de Compilación Compilador: Es un complejo programa que lee un programa escrito en un lenguaje fuente y lo traduce a un programa equivalente en un lenguaje objeto, normalmente mas cercano al lenguaje de máquina. Programa original programa fuente Programa destino programa objeto Partes del proceso de compilación: ANALISIS a partir del programa fuente, crea una representación intermedia del mismo. SINTESIS a partir de esta representación intermedia, construye el programa objeto. 114

Proceso de Compilación Análisis del programa fuente En la compilación, el análisis esta formado por tres fases: Análisis léxico Análisis sintáctico Análisis semántico Análisis léxico Analizador léxico SCANNER Detecta los diferentes elementos básicos (lexemas) que constituyen un programa fuente (identificadores, palabras reservadas, constantes, operadores y caracteres de puntuación) Solo se ocupa de los Lenguajes Regulares que forman parte del Lenguaje de Programación. Entrada caracteres Salida tokens Los espacios que separan a los lexemas son ignorados. 115

Proceso de Compilación Análisis del programa fuente Análisis sintáctico Analizador sintáctico PARSER Entrada tokens Conoce la sintaxis del Lenguaje de Programación Determina si las construcciones que componen el programa son sintácticamente correctas, agrupando los tokens en unidades. Análisis semántico Tarea: verificación de tipos, para que cada operador trabaje sobre operandos permitidos según la especificación del Lenguaje de Programación. Las rutinas semánticas llevan a cabo dos funciones: Chequean la semántica estática de cada construcción; es decir, verifican que la construcción analizada sea legal y que tenga un significado. Verifican que las variables involucradas estén definidas, que los tipos sean correctas, etc. Si la construcción, es semánticamente correcta, las rutinas semánticas también hacen la traducción; es decir, generan el código para una Maquina Virtual que, a través de sus instrucciones, implementa correctamente la construcción analizada. 116