我已经使用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文件。

10-08 18:16