2010-03-08 118 views
5

我一直使用C /法很長一段時間了,很想現在使用F#/ fslex。 我在C#和學習F#的過程中都比較好。 唯一的問題是,我看不到任何項目示例或模板,其中fslex已正確包含在Visual Studio構建過程中。 有誰知道我在哪裏可以找到一個?FSLex示例解決方案?

許多問候的! 沃爾克

回答

2

做了一些研究,它看起來像他們需要的是獨立的。我發現在這個博客帖子(http://blogs.msdn.com/chrsmith/archive/2008/01/18/fslex-Sample.aspx)由克里斯·史密斯如下:

雖然可以從Visual Studio插件添加F#萊克斯規範文件,運行fslex你將需要打破在命令行。 Fslex.exe位於您的F#發行版的「bin」目錄中。

希望有所幫助。

+0

嗯,我明白了。 我希望有一個.fsl文件的項目模板與關聯的構建步驟等。 無論如何,我會首先獲得VS2010版本,然後看看我能得到多少。 – Volker 2010-03-08 15:44:24

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" /> 

在你還需要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文件。

3

我使用的是免費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)。

+0

這當然有效,但我希望有正確的整合,VS正確地找出依賴關係。 – 2010-09-14 21:40:35

相關問題