我一直使用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