GRAMATICAS LIBRES DEL CONTEXTO

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

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

Procesadores de Lenguaje

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

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

Unidad 4. Autómatas de Pila

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

Autómatas de Pila. Descripciones instantáneas o IDs. El Lenguaje de PDA. Equivalencia entre PDAs y CFGs INAOE (INAOE) 1 / 50

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

5 Autómatas de pila 5.1 Descripción informal. 5.2 Definiciones

Lenguajes y Gramáticas

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

Procesadores de Lenguaje

Expresiones regulares, gramáticas regulares

Teoría de Lenguajes. Gramáticas incontextuales

Temas. Objetivo. Que el estudiante logre: 1) Identificar conceptos constructivos de la Teoría de la Computabilidad. 2) Definir autómatas de pila.

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

Ejercicios de Lógica Proposicional *

Práctica 1 de Excel (Curso )

Unidad II: Análisis semántico

INAOE. Gramáticas Libres de Contexto. Definición formal de CFGs. Derivaciones usando. Derivaciones. izquierda y. derecha.

Ingeniería en Computación. Autómatas y Lenguajes Formales. Unidad de competencia IV: Conocer, utilizar y diseñar gramáticas de libre contexto

Tema: Autómata de Pila

Programación Lineal. Modelo de Redes. Alcance de las aplicaciones. Curso: Investigación de Operaciones Ing. Javier Villatoro

Fila: Es un conjunto de varias celdas dispuestas en sentido horizontal.

Autómatas de Pila y Lenguajes Incontextuales

Tema 5 Lenguajes independientes del contexto. Sintaxis

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

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

Interrogación 2. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003

Autómatas Deterministas. Ivan Olmos Pineda

INTRODUCCION A LA INTELIGENCIA ARTIFICIAL MÓDULO 6- CÁLCULO DE PREDICADOS Y LÓGICA DE PRIMER ORDEN

Tema 6: Teoría Semántica

MATEMÁTICAS II CICLO COMÚN INBAC UNIDAD DIDÁCTICA #5

Estatutos de Control C# Estatutos de Decisión (Selección)

ESTRUCTURA Y TECNOLOGÍA DE LOS COMPUTADORES I. TEMA 4 Algebra booleana y puertas lógicas

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Equivalencia Entre PDA y CFL

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

Estructuras de Control. Secuencia y Selección

BOLETÍN 5: Algoritmos II

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Unidad I: Análisis semántico

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

SESIÓN 10 DERIVACIÓN DE FUNCIONES TRIGONOMÉTRICAS DIRECTAS

FUNDAMENTOS DE INFORMÁTICA

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

Instituto Tecnológico de Celaya

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

Operaciones básicas con hojas de cálculo

Un autómata con pila no determinista (APND) es una septupla Q A B F en la que

Lenguajes, Gramáticas y Autómatas Conceptos

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

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

El lenguaje C. 1. Identificadores, constantes y variables

Algoritmos y programas. Algoritmos y Estructuras de Datos I

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

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.

Formulación del problema de la ruta más corta en programación lineal

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas

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

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

NOCIÓN DE PUNTO, RECTA Y PLANO

Tema 3. Análisis sintáctico descendente

Caracterización de los números reales

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

Construcción de tablas de análisis sintáctico LL(1)

Expresiones Regulares y Derivadas Formales

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

{ } Listado de elementos del conjunto

Programación Funcional Haskell Clase 21

PROPIEDADES DE LOS CAMPOS. Cada campo de una tabla dispone de una serie de características que proporcionan un control

Pregunta 1 Es correcta esta definición? Por qué?

Computabilidad y Lenguajes Formales: Autómatas de Pila

Toda copia en PAPEL es un "Documento No Controlado" a excepción del original.

ESCUELA: UNIVERSIDAD DEL ISTMO

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

1 LIMITES Y DERIVADAS

Bloque 12. Función Raíz Cuadrada: dominio y contradominio

PROGRAMA INSTRUCCIONAL AUTOMATAS Y LENGUAJES FORMALES

1) PRINCIPIO FUNDAMENTAL: Toda regla de escritura matemática debe facilitar la comprensión de los objetos matemáticos representados y su lectura.

2do. Parcial. Todos los ejercicios se entregarán en hojas separadas. El examen tipo test cuenta hasta 2 puntos sobre la nota total.

Programación. Test Autoevaluación Tema 3

Aula Virtual Análisis de Circuitos D.C. Facultad Tecnológica Universidad Distrital Francisco José de Caldas.

Procesadores de lenguaje Tema Análisis sintáctico (Parte I)

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

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos.

CUESTIONARIO APLICACIONES OFIMÁTICAS PARA HOJAS DE CÁLCULO

