Lex (flex) y Yacc (bison) con Microsoft Visual Studio Express 2012
Transcripción
Lex (flex) y Yacc (bison) con Microsoft Visual Studio Express 2012
Lex (flex) y Yacc (bison) con Microsoft Visual Studio Express 2012 para escritorio de Windows Requisitos: Flex http://gnuwin32.sourceforge.net/packages/flex.htm Bison http://gnuwin32.sourceforge.net/packages/bison.htm 1 MVS Express 2012 Archivo ejly1.l: %{ #include <stdio.h> #include <stdlib.h> #include "ejeyac1.h" %} %% [0-9]+ [a-zA-Z][a-zA-Z0-9]* [ \t\n] [\+\*\(\)\-] . %% int yywrap() { return 1; } {return NUM;} {return ID;} {;} {return yytext[0];} {printf("Error lexico [%s]\n",yytext);} Archivo ejeyac1.y: %{ #include "ejly1.h" %} %token ID NUM %start e %% e : e '+' t {printf("Esto es una suma\n");} | t {printf("Esto es un termino\n");} ; t : t '*' f | f ; {printf("Esto es un producto\n");} {printf("Esto es un factor\n");} f : m '(' e ')' | m ID | m NUM ; {printf("Esto es una expresion\n");} {printf("Esto es un identificador\n");} {printf("Esto es un numero\n");} 1 Algunas ocasiones la ejecución del Bison requiere de librerías, estas pueden encontrarse en el siguiente enlace: http://gnuwin32.sourceforge.net/packages/bison.htm m : /*epsilon*/ | '-' ; {printf("Esto es negativo\n");} %% int main() { yyparse(); return 1; } yyerror(char *s) { printf("%s\n",s); } Compilación: Desde la consola de comandos, en la ubicación de los ejecutables de Flex y Bison conjuntamente con los archivos .l y .y ejecutar: flex.exe -oejly1.h ejly1.l bison.exe -y -v -d -oejeyac1.c ejeyac1.y Los archivos generados por Flex y Bison serán: ejly1.h, ejeyac1.c y ejeyac1.h. Este último archivo generado contiene las constantes simbólicas asociadas a los símbolos terminales (tokens) y es generado por el Bison. Crear proyecto en MS VC Express 2012: Crear un proyecto de consola en el MS VC Express 2012. En la configuración de la aplicación debe seleccionarse la casilla de “Proyecto debe estar vacío” y deshabilitar la casilla de “Comprobación del ciclo de vida de desarrollo de seguridad (SDL)”. Una vez creado el proyecto, copiar los archivos generados en el paso anterior por Flex y Bison a la carpeta del proyecto creada por el MS VC Express 2012. Hecho lo anterior agregar al proyecto en “Archivos de código fuente” el archivo ejeyac1.c como elemento existente, después agregar en “Archivos de encabezado” los archivos ejly1.h y ejeyac1.h, también como archivos existentes. Finalmente se deberá compilar y probar. Nota: si se cambia la especificación léxica (archivo .l) o la especificación sintáctica (archivo .y) será necesario volver a compilar con Flex o Bison, según sea el caso, y copiar nuevamente los archivos generados a la ruta del proyecto creado en MS VC Express 2012 para generar nuevamente el analizador sintáctico considerando los cambios hechos en las especificaciones.
Documentos relacionados
Bison
Código C creado por necesidad del programador Se copian literalmente en *.tab.c main() está en el Bison (.y) y nunca en el Flex (.l) Bison necesita definir yyerror() (excepto –ly) Yyparse()
Más detalles