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 -n . 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 definiciones. 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.