Как я могу сделать Stack call Happy, Alex и другие инструменты сборки?

Как часть моего компилятора, мне нужен alex и happy работать как часть моего процесса сборки. Как Stack поддерживает этот сценарий?

Бонус: как я могу зарегистрировать alex и happy как зависимости от времени компиляции?

Ответ 1

cabal понимают суффиксы .x для файлов alex и .y для счастливых файлов и будут автоматически использовать alex и с удовольствием создавать соответствующие файлы .hs.

Действия:

  1. Добавьте файлы .x и .y файлы extra-source-files:
  2. Добавьте alex и с happy создайте свои build-tools: раздел
  3. Если ваш исходный файл Foo.Bar.x, убедитесь, что Foo.Bar указан в Foo.Bar exposed-module: или в other-modules:

Хорошим примером пакета с использованием alex и happy является пакет language-python:

https://github.com/bjpop/language-python/blob/master/language-python.cabal

Обновление: это также актуально для стека. Фактически, стек также построит alex и будет рад за вас.