我怎样才能使用flex& Visual Studio 2010中的野牛?

时间:2011-05-03 10:54:39

标签: visual-c++ bison visual-c++-2010 flex-lexer

我已阅读http://msdn.microsoft.com/en-us/library/aa730877%28vs.80%29.aspx但此文档适用于VS 2005.我坚持使用文档中的“在Visual C ++中导入.rules文件”部分。看起来VS 2010不支持.rules文件,相反,它似乎使用.targets文件来制作自定义构建规则。

有谁知道如何使用flex& VS 2010中的野牛?感谢。

3 个答案:

答案 0 :(得分:3)

好消息是,目标文件在转换为2010之后仍然有效。

  • 安装示例。使用vs2010转换器打开它,它将执行从2005 * .rules到2010 * .targets,* .props和* .xml文件的转换
  • 安装cygwin,并包含flex,其源代码,Bison及其源代码
  • 将cygwin路径添加到“可执行路径”列表的末尾,将源路径添加到包含路径列表的末尾

虽然示例因依赖项而无法运行,但您现在可以创建自己的项目并构建自己的词法分析器和解析器。您将遇到的唯一问题是使用unistd.h。添加这个,它不会:

#define YY_NO_UNISTD_H 

我认为你可以获得在2010年在flex& amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp;野牛书。

答案 1 :(得分:1)

这个问题很老,但像我这样的Flex& Bison新手:你可以使用" Win flex-bison"工具可从here获得,它还包含如何在MSVS2010 +中配置VS C ++项目的教程

注意:如果链接不起作用,请使用google并搜索" Win flex-bison" ; - )

答案 2 :(得分:1)

Jarda指定的自定义构建规则是最简单的。以下是自定义构建规则的替代方法。

不要使用预编译的标头,除非您知道如何使用它们以便将其用于此目的。我有一个问题,抱怨宏重新定义和过早的文件结束,直到我关闭使用预编译头。

生成" Win32控制台应用程序"并使其成为一个空项目(没有生成的源代码)。例如,我正在使用" SimpleFlex"我的项目名称。

可选:您可以自定义VS文件夹的过滤器,以便Flex输入文件显示在“源文件”文件夹中。在“源文件”文件夹的属性中,将扩展名(" l"或" lex")添加到扩展名列表中。

然后使用" l"创建一个文件。 (或" lex")项目的扩展;例如," SimpleFlex.l"。在文件中,使用下面的一个示例。然后在项目设置中,创建自定义构建步骤。如果您不熟悉自定义构建,请查找"自定义构建步骤"项目设置中的选项卡。使用以下内容进行自定义构建步骤:

描述:生成词法分析器

命令:C:\ Software \ FLEX252 \ flex.exe -o $(ProjDir)\ $(InputName).cpp $(InputPath)

输出:$(ProjDir)\ $(输入名称).cpp

其中:

说明实际上是您想要使用的任何内容

命令包含Flex路径,输出文件和输入文件。您需要将Flex的路径更改为适合您系统的任何内容。

输出指定输出文件的文件名。

在为创建自定义构建步骤的Flex输入文件提供代码后,编译该文件。您可以使用Ctrl-F7进行编译。实际上,在这一点上,你可以建立项目;除了生成扫描程序(cpp文件)之外,构建没有任何内容可做。自定义构建应该执行Flex,但是您知道它的唯一方法是因为构建输出中显示了描述。应该已生成cpp文件,然后可以添加到项目中。如果你得到我上面描述的错误(宏重新定义和过早的文件结束),那么关闭项目的预编译头。

Bison的程序非常相似。