CAPÍTULO II TEORÍA DE CONJUNTOS

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

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

John Venn Matemático y filósofo británico creador de los diagramas de Venn

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 3.1: Autómatas Finitos Deterministas

Capítulo 2 Conjuntos. 2.1 Introducción. 2.2 Determinación de conjuntos. Definición:

Algoritmos y estructuras de datos

Transcripción:

GRMTICS LIBRES DEL CONTEXTO Estas gramáticas, conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto. Los lenguajes libres del contexto son aquellos que pueden ser reconocidos por un autómata de pila determinístico o no determinístico. Como toda gramática se definen mediante una cuadrupla G = (N, T, P, S), siendo - N es un conjunto finito de símbolos no terminales - T es un conjunto finito de símbolos terminales N T = - P es un conjunto finito de producciones - S es el símbolo distinguido o axioma S (N T) En una gramática libre del contexto, cada producción de P tiene la forma N {S} ω ω (N T) * - {ε} Es decir, que en el lado izquierdo de una producción pueden aparecer el símbolo distinguido o un símbolo no terminal y en el lado derecho de una producción cualquier cadena de símbolos terminales y/o no terminales de longitud mayor o igual que 1. La gramática puede contener también la producción S ε si el lenguaje que se quiere generar contiene la cadena vacía. Los ejemplos mostrados a continuación corresponden a los lenguajes libres del contexto que fueron introducidos en los ejemplos 1, 2 y 3 del apunte de autómatas de pila. Ejemplo 1: La siguiente gramática genera las cadenas del lenguaje L 1 = {wcw R / w {a, b} * } G 1 = ({}, {a, b, c}, P 1, S 1 ), y P 1 contiene las siguientes producciones S 1 aa bb c Ejemplo 2: La siguiente gramática genera las cadenas del lenguaje L 2 = {0 i 1 i+k 2 k 3 n+1 / i, k, n 0 } Casos Cadenas de L 2 si n, i, k > 0 0 i 1 i+k 2 k 3 n+1 si n=0 y i, k > 0 0 i 1 i+k 2 k 3 si i=0 y n, k >0 1 k 2 k 3 n+1 si k=0 y n, i >0 0 i 1 i 3 n+1 si n, i=0 y k >0 1 k 2 k 3 si n, k=0 y i >0 0 i 1 i 3 si i, k =0 y n >0 3 n+1 si n,i,k=0 3 G 2 = ({, B, C}, {0, 1, 2, 3}, P 2, S 2 ), y P 2 contiene las producciones

S 2 BC B 1B2 S 2 C B 12 S 2 BC C 3C S 2 C C 3 01 01 Ejemplo 3: La siguiente gramática genera las cadenas del lenguaje L 3 = {h n g j e 2n d 3i / i, j, n 0 } Casos Cadenas de L 3 si n, i, j > 0 h n g j e 2n d 3i si n=0 y i, j > 0 g j d 3i si i=0 y n, j >0 h n g j e 2n si j=0 y n, i >0 h n e 2n d 3i si n, i=0 y j >0 g j si n, j=0 y i >0 d 3i si i, j =0 y n >0 h n e 2n si n,i,j=0 ε G 3 = ({, B, C}, {h, g, d, e}, P 3, S 3 ), y P 3 contiene las producciones S 3 ε B S 3 C B gb S 3 B g S 3 C C dddc hee C ddd hee Ejemplo 4: La siguiente gramática genera las cadenas de L 4 = {a m b p c p+m / m, p 1} {a i b 2i / i 1 } G 4 = ({, B, C}, {a, b, c}, P 4, S 4 ), y P 4 contiene las producciones S 4 S 4 C ac abc B bbc B bc C acbb C abb BNF Las gramáticas libres del contexto se escriben, frecuentemente, utilizando una notación conocida como BNF (Backus-Naur Form). BNF es la técnica más común para definir la sintaxis de los lenguajes de programación. En esta notación se deben seguir las siguientes convenciones: - los no terminales se escriben entre paréntesis angulares < > - los terminales se representan con cadenas de caracteres sin paréntesis angulares

