我一直使用C /法很长一段时间了,很想现在使用F#/ fslex。 我在C#和学习F#的过程中都比较好。 唯一的问题是,我看不到任何项目示例或模板,其中fslex已正确包含在Visual Studio构建过程中。 有谁知道我在哪里可以找到一个?FSLex示例解决方案?
许多问候的! 沃尔克
我一直使用C /法很长一段时间了,很想现在使用F#/ fslex。 我在C#和学习F#的过程中都比较好。 唯一的问题是,我看不到任何项目示例或模板,其中fslex已正确包含在Visual Studio构建过程中。 有谁知道我在哪里可以找到一个?FSLex示例解决方案?
许多问候的! 沃尔克
做了一些研究,它看起来像他们需要的是独立的。我发现在这个博客帖子(http://blogs.msdn.com/chrsmith/archive/2008/01/18/fslex-Sample.aspx)由克里斯·史密斯如下:
虽然可以从Visual Studio插件添加F#莱克斯规范文件,运行fslex你将需要打破在命令行。 Fslex.exe位于您的F#发行版的“bin”目录中。
希望有所帮助。
不幸的是,对于.fsl文件没有内置项模板,因为FsLex是PowerPack中的一部分(以便Visual Studio可以想到,竟然会被安装)。拥有一些可以与PowerPack一起安装的模板将非常有用!无论如何,如果您正在寻找一个使用FsLex(并且将.fsl文件作为项目的一部分)的示例项目,那么您可以查看F#源代码(用Visual Studio 2008 MSI分发/ ZIP包)。包含.fsl的项目是FSharp.Compiler.fsproj
,在我的安装中,它可以在C:\Programs Files\FSharp-1.9.9.9\source\fsharp\FSharp.Compiler
中找到。令人惊讶的是,它包含了一个F#语言本身的词法分析器:-)。
要FsLex
项目添加到MSBuild项目(这也是Visual Studio项目),它使用以下:
<FsLex Include="..\lex.fsl">
<OtherFlags>--lexlib Internal.Utilities.Text.Lexing</OtherFlags>
<Link>lex.fsl</Link>
</FsLex>
<Compile Include="lex.fs" />
在你还需要FsYacc
情况下,这里有一个例子(也FSharp.Compiler.fsproj
):
<FsYacc Include="..\pars.fsy">
<Module>Microsoft.FSharp.Compiler.Parser</Module>
<Open>Microsoft.FSharp.Compiler</Open>
<OtherFlags>--internal --lexlib Internal.Utilities.Text.Lexing
--parslib Internal.Utilities.Text.Parsing</OtherFlags>
<Link>pars.fsy</Link>
</FsYacc>
<Compile Include="pars.fs" />
请注意,您所需要的FsYacc
/FsLex
命令来调用自定义工具,同时也是Compile
命令,它告诉编译器包括制作项目时生成的fs
文件。
我使用的是免费VS壳牌,直到我终于威胁自己不够,最终购买完整VS,除非我做错事,(我可能是)没有正常的解决方案似乎为我工作。我所做的是将以下预构建事件添加到项目属性中:
"C:\Program Files (x86)\FSharpPowerPack-2.0.0.0\bin\fslex.exe" "$(ProjectDir)\Lexer.fsl"
"C:\Program Files (x86)\FSharpPowerPack-2.0.0.0\bin\fsyacc.exe" "$(ProjectDir)\Parser.fsy" --module Parser
这似乎对我来说已经足够好了。错误全部进入输出窗口。如果您使用的是32位机器,则可以从这些路径中删除(x86)。
这当然有效,但我希望有正确的整合,VS正确地找出依赖关系。 – 2010-09-14 21:40:35
嗯,我明白了。 我希望有一个.fsl文件的项目模板与关联的构建步骤等。 无论如何,我会首先获得VS2010版本,然后看看我能得到多少。 – Volker 2010-03-08 15:44:24