You are on page 1of 3

Compiladores

Lenguaje y Autmatas
Muchas herramientas de software que manipulan programas fuentes realizan primero algn tipo de anlisis. En este documento se plasmaran algunos ejemplos de tales herramientas.

Ing. Sistemas Computacionales


Angel Fuertes Gmez 21/02/2013

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 del programa, imponiendo al programa fuente una estructura jerrquica apropiada. De esta manera el editor estructuras puede realizar tareas adicionales tiles para la preparacin de programas. Ejemplo: El Cornell Program Synthesizer (CPS). Es quiz el ejemplo ms conocido y el ms referenciado en la literatura . Ha servido de ejemplo para desarrollar otros. Permite programar en un subconjunto del lenguaje PL/I denominado PL/CS. Mentor es un entorno de programacin en Pascal. Gandalf es un conjunto de varios subproyectos. Su objetivo principal fue crear un entorno completo de desarrollo de software, y no slo un entorno de programacin. Alice Pascal es otro entorno de programacin en lenguaje Pascal compatible con TurboPascal. Sigue las ideas del CPS. SDS es un entorno de programacin en Modula-2. Es un producto comercial desarrollado por Interface Technologies.

Impresoras estticas. Una impresora esttica analiza un programa e imprime de forma


que la estructura del programa resulte claramente visible.

Verificadores estticos.

Un verificador esttico lee un programa, lo analiza e intenta descubrir errores potenciales sin ejecutar el programa.

Intrpretes. En lugar de producir un programa objeto como resultado de una traduccin, un


intrprete realiza las operaciones que implica el programa fuente.

Formadores de textos.

Un formador de textos toma como entrada una cadena de caracteres, la mayor parte de la cual es texto para componer, pero alguna incluye rdenes para indicar prrafos, figuras o estructuras matemticas, como sub ndices o sper ndices.

Compiladores de circuitos de silicio. Tiene un lenguaje fuente similar o idntico a


un lenguaje de programacin convencional. Sin embargo, las variables del lenguaje no representan localidades de memoria, sino seales lgicas o grupos de seales en un circuito conmutacin.

Intrpretes de consultas.

Un intrprete de consultas traduce un predicado que contienen operadores relacionales y booleanos a rdenes para buscar en una base de datos registros que satisfagan ese predicado.

Anlisis del programa fuente

Anlisis lineal. En el que la cadena de caracteres que constituye el programa fuente,

se lee izquierda a derecha y se agrupa en componentes lxicos, que son secuencia de caracteres que tienen un significado colectivo.

Generadores de analizadores simpticos.

Estos generadores producen analizadores sintcticos, normalmente a partir de una entrada punta mentada en una gramtica independiente del contexto.

Generadores de analizadores lxicos.

Estas herramientas generan automticamente analizadores lxicos, por lo general a partir de una especificacin basada en expresiones regulares.

Dispositivos de traduccin dirigida por la sintaxis. Estos producen grupos de


rutinas que recorren el rbol de anlisis sintctico, generando cdigo intermedio. La idea bsica es que se asocian una o mstraducciones con cada nodo del rbol de anlisis sintctico, y cada traduccin se definen partiendo de traducciones en sus nodos vecinos en el rbol.

Generadores automticos de cdigo.

Tales herramientas toman un conjunto de reglas que define la traduccin de cada operacin de lenguaje intermedio a lenguaje de mquina para la mquina objeto. Las reglas deben incluir suficiente detalle para poder manejar los distintos mtodos de acceso posible a los datos.

Dispositivos para anlisis de flujos de datos. Mucha de la informacin necesaria


para hacer una buena optimizacin de cdigo implica hacer un anlisis de flujo de datos, que consiste en la recoleccin de informacin sobre la forman en que se transmiten los valores de una parte de un programa a cada una de las otras partes. Las distintas tareas de esta naturaleza se pueden efectuar esencialmente con la misma rutina, en la que el usuario proporciona los detalles relativos a la relacin que hay entre las proposiciones en cdigo intermedio y la informacin que se est recolectando.