Решение FSLex в качестве примера?

Я использовал C/lex в течение долгого времени и хотел бы использовать F#/fslex теперь. Я - сравнительно богатый в C# и в процессе изучения F#. Единственная вещь состоит в том, что я не вижу примера проекта или шаблона, где fslex правильно включен в процесс сборки Visual Studio. Кто-либо знает, где я могу найти тот?

Много поздравлений! Volker

5
задан BIBD 10 March 2010 в 00:00
поделиться

2 ответа

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

10
ответ дан 18 December 2019 в 11:55
поделиться

Проведя небольшое исследование, выяснилось, что они должны быть разделены. В этом сообщении блога ( http://blogs.msdn.com/chrsmith/archive/2008/01/18/fslex-Sample.aspx ) я нашел следующее:

Хотя вы можно добавить файл спецификации F # Lex из надстройки Visual Studio, для запуска fslex вам нужно будет перейти в командную строку. Fslex.exe находится в каталоге bin вашего дистрибутива F #.

Надеюсь, что это поможет.

2
ответ дан 18 December 2019 в 11:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: