Gramáticas.

Slides:



Advertisements
Presentaciones similares
el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
Advertisements

GRAMATICA LIBRE DE CONTEXTO
INSTITUTO TECNOLÓGICO DE MINATITLÁN
Gramáticas, lenguajes y reconocedores
Gramáticas Libres de Contexto
Conceptos básicos Def. Un símbolo es cualquier carácter imprimible.
Autómatas de pila (Pushdown automata)
Diseño de Autómatas Finitos
Autómatas Finitos.
Diseño de AFN’s.
Lenguajes y Expresiones Regulares
Máquinas de Turing (MT)
IBD Clase 7.
Álgebra 2010 Clase N° 1 Conjuntos numéricos I
TIPOS DE GRAMATICAS JERARQUIAS DE CHOMSKY
Tema 2.- Gramáticas independientes de contexto.
Tema 3 Propiedades de los lenguajes independientes de contexto
TEORÍA DE CONJUNTOS.
Organización de Lenguajes y Compiladores 1
ANALIZADOR SINTACTICO
TEÓRIA DE CONJUNTOS Profesor: Rubén Alva Cabrera.
Ecuaciones y Resolución de Ecuaciones Lineales
Exponentes Racionales y Radicales
Estadística Computacional I
Expresiones regulares
Tema 2 Autómatas finitos 1. Autómata finito determinista
Tema 1.- Lenguajes. Gramáticas
4. Máquinas de Turing 4.1. Modelo básico.
Taller matemático (Cálculo)
Fundamentos de Lógica Difusa (Fuzzy)
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
ANALISIS SINTACTICO DESCENDENTE
Factorización (productos notables)
EJERCICIOS DE EXPRESIONES REGULARES Y AUTOMATAS
La transformada de Laplace
Teoría de conjuntos Un conjunto es una colección o clase de objetos bien definidos y diferenciables entre sí. Los conjuntos pueden ser finitos o infinitos.
2º curso Ingeniería Técnica en Informática de Sistemas UNED
DEFINICIÓN MATEMÁTICA DE UNA FUNCIÓN DE VARIABLE REAL.
UPC MATRICES MA49 (EPE) Universidad Peruana de Ciencias Aplicadas
Sistemas de Ecuaciones lineales
Teoría de lenguajes y compiladores
5. Propiedades de Cierre de los lenguajes regulares
Tema 1.- Lenguajes. Gramáticas
Tema 2 Lenguajes Formales.
Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.
Algoritmos para calcular el Conjunto Primero y el Conjunto Siguiente
Teoría de Conjuntos Prof. Carlos Coronel R..
Lenguajes Independientes del Contexto
Autómatas de Pila Teoría del Autómata.
ANALISIS SINTACTICO Parte I
Clasificación de Gramáticas y Manejo de Errores
Gramáticas Otoño2012. Importancia de las gramáticas 2 Son una herramienta muy poderosa para describir y analizar lenguajes.
Teoría de lenguajes y compiladores
Introducción al Análisis Sintáctico
Tema 2 Autómatas finitos 1. Autómata finito determinista
Lenguajes regulares Teoría del Autómata.
Teoría de lenguajes y compiladores Analizadores lexicográficos
Teoría de Autómatas I 2º curso Ingeniería Técnica en Informática de Sistemas UNED.
Teoría de lenguajes y compiladores
Lenguajes Formales y Autómatas
Gramáticas Otoño2012. Importancia de las gramáticas 2 Son una herramienta muy poderosa para describir y analizar lenguajes.
UNIVERSIDAD LATINA (UNILA)
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
I.- ESTUDIO DE LOS LENGUAJES DE PROGRAMACIÓN.
Unidad 3 Analizador Sintáctico
REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACION SUPERIOR UNIVERSIDAD VALLE DEL MOMBOY CARVAJAL EDO. TRUJILLO ENERO 2014.
República Bolivariana de Venezuela Ministerio del Poder Popular para la Educación Superior Universidad Valle del Momboy Carvajal, Trujillo Alumnas Luzmila.
Sintaxis y Semántica. S.Takahashi Fases en el proceso de análisis de lenguajes Lexer Parser caracteres tokensrespuesta.
Centro Universitario Valle de México Gramáticas Libres de Contexto Dra. Maricela Quintana López Elaborado por: Autómatas y Lenguajes Formales.
Transcripción de la presentación:

Gramáticas

Importancia de las gramáticas Son una herramienta muy poderosa para describir y analizar lenguajes.

