next up previous contents
Next: 6.2 Utilización de ICE Up: 6 El análisis sintáctico Previous: 6 El análisis sintáctico

Introducción

La herramienta utilizada para la construcción del analizador sintáctico es ICEgif. Esta herramienta es capaz, a partir de una gramática de contexto libre escrita en el mismo formalismo que el utilizado por Yacc [Johnson 75], de generar un analizador no determinista e incremental para dicha gramática. En el apéndice A se muestra una visión general de los fundamentos teóricos de ICE. El presente capítulo se centrará en los aspectos prácticos, es decir, en la utilización del conjunto de programas que implemetan las ideas mostradas en dicho apéndice.

Para conseguir una compatibilidad total con Yacc, Vilares [Vilares 92] tomó como punto de partida el código de Bison [Donnelly y Stallman 88]. Ésta es una herramienrta de generación de analizadores sintácticos de contexto libre, compatible con Yacc y desarrollada por Robert Corbett y Richard Stallman. Una diferencia muy importante con respecto a Yacc es que el copyright pertenece a la Free Software Foundation y el producto se encuentra sometido a la ``GNU General Public License'', lo cual implica que se puede acceder al código fuente y que éste puede ser modificado y distribuido ateniéndose a los términos y condiciones de la licencia GNU. En cambio, el código de Yacc es propietario y no puede ser modificado libremente.

La herramienta ICE en sí está construida mediante un conjunto de módulos C, ficheros de código y de cabecera, que al ser compilados y enlazados producen un ejecutable de nombre bison. Los ficheros C son variaciones de los originales existentes en la distribución de Bison. Las modificaciones se refieren a los cambios sustanciales que fue preciso introducir para que los analizadores generados exhibiesen un comportamiento no determinista y tuviesen capacidades incrementales.

Relacionado con lo anterior, desde el punto de vista del usuario se ha producido también un cambio importante: el analizador generado a partir de la gramática de entrada no tiene ya la forma de un programa C, sino la de un programa LE-LISP.

Cualquier programa LE-LISP puede ser enlazado dinámicamente a módulos C compilados y el sistema LE-LISP puede ser invocado desde un programa escrito en Cgif. Por tanto, no se pierde potencia en cuanto a la capacidad de integrar el analizador con otras herramientas, como por ejemplo los analizadores léxicos generados por Flex, ni de ser utilizado en otros programas, como por ejemplo una aplicación con entrada salida interactiva que realice el parsing de los datos de entrada utilizando funciones generadas por Bison.

La utilización de un analizador sintáctico escrito en LE-LISP proporciona una serie de ventajas, como son:


next up previous contents
Next: 6.2 Utilización de ICE Up: 6 El análisis sintáctico Previous: 6 El análisis sintáctico

Miguel A. Alonso Pardo
Thu Nov 20 16:47:01 CET 1997