FSLex示例解决方案?

Vol*_*ker 5 f# visual-studio fslex

我已经使用C/lex很长时间了,现在想使用F#/ fslex.我在C#和学习F#的过程中相对富裕.唯一的事情是我看不到任何项目示例或模板,其中fslex正确包含在Visual Studio构建过程中.有谁知道我在哪里找到一个?

很多问候!沃尔克

Tom*_*cek 10

不幸的是,.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" />
Run Code Online (Sandbox Code Playgroud)

如果你还需要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" />
Run Code Online (Sandbox Code Playgroud)

请注意,您需要FsYacc/ FsLexcommand来调用自定义工具,还需要Compile命令告诉编译器fs在构建项目时包含生成的文件.


Cha*_*yer 2

做了一些研究,看起来它们需要分开。我在Chris Smith 的这篇博客文章 ( http://blogs.msdn.com/chrsmith/archive/2008/01/18/fslex-Sample.aspx )中找到了以下内容:

\n\n
\n

尽管您可以从 Visual Studio 加载项添加 F# Lex 规范文件,但要运行 fslex,您需要中断到命令行。Fslex.exe 位于 F# 发行版 \xe2\x80\x99s \xe2\x80\x98bin\xe2\x80\x99 目录中。

\n
\n\n

希望有帮助。

\n