Teoría de Autómatas y Lenguajes Formales – Curso 2001/2002 Marta Gonzalo García – 22/10/01 CLASIFICACIÓN DE LENGUAJES FORMALES DE CHOMSKY. Noam Chomsky Lingüista estadounidense nacido en 1928, profesor del Instituto de Tecnología de Massachussets (MIT). Aparte de como lingüista y profesor universitario, es muy conocido por su faceta de intelectual y crítico activista político. Chomsky ha publicado más de 70 libros y más de 1000 artículos sobre diversos temas como lingüística, filosofía y política. Muchos no dudan en calificarle como uno de los personajes más destacados del siglo XX. Como no podía ser de otra manera, Internet muestra la relevancia de este personaje: existen numerosas páginas relacionadas con Noam Chomsky. Desde niño comenzó a desarrollar su afición por la política: el primer artículo que publicó a los 11 años en el periódico del colegio trataba de la Guerra Civil Española. Desde muy joven estuvo vinculado a movimientos políticos de izquierdas cercanos al marxismo, a pesar de que él procedía de una familia judía de clase media-alta. Actualmente se define a sí mismo como “socialista liberal”. Chomsky siempre se ha mostrado especialmente beligerante con la política exterior de Estados Unidos, jugando un importante papel en las protestas contra la guerra de Vietnam en los 60’s. Asimismo ha denunciado y criticado los crímenes cometidos en Centroamérica por regímenes dictatoriales apoyados por EEUU, , la actitud norteamericana en Oriente Medio apoyando la línea dura de los israelíes, la intervención militar en la Guerra del Golfo y en general la política exterior del mundo occidental. Lamentablemente y como consecuencia de los trágicos sucesos del 11 de septiembre, el conflicto está ahora más que nunca de actualidad. Al final de este texto, he incluido un par de enlaces a entrevistas con Chomsky después de los ataques terroristas. Su actitud política ha hecho de él una figura de inspiración para algunos movimientos de izquierdas, y un enemigo para muchos otros. Especialmente negativa es su relación con la prensa estadounidense, a la que siempre ha acusado de enmascarar las acciones del gobierno de forma subjetiva y de justificar masacres en otros lugares del mundo en nombre de la justicia y de los valores democráticos. Centrándonos ya en el tema que más nos incumbe como estudiantes de informática, hay que señalar que su aportación a la ciencia de la Computación ha sido muy significativa. Se le considerada el fundador de la Gramática generativa transformacional. Sus análisis del lenguaje parten de las oraciones básicas que se desarrollan y terminan en una variedad de combinaciones sintácticas al aplicar una serie de reglas. Gramáticas Formales Una gramática formal consta de un conjunto finito de símbolos terminales (las palabras en un lenguaje formal), un conjunto finito de símbolos no terminales, un conjunto de reglas de producción con un lado izquierdo y otro derecho, y un símbolo inicial. Las reglas se aplican sustituyendo la parte de la izquierda por la parte de la derecha. Una derivación es una secuencia de aplicaciones de reglas. Cada gramática define el lenguaje formal de todas las sentencias que están formadas exclusivamente por los símbolos terminales a los que se puede llegar mediante derivación a partir del símbolo inicial. Ejemplo 1: Gramática con terminales {a, b}, no terminales {S,A,B} y las siguientes reglas de producción, y símbolo inicial S. 1. <S> <A><B><S> 2. <S> (siendo el símbolo vacío) 3. <B><A> <A><B> 4. <B><S> b -1- Teoría de Autómatas y Lenguajes Formales – Curso 2001/2002 Marta Gonzalo García – 22/10/01 5. <B>b bb 6. <A>b ab 7. <A>a aa Esta gramática define todas las palabras de la forma anbn. Veamos dos ejemplos (siempre partiendo del símbolo inicial S). Entre paréntesis se indica la regla de producción utilizada. <S> <A><B><S> (1) <A><B><S> <A>b (4) <A>b ab (6) <S> <A><B><S> (1) <A><B><S> <A><B><A><B><S> (1) <A><B><A><B><S> <A><A><B><B><S> (3) <A><A><B><B><S> <A><A><B>b (4) <A><A><B>b <A><A>bb (5) <A><A>bb <A>abb (6) <A>abb aabb (7) Ejemplo 2 : Gramática que construye un pequeño subconjunto del lenguaje natural o Reglas de producción: 1. <ENUNCIADO> <SUJETO> <PREDICADO> 2. <SUJETO> <FORMA NOMINAL> 3. <FORMA NOMINAL> <ARTICULO> <NOMBRE> 4. <ARTICULO> el 5. <NOMBRE> hombre | libro | balón 6. <PREDICADO> <VERBO> <FORMA NOMINAL > 7. <VERBO> tomó | compró <ENUNCIADO> <SUJETO> <PREDICADO> <SUJETO> <PREDICADO> <FORMA NOMINAL> <PREDICADO> <FORMA NOMINAL> <PREDICADO> <ARTICULO> <NOMBRE><PREDICADO> <ARTICULO> <NOMBRE><PREDICADO> el <NOMBRE><PREDICADO> el <NOMBRE><PREDICADO> el hombre <PREDICADO> el hombre <PREDICADO> el hombre <VERBO> <FORMA NOMINAL> el hombre <VERBO> <FORMA NOMINAL> el hombre tomó <FORMA NOMINAL> el hombre tomó <FORMA NOMINAL> el hombre tomó <ARTICULO> <NOMBRE> el hombre tomó <ARTICULO> <NOMBRE> el hombre tomó el <NOMBRE> el hombre tomó el <NOMBRE> el hombre tomó el libro el hombre tomó el libro pertenecería por tanto al lenguaje generado por esta gramática, así como otros enunciados : el libro compró el balón, el balón compró el hombre, etc. Ejemplo 3 : Reglas de producción: 1. <ENTERO> <SIGNO><SECUENCIA> 2. <SIGNO> + | - | 3. <SECUENCIA> <DIGITO> | <DIGITO><SECUENCIA> 4. <DIGITO> | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Tipos de gramáticas Gramáticas Tipo 0 (sin restricciones, recursivas) Incluyen todas las gramáticas formales. Generan todos los lenguajes que pueden ser reconocidos por una máquina de Turing. Gramáticas Tipo 1 (dependientes de contexto) Generan los lenguajes dependientes de contexto. Contienen reglas de producción de la forma: A A es un no terminal , y son cadenas de terminales y no terminales. y pueden ser vacíos, pero ha de ser distinto del vacío. -2- Teoría de Autómatas y Lenguajes Formales – Curso 2001/2002 Marta Gonzalo García – 22/10/01 Se denominan gramáticas dependientes del contexto, porque, como se observa, A puede ser sustituido por si está acompañada de por la izquierda y de por la derecha. Estos lenguajes son todos los lenguajes que pueden ser reconocidos por una máquina de Turing no determinista. (autómatas lineales acotados) Gramáticas Tipo 2 (independientes de contexto, libre de contexto) Generan los lenguajes libres de contexto. Están definidas por reglas de la forma: A A es un no terminal es una cadena de terminales y no terminales. Se denominan independientes de contexto porque A puede sustituirse por independientemente de las cadenas por las que esté acompañada. Los lenguajes independientes de contexto constituyen la base teórica para la sintaxis de la mayoría de los lenguajes de programación. Definen la sintaxis de las declaraciones, las proposiciones, las expresiones, etc.(es decir, la estructura de un programa) Estos lenguajes son todos los lenguajes que pueden ser reconocidos por los autómatas de pila. Gramáticas Tipo 3 (gramáticas regulares) Generan los lenguajes regulares. Las reglas se restringen a un único no terminal en la parte izquierda y una parte derecha compuesta por un único terminal que puede estar seguido o no de un único no terminal. Es decir, normas del tipo: A a B Aa Estos lenguajes son los que pueden ser decididos por un autómata finito (regular). Los lenguajes regulares se utilizan para definir estructura léxica de los lenguajes de programación. Definen la sintaxis de los identificadores, número, cadenas y otros símbolos básicos del lenguaje. Importante!! : Todo lenguaje de tipo 3 es de tipo 2, todo lenguaje de tipo 2 es de tipo 1, y todo lenguaje de tipo 1 es de tipo 0. Se dice que un lenguaje es de tipo k [k = 0, k = 1, k = 2, k = 3] cuando existe una gramática de tipo k que genera ese lenguaje. Para clasificar una gramática hemos de analizar una a una todas sus reglas de producción obteniendo el tipo de cada una de ellas. La clasificación de la gramática será la correspondiente al tipo de la producción de menor clasificación. Gramática Lenguaje Reglas de Producción Si , relación entre || y || Solución Tipo-0 Recursivas Sin restricciones Máquinas de Turing Tipo-1 Dependiente de contexto αAβ αγβ || || Autómatas lineales acotados Tipo-2 Independiente de contexto Aγ || = 1 Autómatas de pila Tipo-3 Regular A> aB Aa Autómatas finitos, regulares α β y γ son cadenas de terminales y no terminales. La cadena γ no puede ser la cadena vacía. -3- Teoría de Autómatas y Lenguajes Formales – Curso 2001/2002 Marta Gonzalo García – 22/10/01 Todo tipo de gramática puede incluir la S -> ε. Si se da este caso, entonces no puede tener una S en la parte derecha de ninguna regla. Ejemplos: o Tipo de la regla de producción <A><B> y Tipo 3: No Tipo 2: No Tipo 1: No Tipo 0: Sí Regla de producción de Tipo 0 o Tipo de la regla de producción <Y> ba Tipo 3: No Tipo 2: Sí Regla de producción de Tipo 2 Tipo 1: Sí Tipo 0: Sí Referencias: Apuntes de Introducción a la Programación (Curso 2000/2001). JESÚS ÁLVAREZ. Tema 2 : Gramáticas. Introducción a la Teoría de Autómatas. (1998) JOSÉ ANTONIO MALPICA. Servicio de Publicaciones de la Universidad de Alcalá. Información en Internet: Jerarquía de Gramáticas y Lenguajes: o http://www.wikipedia.com/wiki/Chomsky_hierarchy o http://www.itz.edu.mx/~lveyna/automatas/unidad2.htm (en español) o www.csi.ull.es/~sande/talf/talf.html (en español) o http://www.werthmoeller.de/Dokus/aufs/node3.html o http://www.netaxs.com/people/nerp/automata/chomsky4.html o http://www.lib.uchicago.edu/keith/tcl-course/topics/regexp.html Noam Chomsky (biografía, entrevistas...) o http://mitpress2.mit.edu/e-books/chomsky (completa biografía de Chomsky online ) o http://www2.prestel.co.uk/littleton/jp_noamc.htm (entrevista de 1992, sobre su vida y los acontecimientos políticos del siglo) o http://www.counterpunch.org/chomskyintv.htm (entrevista después de los ataques terroristas a EEUU) o http://www.jornada.unam.mx/2001/sep01/010915/006n1mun.html (entrevista después de los ataques terroristas a EEUU , en español) -4-