我已经使用C/lex很久了,现在想使用F#/fslex。
在C#和学习F#的过程中,我的生活相对较差。
唯一的是,我看不到在Visual Studio构建过程中正确包含fslex的任何项目示例或模板。
有人知道我在哪里可以找到一个人吗?
很多问候!
沃尔克
最佳答案
不幸的是,由于FsLex是PowerPack的一部分,因此没有.fsl文件的内置项目模板(因此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
文件。