Gramáticas, lenguajes y reconocedores Lenguajes Formales La teoría formal de lenguajes fue introducida por primera vez por Noam Chomsky en los años 50s. Def. Un lenguaje formal consiste en un conjunto finito o infinito de cadenas de longitud finita, generadas a partir de un conjunto finito de símbolos, llamado vocabulario. Def. Una gramática consiste en un conjunto de reglas, llamadas producciones, que aplicadas sobre elementos del vocabulario, generan todas y solamente aquellas cadenas validas del lenguage.
Gramáticas, lenguajes y reconocedores Una gramática G (V, , S, P) consta de los siguientes componentes: - Categorías sintácticas : un conjunto finito V, de símbolos llamados no-terminales, que representan componentes abastractos del lenguaje. Ej. <expresión>, <fórmula>, <número>, etc. - Vocabulario : conjunto finito , de símbolos terminales. Ej. {0, 1}, {a, b, c, ..., z}, {+, -, : =, *, /}, ... - Símbolo de inicio : categoría sintáctica S, que identifica la construcción que representa una oración completa (o fórmula bien formada). Tipicamente llamado <oración> o S. - Producciones : conjunto finito P, de reglas de re-escritura, que especifícan la relación entre ciertas cadenas de símbolos terminales y no-terminales. Ej. <expresión> = <número> + ( <expresión>)
Gramáticas, lenguajes y reconocedores Jerarquía de lenguajes de Chomsky Chomsky definió 4 clases distintas de gramáticas: El tipo de la gramática depende del grado de complejidad de sus producciones. Tipo 3: Gramáticas regulares Tipo 2: Gramáticas libres de contexto Tipo 1: Gramáticas sensitivas de contexto Tipo 0: Gramáticas sin restricciones. . Tipo 3 Tipo 2 Tipo 1 Tipo 0
Gramáticas, lenguajes y reconocedores Gramáticas regulares Una gramática regular (regular grammar) es aquella en la cual cada producción tiene la forma: X a Y o X a en donde X y Y son categorías sintácticas y a es un símbolo terminal. Las gramáticas regulares, generan lenguajes regulares, ejemplo: - El lenguaje de todas las cadenas de 1’s y 0’s que terminan con dos unos {11, 011, 111, 0011, 0111, 1011, 1111, ...}*: R1. X 0 X R2. X 1 X R3. X 1 1 - El lenguaje de todas las cadenas con un numero par de 0’s. - El lenguaje de todas las cadenas que contengan la secuencia 100. * Mostrar como se generan algunas cadenas.
Gramáticas, lenguajes y reconocedores Gramaticas libres de contexto Una gramática libre de contexto (context free grammar) es aquella en la cual las producciones son de la forma: A en donde A es una categoría sintáctica y una cadena de símbolos terminales o categorías sintácticas. Las gramáticas libres de contexto generan lenguajes libres de contexto. Ejemplos de lenguajes libres de contexto: a). Los palindromes que son palabras que se leen igual si se leen en cualquier dirección. Para un vocabulario de 0’s y 1’s: {, 0, 1, 00, 11, 010, 000, 101, 111, ...} ( es la cadena vacía) R1. S R4. S 0S0 R2. S 0 R5. S 1S1 R3. S 1 b). {ai bi | i0} R1. S R2. S aSb
Gramáticas, lenguajes y reconocedores Gramáticas sensitivas de contexto En estas gramáticas las producciones tienen la forma: u X v u Y v en donde u y v son cadenas arbitrarias, posiblemente vacías, de elementos de V, y X y Y son categorías sintácticas. Una gramática sensitiva de contexto genera un lenguaje sensitivo de contexto. Ejemplo: a). { ai bi ci | i0} R1. S aAbc | abc R3. Cb bC R2. A aAbC | abC R4. Cc cc
Gramáticas, lenguajes y reconocedores Gramáticas sin restricciones Las gramáticas sin restricciones son la clase más grande de gramáticas de estructura de frase. Una producción del tipo: en donde y son cadenas arbitrarias de símbolos tomados de (V )* que indica que la subcadena puede ser reemplazada por la subcadena en cualquier cadena en que aparezca. Una gramática sin restricciones genera un lenguaje sin restricciones. Ejemplos: a). { ai bi ci | i0} R1. S aAbc | R3. Cb bC R2. A aAbC | R4. Cc cc b). {u[u] | u {a, b}*} R1. S aT[a] | bT[b] | [] R5. Ba aB R2. T[ aT[A | bT[B | [ R6. Bb bB R3. Aa aA R7. A] a] R4. Ab bA R8. B] b]
Gramáticas, lenguajes y reconocedores Gramáticas Regulares Gramáticas Libres de Contexto Gramáticas Dependientes de Contexto Gramáticas sin Restricciones Lenguajes Regulares Lenguajes Libres de Contexto Lenguajes Dependientes de Contexto Lenguajes sin Restricciones Automata Finito Push-down Automata Linear-Bounded Automata Máquina de Turing
Bibliografía [ASU, 86] Aho A. V., Sethi R., Ullman J. D., “COMPILERS, Principles, Techniques and Tools,” Addison-Wesley publishers, 1986.