¿Es PAL un lenguaje regular? Ejemplo: Palíndromes Un palíndrome es una palabra w que cumple w = wR, donde wR es la misma palabra w sólo que escrita en orden inverso. Sea PAL = {w  (a + b)*| w = wR}, es decir, PAL es el lenguaje que consiste de las palabras palíndromes sobre {a, b}. Ejemplos de palíndromes sobre {a, b} a, aba, aabbaa, babaabab. ¿Es PAL un lenguaje regular?

Definición recursiva de PAL , a, b  PAL Si S  PAL entonces aSa y bSb  PAL Ninguna cadena pertenece a PAL a menos que pueda ser obtenida utilizando las reglas 1 y 2 un número finito de veces. Podemos considerar a S como una variable que representa genericamente un elemento de PAL cuyo valor queremos calcular. Informalmente, las reglas que definen PAL pueden reescribirse como: S puede tomar el valor , a o b. S puede tomar el valor aSa o bSb, donde la nueva S debe ser calculada. Y si en lugar de escribir “puede tomar el valor” escribimos el símbolo , entonces escribiríamos

Gramática que define PAL S  , S  a, S  b. Abreviando: S   | a | b. S  aSa, S  bSb. Abreviando: S  aSa | bSb. Cualquier palíndrome sobre {a, b} debe poder ser obtenido aplicando un número finito de veces las reglas de reemplazo 1 y 2.

Ejemplo: palabras no palíndromes S  aSa | bSb | A A  aBb | bBa B  aB | bB | 

Definición Una gramática G es un cuádruplo (V, , R, S) donde V es un alfabeto. , el conjunto de los símbolos terminales, es un subconjunto de V. R, el conjunto de reglas de transformación o de producción, es un subconjunto de V* × V*. S, el símbolo inicial, es un elemento de V  . Los elementos de V   son llamados variables o símbolos no terminales. Por lo general las reglas se escriben    en lugar de (, ). Aplicar la regla    a una palabra uv produce la palabra uv, por lo que las reglas pueden ser vistas como reglas de remplazo.

Explicación de los elementos de una gramática Símbolos terminales: son elementos del alfabeto que no se pueden transformar, por eso se llaman terminales. Normalmente se denotan por letras minúsculas. Variables o símbolos no terminales: son elementos auxiliares que permiten poner restricciones sintácticas a un lenguaje. Las variables sí se pueden transformar, utilizando las reglas, en una cadena de variables y/o terminales. Por lo general se denotan por letras mayúsculas o por la notación <variable>. Reglas: permiten reemplazar variables para generar oraciones válidas de un lenguaje. Puede haber varias reglas para una misma variable, en este caso y para ahorrar espacio, las distintas opciones se colocan en una sola regla con los distintos reemplazos separados por |. Por ejemplo    |  |  abrevia las tres reglas          Símbolo inicial: es el símbolo a partir del cual se generan todas las palabras válidas.

Lenguaje generado por una gramática Definición: Decimos que la cadena w1 deriva en un paso a la cadena w2 (w1 G w2) si y solo si existen cadenas x, y  V* tales que w1 = xuy y w2 = xvy y además existe una regla u  v en R. Si no hay lugar a confusión, se acostumbra omitir el subíndice que indica la gramática G. Definición: una cadena w  V* es derivable a partir de la gramática G si y solo si existe una secuencia de derivación iniciando en el símbolo inicial y terminando en la cadena w: S = w1  w2  w3    wn = w. Escribimos si  deriva a  en 0 o más pasos. Definición: el lenguaje generado por una gramática G, L(G), es igual al conjunto de las palabras en * (es decir, consisten de símbolos terminales) derivables a partir de G. Una gramática describe las reglas sintácticas del lenguaje. Si una palabra no sigue las reglas, entonces no pertenecen al lenguaje generado por la gramática.

Ejemplo G = (V, , R, S) V = {a, b, c, S, A, B}  = {a, b, c} R: S  AccA A  BA |  B  a | b | c w1 = abcc  L(G) y w2 = acb  L(G) Cadena Regla Derivación S S  AccA S  AccA AccA A  BA  BAccA BAccA B  a  aAccA aAccA A  BA  aBAccA aBAccA B  b  abAccA abAccA A    abccA abccA A    abcc

Jerarquía de Chomsky G3  G2  G1  G0

