Está en la página 1de 6

Jerarqua de Chomsky

En 1956, Noam Chomsky clasific las gramticas en cuatro tipos de lenguajes y esta clasificacin es conocida como la jerarqua de Chomsky, en la cual cada lenguaje es descrito por el tipo de gramtica generado. Estos lenguajes sirven como base para la clasificacin de lenguajes de programacin. Los cuatro tipos son: lenguajes recursivamente enumerables, lenguajes sensibles al contexto, lenguajes libres de contexto y lenguajes regulares. Dichos lenguajes tambin se identifican como lenguajes de tipo 0, 1, 2 y 3. Sea un lenguaje L definido por al menos una gramtica G que cumple:

Si todas las producciones de G tienen la forma A xB o donde A y B son smbolos no terminales y x es un terminal; entonces G se dice que es una gramtica regular y L es un lenguaje regular o de tipo 3. Si todas las producciones de G tienen la forma donde x es una combinacin de smbolos terminales y no terminales, entonces G se dice que es una gramtica libre de contexto y L es un lenguaje libre de contexto o de tipo 2. De ser las producciones de G de la forma donde A es un smbolo no terminal cualquiera, x, y, y z son combinaciones de terminales y no terminales, tales que x e y pueden ser cadenas vacas; entonces se dice que G es una gramtica dependiente del contexto y L es un lenguaje dependiente del contexto o lenguaje de tipo 1. Si ninguna de las gramticas de L cumple las propiedades anteriores entonces se dice que es un lenguaje sin restricciones, recursivamente enumerable o de tipo 0.

Desde el punto de vista conjuntival la jerarqua de Chomsky funciona como se ve en al grfico:

. De manera que todos los lenguajes de tipo 3 (LR) son tambin de tipo 2 (LLC) y los LLC son de tipo 1 (LDC) son de tipo 0 (LSR o LRE). Existe una exacta correspondencia entre cada uno de estos tipos de lenguajes y particulares arquitecturas de mquinas en el sentido que por cada lenguaje de tipo T hay una arquitectura de mquina A que reconoce el lenguaje de tipo T y por cada arquitectura

A hay un tipo T tal que todos los lenguajes reconocidos por A son de tipo T. La correspondencia entre lenguajes y arquitectura son mostrados en la siguiente tabla. Gramtica Tipo-0 Tipo-1 Normas de produccin Recursivamente Mquina de Turing Sin restricciones enumerable (LRE) (MT) Dependiente del Autmatas A contexto (LSC) Linealmente Acotados Independiente del Autmata a Pila A contexto (LLC) Regular (RL) Autmata Finito A aB A a Lenguaje Autmata

Tipo-2 Tipo-3

Lenguajes Recursivamente Enumerables (de tipo 0) Son los lenguajes naturales. Las gramticas pueden tener reglas compresoras. Lenguajes Dependientes del Contexto (sensibles al contexto, de tipo 1) No existen reglas compresoras, salvo, opcionalmente, la que deriva el axioma a la palabra vaca. Existen reglas en las que un smbolo no terminal puede derivar a formas sentnciales distintas, segn los smbolos que aparezcan a su alrededor. Lenguajes Independientes del Contexto (de contexto libre, de tipo 2) La mayora de los lenguajes de programacin entran en sta categora. Lenguajes Regulares (de tipo 3) Se pueden expresar tambin mediante expresiones regulares.

Herramientas computacionales ligadas con lenguajes


* Editores de estructuras: Un editor de estructuras toma como entrada una secuencia de rdenes para construir un programa fuente. El editor de estructuras no slo realiza las funciones de creacin y modificacin de textos de un editor de textos ordinario, sino que tambin analiza el texto del programa, imponiendo al programa fuente una estructura jerrquica apropiada. De esa manera, el editor de estructuras puede realizar tareas adicionales tiles para la preparacin de programas Concepto encontrado en el libro de Compiladores de Addison Wesley, a mi punto de vista estos editores de estructura son los que se encarga de llevar el orden de las palabras, valla el acomodo y comprobar si la entrada est formada correctamente.

* Impresoras estticas: Una impresora esttica analiza un programa y lo imprime de forma que la estructura del programa resulte claramente visible Concepto encontrado en el libro de Compiladores de Addison Wesley. * Verificadores estticos: este verificador lee un programa, lo analiza e intenta descubrir errores potenciales sin correr el programa, algo muy parecido a la correccin de los editores de texto como Word. Un verificador esttico puede detectar si hay partes de un programa que nunca se podrn ejecutar o si cierta variable se usa antes de ser definida nos dice Addison Wesley. * Intrpretes: En lugar de producir un programa objeto como resultado de una traduccin, un intrprete realiza las operaciones que implica el programa fuente. Muchas veces los interpretes se usan para ejecutar lenguajes de rdenes, pues cada operador que se ejecuta en un lenguaje de ordenes suele ser una invocacin de una rutina compleja, como un editor o un compilador. HERRAMIENTAS COMPUTACIONALES LIGADAS CON LOS TIPOS DE LENGUAJES

Traductor y su estructura.
Un traductor es un programa que recibe como entrada un texto escrito en un lenguaje, llamado fuente, y genera como salida otro texto equivalente pero escrito en un lenguaje diferente denominado objeto. Ejemplos de traductores son los ensambladores y los compiladores.

En el proceso de traduccin se identifican dos fases principales:

Fase de anlisis

Fase de Sntesis

Compiladores.
Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, es decir programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (lenguaje mquina). Generando un programa equivalente a capaz de interpretar. Estructura de un Compilador.

Cualquier compilador debe realizar dos tareas principales: anlisis del programa a compilar y sntesis de un programa en lenguaje mquina. Para el estudio de un compilador, es necesario dividir su trabajo en fases. Cada fase representa una transformacin al cdigo fuente para obtener el cdigo objeto. En cada una de las fases se utiliza un administrador de la tabla de smbolos y un manejador de errores. Componentes en que se divide un compilador: Anlisis Lxico. En esta fase se lee los caracteres del programa fuente y se agrupan en cadenas que representan los componentes lxicos. A la secuencia de caracteres que representa un componente lxico se le llama lexema (o con su nombre en ingls token). Anlisis Sintctico. Los componentes lxicos se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida. Anlisis Semntico. Intenta detectar instrucciones que tengan la estructura sintctica correcta, pero que no tengan significado para la operacin implicada. Generacin de cdigo Intermedio. Se puede considerar esta operacin intermedia como un subprograma para una mquina abstracta, a esta representacin debe tener dos propiedades importantes: debe ser fcil de producir y fcil de traducir al programa objeto. Optimizacin de Cdigo. Se trata de mejorar el cdigo intermedio, de modo que resulte un cdigo de mquina ms rpido de ejecutar. Generacin de Cdigo. Esta constituye la fase final de un compilador. Administrador de la tabla de smbolos. Se encarga de manejar los accesos a la tabla de smbolos, en cada una de las etapas de compilacin de un programa.

Manejador de errores. Es posible encontrar errores. De esta forma podrn controlarse ms eficientemente los errores encontrados en cada una de las fases de la compilacin de un programa.

También podría gustarte