LENGUAJES Y GRAMÁTICAS Orlando Arboleda Molina Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle 20 de septiembre de 2008
Contenido Lenguajes y Gramáticas Gramáticas Gramáticas con estructura de frase Derivaciones Lenguaje generado Tipos de Gramáticas Árboles de derivación Forma Backus Naur
Contenido Lenguajes y Gramáticas Gramáticas Gramáticas con estructura de frase Derivaciones Lenguaje generado Tipos de Gramáticas Árboles de derivación Forma Backus Naur
Gramáticas Son usadas para generar las frases de un lenguaje y determinar si una frase esta en el lenguaje. Se centran en la sintaxis (forma de la sentencia) y no en la semántica (significado). sintaxis de un lenguaje natural La sintaxis de un lenguaje natural (los lenguajes hablados como: el español, ingles, etc) es extremadamente complicada, tanto que no es posible especificar todas sus reglas. sintaxis de un lenguaje formal Un lenguaje formal si es especificado por un conjunto de reglas de sintaxis bien definidas.
Gramáticas (2) Un vocabulario (o alfabeto) V es un conjunto finito y no vacío de elementos llamados símbolos. Una palabra sobre V es una cadena de longitud finita de elementos de V. La palabra vacía o cadena vacía, denotada por λ, es la cadena que no contiene símbolos. El conjunto de todas las palabras sobre V es denotado por V. Un lenguaje sobre V es un subconjunto de V.
Contenido Lenguajes y Gramáticas Gramáticas Gramáticas con estructura de frase Derivaciones Lenguaje generado Tipos de Gramáticas Árboles de derivación Forma Backus Naur
Gramáticas con estructura de frase Una gramática con estructura de frase G = (V, T, S, P) consiste de: Un vocabulario V. Un subconjunto T de V que son elementos terminales. Un símbolo inicial S de V T. Un conjunto de producciones P (reglas que especifican que podemos reemplazar una cadena por otra). El conjunto V T es denotado por N. los elementos de N son llamados elementos no terminales. Cada producción en P debe contener al menos un símbolo no terminal en su lado izquierdo.
Gramáticas estructura de frase (2) Ejemplo: Sea G = (V, T, S, P) donde: V = {a, b, A, B, S} T = {a, b} S es el símbolo inicial y P = {S ABa, A BB, B ab, AB b}. G es un ejemplo de una gramática de estructura de frase. Que frases se pueden formar a partir de esta gramática?
Contenido Lenguajes y Gramáticas Gramáticas Gramáticas con estructura de frase Derivaciones Lenguaje generado Tipos de Gramáticas Árboles de derivación Forma Backus Naur
Derivaciones Sea G = (V, T, S, P) una gramática con estructura de frase. Sean w 0 = lz 0 r y w 1 = lz 1 r cadenas sobre V. Si z 0 z 1 es una producción de G, decimos que w 1 se deriva directamente de w 0 y escribimos w 0 w1. Si w 0, w1,..., w n son cadenas sobre V tal que w 0 w 1 w 2,..., w n 1 w n, decimos que w n es derivable o se deriva desde w 0 y se denotar a w 0 wn. La secuencia de pasos usados para obtener w n desde w 0 se llama derivación.
Derivaciones (2) Ejercicio: Sea G = (V, T, S, P) donde: V = {a, b, A, B, S} T = {a, b} S es el símbolo inicial y P = {S ABa, A BB, B ab, AB b}. Determinar cual de las siguientes cadenas son derivables: 1. abababa 2. ababba 3. abab
Contenido Lenguajes y Gramáticas Gramáticas Gramáticas con estructura de frase Derivaciones Lenguaje generado Tipos de Gramáticas Árboles de derivación Forma Backus Naur
Lenguaje generado Sea G = (V, T, S, P) una gramática con estructura de frase. El lenguaje generado por G (o el lenguaje de G) denotado por L(G), es el conjunto de todas las cadenas de terminales que se derivan del estado inicial S. En otras palabras: L(G) = {w T S w}
Lenguaje generado (2) Ejercicio1: Sea G = (V, T, S, P) donde: V = {S, 0, 1} T = {0, 1} S es el símbolo inicial y P = {S 11S, S 0}. Cuál es L(G), el lenguaje de esta gramática? R//: Conjunto de cadenas iniciada con una cantidad par de unos y finalizadas en cero.
Lenguaje generado (2) Ejercicio2: Construir gramáticas con estructura de frase que generen los siguientes lenguajes: 1. L(G 1 ) = {0 n 1 n n = 0, 1,...}. 2. L(G 2 ) = {0 2n 1 n n = 0, 1,...}. 3. L(G 3 ) = {0 m 1 n m 0, n 0}. 4. L(G 4 ) = {0 m 1 n m n 0}. 5. El lenguaje de las cadenas que contienen un numero par de solo unos (y ningun otro simbolo). 6. El lenguaje de las cadenas que inician en uno seguidas de una cantidad impar de ceros. 7. El lenguaje de las cadenas palíndromes (conformadas por los simbolos cero y uno).
Contenido Lenguajes y Gramáticas Gramáticas Gramáticas con estructura de frase Derivaciones Lenguaje generado Tipos de Gramáticas Árboles de derivación Forma Backus Naur
Tipos de Gramáticas Clasificación según Chomsky (Avram Noam Chomsky doctor en linguística) Las gramáticas con estructura de frase se pueden clasificar según el tipo de producciones que utilizen. Los diferentes tipos de lenguajes corresponden a las clases de lenguaje que púeden ser reconocidas utilizando diferentes modelos de máquinas de computación.
Tipos de Gramáticas (2) Gramáticas tipo 0 Tambien llamadas de estructura de frase. Aquellas que no imponen ninguna restricción a sus produciones. Gramáticas tipo 1 Tambien llamadas dependientes del contexto. Aquellas que solo pueden tener producciones de la forma: w 1 w 2, donde la longitud de w 2 es mayor que la de w 1. w 1 λ.
Tipos de Gramáticas (3) Gramáticas tipo 2 Tambien llamadas libres de contexto o independientes de contexto. Aquellas que solo puede tener producciones de la forma w 1 w 2 donde w 1 es un único símbolo no terminal (independiente de quien lo acompañe en una cadena) Estas gramáticas se usan para definir la sintaxis de casi todos los lenguajes de programación. Se pueden diseñar algoritmos eficientes que determinen cuando y como generar una cadena.
Tipos de Gramáticas (4) Gramáticas tipo 3 Tambien llamadas regulares. Aquellas que solo puede tener producciones de la forma w 1 w 2 donde w 1 = A y w 2 = ab o w 2 = a, donde A y B son símbolos no terminales y a es un símbolo terminal. w 1 = S y w 2 = λ. Estas gramáticas se usan para buscar patrones dentro de un texto y en el análisis léxico.
Contenido Lenguajes y Gramáticas Gramáticas Gramáticas con estructura de frase Derivaciones Lenguaje generado Tipos de Gramáticas Árboles de derivación Forma Backus Naur
Árboles de derivación Un árbol de derivación es un árbol con raíz ordenado que permite representar gráficamente una derivación en el lenguaje generado por una gramática libre de contexto. Donde: La ráiz representa el símbolo inicial. Los nodos internos representan los símbolos no terminales que aparecen en la derivación. Las hojas representan los simbolos términales. Ejercicio1: Determinar el arbol de derivación de la cadena 000111 con la gramática obtenida en el item 1 de la pagina 15. Ejercicio1: Determinar el arbol de derivación de la cadena 01111 con la gramática obtenida en el item 3 de la pagina 15.
Contenido Lenguajes y Gramáticas Gramáticas Gramáticas con estructura de frase Derivaciones Lenguaje generado Tipos de Gramáticas Árboles de derivación Forma Backus Naur
Forma Backus Naur (FBN) (Jhon Backus la inventó y Peter Naur la modificó para especificar ALGOL) Consiste en otra notación para especificar gramáticas independientes del contexto. Es usada para especificar las reglas sintácticas de muchos lenguajes de computador (ej: Java) Reglas 1. Listar todas las producciones para el mismo símbolo no terminal en la misma expresión, separadas por barras ( ). 2. Usar el símbolo ::= en lugar del símbolo. 3. Encerrar los símbolos no terminales entre corchetes <>.
Forma Backus Naur (2) Ejemplo: Sea la gramática independe del contexto con P = {S 0S0, S 1S1, S 1, S 0, S λ} Su notación Backus-Naur es: < S >::= 0 < S > 0 1 < S > 1 1 0 λ
Forma Backus Naur (3) Ejercicio: Dar la notación BNF en cada caso: 1. Enteros con signo en notación decimal. 2. funciones en JAVA. 3. condicionales de JAVA. 4. iteradores de JAVA. 5. lenguaje HTML.