Herramientas para la construcción de compiladores

Herramientas para la construcción de compiladores
Información sobre la plantilla
Compi1.jpg
Concepto:Herramientas para construir y desarrollar compiladores, las cuales están especializadas en las diferentes fases del proceso de compilación.

Herramientas para la construcción de compiladores . El uso y perfeccionamiento de los compiladores ha traído consigo el desarrollo de herramientas que aportan a la realización de los mismos, estas se han ido especializando en las diferentes fases del proceso de compilación, brindándole a los desarrolladores una serie de facilidades a la hora de diseñar e implementar un compilador. En el mundo existen diversas herramientas de apoyo de este tipo, desarrolladas en diferentes lenguajes de programación, las cuales responden a los intereses de los múltiples sistemas operativos. Entre las herramientas más utilizadas se pueden encontrar el Flex, Yacc, Lex, Bison entre otras.

Herramienta Descripción
Bison Generador de Analizadores Sintácticos Ascendentes tipo YACC
COCO/R Generador de Analizadores Léxicos y Sintácticos Descendentes Recursivos
Flex Generador de Analizadores Léxicos tipo Lex
Lex Generador de Analizadores Léxicos
SDGLL1 Sistema Detector de Gramáticas LL(1)
TS 2006 Tipo abstracto de datos Tabla de Símbolos de uso sencillo (beta0.4)
TS Tipo abstracto de datos Tabla de Símbolos
TS-OO Tipo abstracto de datos Tabla de Símbolos
YACC Generador de Analizadores Sintácticos Ascendentes LR(1)

Bison

Es un generador de analizadores sintácticos de propósito general que convierte una descripción gramatical para una gramática independiente del contexto en un programa en C que analice esa gramática. Es utilizado en un amplio rango de analizadores de lenguajes, desde aquellos usados en simples calculadoras de escritorio hasta complejos lenguajes de programación.

Lex

Es un generador de analizador léxico, que sirve para generar los token para la siguiente fase . La principal característica de Lex es que va a permitir asociar acciones descritas en C, a la localización de las Expresiones Regulares que se hayan definido. Para e llo Lex se apoya en una plantilla que recibe como parámetro, y que se debe diseñar con cuidado. Internamente Lex va a actuar como un autómata que localizará las expresiones regulares que se le describan, y una vez reconocida la cadena representada por dicha expresión regular, ejecutará el código asociado a esa regla.

Yacc

Es un programa para generar analizadores sintácticos. Las siglas del nombre significan Yet Another Compiler Compiler, es decir, "Otro generador de compiladores más". Genera un analizador sintáctico (la parte de un compilador que comprueba que la estructura del código fuente se ajusta a la especificación sintáctica del lenguaje) basado en una gramática analítica.Yacc genera el código para el analizador sintáctico en el Lenguaje de programación C.

Flex

Es una herramienta para generar escáneres: programas que reconocen patrones léxicos en un texto. Flex lee los ficheros de entrada dados, o la entrada estándar si no se le ha indicado ningún nombre de fichero, con la descripción de un escáner a generar. Estas herramientas de apoyo han sido reescritas para otros lenguajes, incluyendo Ratfor, EFL, ML,Ada, Java, Python, y Limbo. De esta forma se ha logrado una mayor utilización de las mismas en diferentes compiladores desarrollados sobre tecnologías libres. Teniendo en cuenta las características de las aplicaciones antes mencionadas, se ha escogido para la realización del compilador las herramientas Yacc y Lex. En muchos de los compiladores desarrollados en el mundo suelen ser utilizados juntos. Yacc utiliza una gramática formal para analizar un flujo de entradas, algo que Lex no puede hacer con expresiones regulares simples (Lex se limita a los autómatas de estados finitos simples). Sin embargo, Yacc no puede leer en un flujo de entradas simple, requiere una serie de símbolos. Lex se utiliza a menudo para proporcionar a Yacc estos símbolos.


Véase también

Fuentes

  • Diaz, Emiliano Llano. Análisis y Diseño de Compiladores. Mexico : Exa ingeniería SA, 2002.
  • Ullman, Alfred V. Aho y Jeffrey D. Compiladores Principios,Técnicas y Herramientas. Estados Unidos : s.n., 2005.
  • Duque, Raúl González. Python para todos.