Bison

Solo disponible en BuenasTareas
  • Páginas : 2 (485 palabras )
  • Descarga(s) : 0
  • Publicado : 1 de mayo de 2011
Leer documento completo
Vista previa del texto
Compilación y ejecución de un programa Bison

Al ejecutar el comando bison nombre_fuente.y se crea un fichero en C llamado nombre_fuente.tab.c. Por compatibilidad con Yacc, existe la opción –y quefuerza a que el archivo de salida se llame y.tab.c.

Otra opción -d
La opción –d, que genera el archivo con las definiciones de tokens que necesita Flex (si se ha usado la opción –y, el archivo sellama y.tab.h). Este archivo y.tab.h normalmente se incluye en la sección de declaraciones del fuente de Flex (ver el ejemplo de la sección anterior).

El fichero y.tab.c se puede compilar con lainstrucción gcc y.tab.c. Los pasos para usar conjuntamente Flex y Bison serán normalmente:

bison -yd fuente.y
flex fuente.l
gcc y.tab.c lex.yy.c –lfl –o salidaexe
Nota: He realizado pruebas conesta secuencia, pero al parece la mejor oopcion si se usa BISON en lugar de YCC
bison -d fuente.y
flex fuente.l
gcc -o fuente y.

tab.c lex.yy.c -lm

Estos pasos generan un ejecutable llamadofuente.exe que nos permite comprobar qué palabras pertenecen al lenguaje generado por la gramática descrita en el fichero Bison.

lex es un generador de programas

Flex toma una especificaciónléxica basada en expresiones regulares y produce un

programa que reconoce los elementos descritos en la especificación.

¿Cómo se compila una especificación flex?

Con la siguiente orden:

flex-oanalex.c -hanalex.h analex.l

donde la opción -o permite especificar el nombre del fichero de implementación, y la opción -h el nombre del fichero interfaz. Si la especificación es correcta sóloaparecerá en pantalla el siguiente mensaje:

no %name given before line 5. Assuming %name lex al que no hay que prestarle la menor atención ya que es tan solo un aviso (warning).

Antes de ejecutarflex, debemos copiar en nuestro directorio de trabajo los ficheros esqueleto flexskel.h y flexskel.cc proporcionados junto con la herramienta. Si no queremos copiarlos podemos indicarle a flex...
tracking img