К сожалению, нет встроенного шаблона элемента для файлов .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
при сборке проекта.