Descripción de las gramáticas Gramáticas Regulares (tipo 3 o G3): el conjunto de reglas es un subconjunto finito de (V  )  [(V  )    ), es decir: El lado izquierdo consiste sólo de una variable. El lado derecho consiste de Un símbolo terminal seguido de una variable ó Sólo un símbolo terminal ó La cadena vacía. Ejemplo: A  aB | a |  Gramáticas Libres de Contexto, GLC, (tipo 2 o G2): el conjunto de reglas es un subconjunto finito de (V  )  V*, es decir: No hay restricciones para el lado derecho. Ejemplo: S  aSb | ab | 

...Descripción de las gramáticas Gramáticas Sensitivas al Contexto (tipo 1 o G1): el conjunto de reglas es un subconjunto finito de V+ × V+, es decir, las reglas son de la forma A   donde , ,   V* y A  V  , es decir, A es un símbolo no terminal. Además, las reglas son no-contractivas, es decir, la longitud del lado izquierdo es menor o igual a la longitud del lado derecho. Esta propiedad de no-contracción garantiza que un lenguaje sensitivo al contexto no contiene . Ejemplos: S  abc | aAbc Ab  bA Ac  Bbcc bB  Bb aB  aa | aaA Gramáticas sin restricción (tipo 0 o G0): el conjunto de reglas es un subconjunto finito de V+ × V*, es decir, no hay restricciones para las reglas, excepto que el lado izquierdo no es . Ejemplos: S  aSBC | aBC CB  BC aB  ab bB  bb bC  bc cC  cc A  bc

Autómatas y gramáticas Decimos que una gramática regular G es equivalente a un autómata M (G  M) si el lenguaje reconocido por el autómata es igual al lenguaje generado por la gramática, es decir, si L(G) = L(M). Ejemplo: Gramática G con V = {a, b, S, A},  = {a, b}, variables = {S, A}, el símbolo inicial es S y las reglas de producción son S  aS | aA A  bA | b S Z a b A M: G y M son equivalentes, ambos reconocen a+b+.

Conversión de gramáticas regulares a autómatas finitos Sea G = (V, G, R, S) una gramática regular. Un AFN que reconoce el mismo lenguaje que G es el autómata M = (K, SM, , s, F) definido por (V  )  {Z} si existe alguna regla A  a (A variable y a símbolo terminal) K = (V  ) (variables) en caso contrario. El alfabeto del autómata consiste de los símbolos terminales de la gramática, es decir, M = G. B cuando exista una regla A  aB (a símbolo terminal y A, B variables) (A,a) = Z cuando exista una regla A  a (a símbolo terminal y A variable) El estado inicial del autómata es el símbolo inicial de la gramática. {A | A   es una regla}  {Z} si Z  K F = {A | A   es una regla} en caso contrario

Conversión de gramáticas regulares a... En palabras: Asociar a los símbolos no terminales (variables) de la gramática los estados del autómata. Cada regla A  bC de la gramática nos define una transición (A, b) = C; A y C son variables, b es terminal. Las reglas A  b, en caso que haya, nos definen transiciones (A, b) = Z, donde Z es un nuevo estado para el que no hay un símbolo no-terminal asociado.

Ejemplo Convertir una gramática regular a un autómata finito. S  aA S  bA A  aB A  bB A  a B  aA B  bA a a a S A B b b a b Z

Conversión de autómatas finitos a gramáticas regulares Asociar a los estados del autómata los símbolos no terminales de la gramática. El símbolo inicial de la gramática corresponde al estado inicial del autómata. La transición (A, b) = C define la regla A  bC. En caso de que el estado C en la transición (A, b) = C sea un estado final, entonces añadimos la regla A  b, además de la regla A  bC, ya incluida en el paso anterior.

Ejemplo Convertir un autómata finito a una gramática regular. Q0  aQ1 Q0  bQ0 Q1  aQ2 Q1  bQ0 Q2  aQ3 Q2  bQ0 Q3  aQ3 Q3  bQ3 Q0  a Q0  b Q1  a Q1  b Q2  b Convertir un autómata finito a una gramática regular. Q0  aQ1 Q0  bQ0 Q1  aQ2 Q1  bQ0 Q2  aQ3 Q2  bQ0 Q3  aQ3 Q3  bQ3 Q0  a Q0  b Q1  a Q1  b Q2  b b b q1 q0 a a b q3 q2 a a,b

Gramáticas y Lenguajes Libres de Contexto (GLC’s y LLC’s) Una gramática puede generar lenguajes finitos o infinitos. En el caso de lenguajes infinitos la recursión es necesaria; esto se logra con reglas recursivas como A  uAv. Toda gramática regular es libre de contexto, pero ¿Existen GLC que no sean regulares? En otras palabras: ¿Existen LLC’s que no sean lenguajes regulares?