- el lado izquierdo de cada regla debe tener únicamente un no terminal (ya que es una gramática libre del contexto) - el símbolo ::=, que se lee se define como o se reescribe como, se utiliza en lugar de - varias producciones del tipo <> ::= <B 1 > <> ::= <B 2 >... <> ::= <B n > se pueden escribir como <> ::= <B 1 > <B 2 >... <B n > Ejemplo 5: La siguiente es una definición BNF del lenguaje que consiste de cadenas de paréntesis anidados: <cadena_par> :: = <cadena_par> <paréntesis> <paréntesis> <paréntesis> ::= (<cadena_par> ) ( ) Por ejemplo las cadenas ( ) ( ( ) ) y ( ) ( ) ( ) son cadenas válidas. En cambio las cadenas ( ( ) y ( ) ) ) no pertenecen al lenguaje. rbol de derivación Un árbol de derivación permite mostrar gráficamente cómo se puede derivar cualquier cadena de un lenguaje a partir del símbolo distinguido de una gramática que genera ese lenguaje. Un árbol es un conjunto de puntos, llamados nodos, unidos por líneas, llamadas arcos. Un arco conecta dos nodos distintos. Para ser un árbol un conjunto de nodos y arcos debe satisfacer ciertas propiedades: - hay un único nodo distinguido, llamado raíz (se dibuja en la parte superior) que no tiene arcos incidentes. - todo nodo c excepto el nodo raíz está conectado con un arco a otro nodo k, llamado el padre de c (c es el hijo de k). El padre de un nodo, se dibuja por encima del nodo. - todos los nodos están conectados al nodo raíz mediante un único camino. - los nodos que no tienen hijos se denominan hojas, el resto de los nodos se denominan nodos interiores. El árbol de derivación tiene las siguientes propiedades: - el nodo raíz está rotulado con el símbolo distinguido de la gramática; - cada hoja corresponde a un símbolo terminal o un símbolo no terminal; - cada nodo interior corresponde a un símbolo no terminal. nodo raíz nodos interiores hojas Para cada cadena del lenguaje generado por una gramática es posible construir (al menos) un árbol de derivación, en el cual cada hoja tiene como rótulo uno de los símbolos de la cadena.

Ejemplo 6: La siguiente definición BNF describe la sintaxis (simplificada) de una sentencia de asignación de un lenguaje tipo Pascal: ::= := <expresion> <expresion> ::= <expresion> + <expresion> - ::= * / ::= ( <expresion> ) ::= B C D... Z ::= 0 1 2 3 4 5 6 7 8 9 Por ejemplo, la sentencia := + B es una sentencia de asignación que pertenece al lenguaje definido por la definición BNF dada, y cuyo árbol de derivación se construye como se muestra a continuación: 1) 2) := <expresion> := <expresion> 3) 4) := <expresion> := <expresion> 5) 6) := <expresion> := <expresion> <termino

7) 8) <sent_asig := <expresion> := <expresion> <expresion + 9) 10) := <expresion> := <expresion> B

El árbol de derivación correspondiente a la sentencia C := D E * F es el siguiente := <expresion> C <expresion> - * F D E Gramáticas ambiguas Una gramática es ambigua si permite construir dos o más árboles de derivación distintos para la misma cadena. Por lo tanto, para demostrar que una gramática es ambigua lo único que se necesita es encontrar una cadena que tenga más de un árbol de derivación. Una gramática en la cual, para toda cadena generada w, todas las derivaciones de w tienen el mismo árbol de derivación es no ambigua. En algunos casos, dada una gramática ambigua, se puede encontrar otra gramática que produzca el mismo lenguaje pero que no sea ambigua. Si todas las gramáticas independientes del contexto para un lenguaje son ambiguas, se dice que el lenguaje es un lenguaje independiente del contexto inherentemente ambiguo. Por ejemplo, el lenguaje L = { a i b j c k / i = j ó j = k } Ejemplo 7: La siguiente es otra definición BNF simplificada para sentencias de asignación de un lenguaje tipo Pascal: ::= := ::= + - () * / ::= B C D... Z ::= 0 1 2 3 4 5 6 7 8 9 La cadena J := 1 + 2 * 3 es una cadena de este lenguaje de sentencias de asignación. Se pueden construir dos árboles de derivación distintos para ella. Esto determina que la gramática es ambigua. Sin embargo, este lenguaje NO es inherentemente ambiguo ya que es posible construir una gramática no ambigua que lo genere (como se mostró en el Ejemplo 6).

Árbol 1 Árbol 2 := := J * J + + * 3 1 1 2 2 3 Si se pretende determinar cómo se calcula el valor de la derecha del operador de asignación, se obtienen dos resultados posibles. El árbol 1 agrupa la expresión como (1 + 2) * 3, dando como resultado el valor incorrecto 9; esto se debe a que en este agrupamiento no se tiene en cuenta la precedencia de los operadores. El árbol 2 agrupa la expresión como 1 + (2 * 3), y da como resultado 7 que es el valor correcto. Este ejemplo muestra que la ambigüedad puede ser un problema para ciertos lenguajes en los que su significado depende, en parte, de su estructura, como ocurre con los lenguajes naturales y los lenguajes de programación. Como una cadena que tiene más de un árbol de derivación suele tener más de un significado, para aplicaciones de compilación es necesario diseñar, cuando sea posible, gramáticas no ambiguas.