next up previous contents
Next: 6.4.2 Análisis incremental Up: 6.4 Integración con ICEeditor Previous: 6.4 Integración con ICEeditor

6.4.1 Análisis total

El proceso para la realización de un análisis sintáctico completo del texto ubicado en el editor de ICEeditor consta de los dos pasos siguientes:

  1. Cargar el lenguaje que se está utilizando. Para ello se llama a la función {ice}:load, que toma como argumento una cadena de caracteres que contiene el nombre del lenguaje. Una llamada a ({ice}:load "lang") provoca que el intérprete ICE busque, en el directorio indicado en la función {ice}:user-language en la cual se declaró el lenguaje lang, los ficheros yacclang.tab.c y lex lang. Esta operación se realiza únicamente la primera vez que se llama al parser de un lenguaje que no había sido cargado previamente.
  2. Llamar a la función encargada de realizar el análisis sintáctico del texto, en base a las tablas y funciones contenidas en el fichero yacclang.tab.c. Esta función se denomina {ice}:run y toma como argumento una cadena de caracteres con el nombre del fichero a analizar. La extesión de dicho fichero deberá ser .lang. Como segundo argumento opcional puede tomar el átomo 'trace, en cuyo caso el usuario obtiene una traza de los diferentes estados por los que va pasando el analizador.

Cuando el usuario solicita que el texto en ICEeditor sea reanalizado completamente, se activa la función {ICEeditor}:parser-all, la cual realiza las llamadas a las funciones mencionadas anteriormente. Como la función {ice}:run toma el nombre de un fichero en disco, y el texto en el editor no tiene por qué estar actualizado en su correspondiente fichero en el momento de realizar el análisis, el método parser-all realiza una copia de todo el texto contenido en el editor en un fichero localizado en el directorio /tmp. Es sobre este fichero sobre el que se lleva a cabo el análisis sintáctico. Todo este trabajo con ficheros temporales es transparente para el usuario.


next up previous contents
Next: 6.4.2 Análisis incremental Up: 6.4 Integración con ICEeditor Previous: 6.4 Integración con ICEeditor

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