2011-05-03 16 views
12

He leído http://msdn.microsoft.com/en-us/library/aa730877%28vs.80%29.aspx pero este documento fue para VS 2005. Me quedé en la parte 'Importar un archivo .rules en Visual C++' en el documento. Parece que VS 2010 no es compatible con el archivo .rules, sino que parece utilizar el archivo .targets para reglas de compilación personalizadas.¿Cómo puedo usar flex & bison en Visual Studio 2010?

¿Alguien sabe cómo usar flex & bisonte en VS 2010? Gracias.

+1

Basado en mi confusión con respecto a esta pregunta; Creo que quisiste etiquetar esto con gnu-flex; no Adobe Flex. Seguí adelante y lo retuve. – JeffryHouser

+0

Gracias por volver a etiquetar, www.Flextras.com. Pero parece que nadie sabe la respuesta para mi pregunta. :-p ¿Debo instalar VS 2005? – sky

+1

Las versiones de Visual C++ anteriores a 2010 usaban el sistema de compilación VCBuild; Visual C++ 2010 se movió al sistema MSBuild. Los objetivos/reglas/propiedades son todos totalmente diferentes. Estoy seguro de que puede usar Flex y Bison con Visual C++ 2010, pero a menos que alguien ya haya ensamblado y publicado las nuevas instrucciones de configuración, puede tomar bastante trabajo (y probablemente una comprensión bastante buena de MSBuild). –

Respuesta

3

La buena noticia es, que se dirige archivo funciona después de una conversión a 2010.

  • Instalar el ejemplo. Ábrala con el convertidor vs2010 y realizará la conversión de 2005 * .rules a 2010 * .targets, * .props y * .xml file
  • instale cygwin, e incluya flex, su código fuente, Bison y su código fuente
  • agregar la ruta cygwin hasta el final de la lista de rutas de ejecutables y el camino a la fuente hasta el final de las necesidades de inclusión caminos lista

Aunque el ejemplo no funcionarán debido a las dependencias que ahora son capaces de crear su propio proyecto y construye tu propio lexer y analizador. El único problema que tendrá es el uso de unistd.h incluido. Añadir esto y no lo puedo:

#define YY_NO_UNISTD_H 

Creo que se puede obtener el resto de las cosas que necesita para construir su programa de análisis en 2010 en el libro bisontes flex &.

+0

El único inconveniente es capturar que la salida no funciona. Solo le muestra que se activan bison y flex y los códigos de error (si hay alguno). Sin embargo, estoy trabajando en eso, y es probable que tenga los nuevos objetivos de compilación archivados en mi blog con un tutorial adecuado sobre la configuración. –

+0

No necesita Cygwin para usar Flex y Bison en Windows, ni siquiera para Visual Studio. – user34660

1

Esta pregunta es viejo, pero para Flex & novatos bisonte como yo: Puede utilizar "ganar flex-bisonte" herramienta disponible en here y también contiene un tutorial de cómo configurar VS C++ proyecto en MSVS2010 +

Nota: Si el enlace no funciona, use google y busque "Win flex-bison" ;-)

+0

Flex y Bison se están mudando a GitHub, pero no sé dónde están las versiones especiales de Windows en GitHub. Todavía existen en SourceForge y funcionan en VS 2015 y espero que también funcionen en VS 2017 o alguien los convierta. – user34660

1

Las reglas de compilación personalizadas que Jarda especifica son las más fáciles. La siguiente es una alternativa a las Reglas de compilación personalizadas.

No utilice encabezados precompilados a menos que sepa cómo usarlos lo suficientemente bien como para usarlos para esto. Tuve un problema con quejándose de redefiniciones de macros y fin de archivo prematuro, hasta que desactivé el uso de encabezados precompilados.

Genera una "Aplicación de consola Win32" y la convierte en un proyecto vacío (sin código fuente generado). Por ejemplo, estoy usando "SimpleFlex" para mi nombre de proyecto.

Opcional: Puede personalizar los filtros para las carpetas VS para que el archivo de entrada Flex se muestre en la carpeta Archivos de origen. En las propiedades de la carpeta Archivos de origen, agregue la extensión ("l" o "lex") a la lista de extensiones.

A continuación, cree un archivo con una extensión "l" (o "lex") para el proyecto; por ejemplo, "SimpleFlex.l". En el archivo, use una de las muestras de abajo. Luego, en la configuración del proyecto, crea un paso de compilación personalizado. Si no está familiarizado con Custom Builds, busque la pestaña "Custom Build Step" en la configuración del proyecto.Utilice lo siguiente para la generación personalizada Paso:

Descripción: La generación de analizador léxico

Comandos: C: \ Software \ FLEX252 \ flex.exe -o $ (ProjDir) \ $ (InputName). CPP $ (InputPath)

salidas: $ (ProjDir) \ $ (InputName) .cpp

Dónde:

Descripción es en realidad todo lo que desea utilizar

Comandos consiste en la ruta de acceso a la flexión, el archivo de salida y el archivo de entrada. Tendrá que cambiar la ruta de Flex a lo que sea correcto para su sistema.

Salidas Especifica el nombre del archivo de salida.

Después de proporcionar el código para el archivo de entrada Flex que crea el paso de compilación personalizado, compile el archivo. Puede usar Ctrl-F7 para simplemente compilar. En realidad, en este punto, puedes simplemente construir el proyecto; no hay nada que hacer excepto la generación del escáner (el archivo cpp). La compilación personalizada debe ejecutar Flex, pero la única forma en que sabrá que lo hace es porque la descripción se muestra en el resultado de compilación. El archivo cpp debería haberse generado y luego puede ser añadido al proyecto. Si obtiene los errores que describo arriba (redefiniciones de macros y fin de archivo prematuro), apague los encabezados precompilados para el proyecto.

El procedimiento para Bison es muy similar.