“Análisis y simulación de sistemas complejos” curso 2008/09 Alfonso Ortega: alfonso.ortega@uam.es Manuel Alfonseca: Manuel.Alfonseca@uam.es 1 Repaso de Teoría de Autómatas y Lenguajes Formales: recordatorio gramáticas Chomsky. 2 Recordatorio de las gramáticas de Chomsky • Historia. • Avram Noam Chomsky (lingüista norteamericano) presenta en los años 50 este modelo para formalizar el lenguaje natural. • También al estudio de los lenguajes de programación de ordenadores. • Descripción informal. • Formalizan las reglas sintácticas para la construcción o análisis de las frases de cualquier lenguaje (“las estudiadas en el colegio”). • Conciben los lenguajes como conjuntos de cadenas de símbolos. • Por lo tanto estas gramáticas están compuestas principalmente por un alfabeto de símbolos y unas reglas para transformar unas cadenas de símbolos en otras. 3 Recordatorio de las gramáticas de Chomsky • Ejemplo informal. • A continuación se presenta informalmente un ejemplo para el siguiente lenguaje de igualdades matemáticas: • Se pueden utilizar como operaciones +, -, ×, ÷ • La igualdad se representa con el símbolo = • Se pueden utilizar como operandos números naturales y variables (representadas por las letras del alfabeto) • Se pueden utilizar libremente paréntesis si se necesitan • Así podemos escribir: 3+x=a (a+4)*b=1 4 Recordatorio de las gramáticas de Chomsky • Ejemplo informal (cont.) . • Nuestro conocimiento del lenguaje ofrece las siguientes reglas • La estructura de una igualdad puede esquematizarse así: igualdad es expresión aritmética = expresión aritmética • Donde la estructura de las expresiones aritméticas es ésta: expresión aritmética es numero o es variable o es expresión aritmética operador expresión aritmética o es (expresión aritmética) • Y los operadores y variables se pueden describir así: operador es + o es - o es × o es ÷ variable es a o es b o es … o es z 5 Recordatorio de las gramáticas de Chomsky • Ejemplo formal. • Una gramática formal para este problema organiza ordenadamente esta información. • Se muestra a continuación <NE, TE, SE , PE> • Donde : • NE={ <igualdad>, <expr>, <op>, <var>, <num>} • TE={=,+, -, ÷ , ×, (, ), 0,... , 9, a,...,z} • SE=<igualdad> 6 Recordatorio de las gramáticas de Chomsky • Ejemplo formal (cont.) . • PE={ , <igualdad>::= <expr>=<expr> <expr>::= <var> | <num> | (<expr>) | <expr><op><expr> <op>::= + | - | × | ÷ , <var>::= a | ... | z } , • Y falta la regla que define <num> que se excluye por simplificar la charla. 7 Recordatorio de las gramáticas de Chomsky • Ejemplo formal 2 (cont.) . • Ejemplo de uso de la gramática: árbol sintáctico. <igualdad> 3 8 + x = a Recordatorio de las gramáticas de Chomsky • Ejemplo formal 2 (cont.) . • Ejemplo de uso de la gramática: árbol sintáctico. <igualdad> <expr> 3 + <expr> x = a 8 Recordatorio de las gramáticas de Chomsky • Ejemplo formal 2 (cont.) . • Ejemplo de uso de la gramática: árbol sintáctico. <igualdad> <expr> <expr> 3 8 <op> + <expr> <expr> x = a Recordatorio de las gramáticas de Chomsky • Ejemplo formal 2 (cont.) . • Ejemplo de uso de la gramática: árbol sintáctico. <igualdad> <expr> <expr> <op> <expr> <expr> <num> 3 + x = a 8 Recordatorio de las gramáticas de Chomsky • Ejemplo formal 2 (cont.) . • Ejemplo de uso de la gramática: árbol sintáctico. <igualdad> <expr> <expr> <op> <expr> <expr> <num> 3 8 + x = a Recordatorio de las gramáticas de Chomsky • Ejemplo formal 2 (cont.) . • Ejemplo de uso de la gramática: árbol sintáctico. <igualdad> <expr> <expr> <op> <expr> <expr> <num> 3 + x = a 8 Recordatorio de las gramáticas de Chomsky • Ejemplo formal 2 (cont.) . • Ejemplo de uso de la gramática: árbol sintáctico. <igualdad> <expr> <expr> <op> <num> 3 8 <expr> <expr> <var> + x = a Recordatorio de las gramáticas de Chomsky • Ejemplo formal 2 (cont.) . • Ejemplo de uso de la gramática: árbol sintáctico. <igualdad> <expr> <expr> <op> <expr> <num> 3 <expr> <var> + x = a 8 Recordatorio de las gramáticas de Chomsky • Ejemplo formal 2 (cont.) . • Ejemplo de uso de la gramática: árbol sintáctico. <igualdad> <expr> <expr> <op> <num> 3 8 <expr> <expr> <var> <var> + x = a Recordatorio de las gramáticas de Chomsky • Ejemplo formal 2 (cont.) . • Ejemplo de uso de la gramática: árbol sintáctico. <igualdad> <expr> <expr> <op> <num> 3 <expr> <expr> <var> <var> + x = a 8 Recordatorio de las gramáticas de Chomsky. • Conclusiones. • Se sigue una secuencia para aplicar las reglas de una en una. • Los componentes de la gramática se justifican así: • Hay símbolos a los que no se puede aplicar reglas porque ya son símbolos finales (terminales): a, =, x, 3, + • Los demás no pueden estar en la expresión final (no terminales) • El proceso comienza con el símbolo que representa lo que se quiere analizar / construir (axioma) <igualdad> 9 • La expresión final obtenida (que pertenece al lenguaje generado por la gramática) está compuesta sólo por terminales. Las palabras intermedias no pertenecen a él. Bibliografía. •Enrique Alfonseca, Manuel Alfonseca, Roberto Moriyón Teoría de Autómatas y Lenguajes Formales. McGraw Hill 2007 ISBN: 97884-481-5637-4 •Hopcroft, J.E., Motwani, R. and Ullman, J.D.: 'Introducción a la Teoría de Autómatas, Lenguajes y Computación', Ed. Pearson Education, 2002. 10