Ejemplos Ejemplo 1: La LLC (V, S, R, S) donde V = {S, A, a, b}, S = {a, b} y las reglas son S  A A  aAb A   ¿Qué lenguaje genera? {w = anbn | n  0}, el cual no es regular. Ejemplo 2: La GLC (V, S, R, S) donde V = {S,(, )}, S = {(, )} y las reglas son S  (S) S  SS S  () ¿Qué lenguaje genera? El de los paréntesis bien balanceados: {(), (()), ()(), (())(), (()()), (()())(()()),...}, el cual no es regular Estos ejemplos demuestran que existen GLC’s que no son regulares.

Derivaciones Derivación por la izquierda: las reglas de reemplazo son aplicadas a la primera variable de izquierda a derecha. Derivación por la derecha: las reglas de reemplazo son aplicadas a la última variable de izquierda a derecha. Ejemplo: G = (V, S, R, S) V = {S, A, a, b}  = {a, b} R: S  AA A  AAA | bA | Ab | a En esta gramática existen, por lo menos cuatro derivaciones de la palabra ababaa.

Derivaciones de ababaa S  AA S  AA S  AA S  AA

Árbol de derivación Para una derivación su árbol de derivación (parse tree) se construye de la siguiente manera: Inicializar AD con la raíz S. Si A  x1x2...xn (con xi  V) es la regla de derivación aplicada a la cadena uAv, entonces añadir x1, x2, ..., xn como los hijos de A en el árbol. Si A   es la regla de derivación aplicada a la cadena uAv, entonces añadir  como hijo único de A en el árbol. Al árbol de derivación también se le llama árbol de análisis o árbol de análisis gramatical o árbol de análisis sintáctico.

... Árbol de derivación El orden de las hojas también sigue el proceso iterativo de construcción del árbol: Inicialmente sólo hay la hoja S y el orden es obvio. Al utilizar la regla A  x1x2...xn, cada xi se convierte en hoja y en el orden de las hojas A se reemplaza por x1, x2, ...,xn. Al utilizar la regla A  , simplemente se reemplaza A por . La cadena de caracteres terminales que se obtiene al recorrer las hojas en orden se llama el producto del árbol. Ver figuras 3.2 y 3.3 del libro de Sudkamp.

Ambigüedad en GLC Una GLC es ambigua si existe una cadena w  L(G) que tiene más de una derivación por la izquierda o más de una derivación por la derecha o si tiene dos o más árboles de derivación. En caso de que toda cadena w  L(G) tenga un único árbol de derivación, la gramática es no ambigua. Ejemplo: la gramática S  aS | Sa | a es ambigua porque aa tiene dos derivaciones por la izquierda S  aS  aa S  Sa  aa Esta gramática genera el lenguaje a+ que también es el lenguaje generado por la gramática no ambigua S  aS | a. S a S a

Otro ejemplo La gramática para expresiones aritméticas sobre las variables x y y: E  E + E E  E  E E  x E  y es ambigua porque la cadena x + y  x tiene dos árboles de derivación: La ambigüedad puede producir serios problemas en lenguajes cuyo significado depende, en parte, de su estructura, como es el caso de los lenguajes naturales y los de programación: “María habló de Leticia embarazada” o “José vio a Luis con lentes”. En el ejemplo de arriba el árbol izquierdo representa (x + y)  x y el de la derecha representa x + (y  x). E  x + y E + x * y

Eliminar ambigüedad En algunos casos, la ambigüedad de una gramática se puede eliminar utilizando nuevas variables que eliminen los árboles de derivación no deseados. En el ejemplo de los operadores aritméticos, además de la variable E, que representa expresiones, también se utilizan las variables F para factores y T para términos y se tienen las siguientes reglas: E  E + T E  T T  T  F T  F F  (E) F  x F  y Existen los LLC inherentemente ambiguos para los que no existe una gramática no ambigua equivalente. Ejemplo: L = {anbncmdm}  {anbmcmdn}, n  1, m  1.

Propiedades de cerradura de los LLC Los lenguajes libres de contexto (LLC) son cerrados con respecto a la unión, concatenación y cerradura de Kleene. Sin embargo no son cerrados con respecto a la intersección ni con respecto a la complementación. Esto no quiere decir que la intersección de dos LLC necesariamente no sea un LLC o que el complemento de un LLC necesariamente no sea LLC, solamente estipula que hay LLCs cuyo complemento no es un LLC, asimismo, hay LLCs cuya intersección no es LLC. ¿Existen lenguajes que no sean libres de contexto? SI Ejemplo: {anbncn | n  0} no es LLC.