next up previous contents
Next: 6.3 Integración con el Up: 6.2 Utilización de ICE Previous: 6.2.2 Ficheros de entrada

6.2.3 Ficheros de salida

El módulo generador de ICE, cuyo ejecutable mantiene el nombre de bison, construye a partir de la gramática contenida en yacclang.y el código LE-LISP del analizador sintáctico para el lenguaje lang. Para ello debe especificarse la opción -ngif . Todo el código generado se almacena en el fichero yacclang.tab.c. La terminación .c de este fichero se mantiene por cuestiones de compatibilidad con los nombres de los ficheros generador por Bison. Ciertamente, resulta curioso que un fichero con la extensión .c contenga código Lisp.

Si se especifica la opción -d en la llamada a bison, se generará un fichero yacclang.tab.h que, como su extensión indica (esta vez sí), es un fichero de cabecera para el lenguaje C. Contiene la definición de los valores enteros que identifican a cada comonente léxico, por lo que debe ser utilizado en el programa que implementa el analizador léxico. Para ello se utiliza una directiva #include en el código fuente del lexical. En los programas Flex, esta declaración se incluye en la zona de código C de la sección de definicionesgif. Puesto que el fichero objeto del analizador léxico dependerá de este fichero de cabecera, debe tenerse cuidado de llamar primero a bison y depués a lex o flex, ya que de lo contrario el lexical puede estar utilizando definiciones de componentes léxicos incongruentes con las del parser.



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