vs 2008 で作業していた古い f# パーサー プロジェクトを、vs 2013 で作業するために復活させようとしています。FsLexYacc を使用します。
次のように、ビルド前のステップを使用して問題なくビルドできました。
fslex --unicode "$(ProjectDir)XpathLexer.fsl"
fsyacc --module XpathParser "$(ProjectDir)XpathParser.fsy"
ただし、入力が変更されたかどうかに関係なく常に実行されるため、これは理想的とは言えません。
次に、古い MsBuild アクションを使用してみました。
<FsYacc Include="XpathParser.fsy">
<FsLex Include="XpathLexer.fsl">
しかし、これらはビルド プロセス中に完全に無視されたようです。そうですか?これらのビルド タスクは何らかの方法で削除されましたか?
次に、vs C++ の下に文書化されているいくつかのものを見つけました。
<CustomBuild Include="XpathParser.fsy">
<Message>Calling FsYacc</Message>
<Command>fsyacc --module XpathParser "$(ProjectDir)XpathParser.fsy"</Command>
<Outputs>$(ProjectDir)XpathParser.fs</Outputs>
</CustomBuild>
と
<PropertyGroup>
<CustomBuildBeforeTargets>CoreCompile</CustomBuildBeforeTargets>
</PropertyGroup>
(Microsoft.Fsharp.Targets ファイルを調べて、「CoreCompile」ターゲットを見つけました。)
残念ながら、まだ葉巻はありません。
fslex/yacc を vs 2013 ソリューションに適切に統合することが実際に可能かどうか、また可能であれば、その方法を明らかにできる人はいますか?