Minimal Language realisation on haskell
Предполагается, что знакомясь с данной реализацией милана вы уже имеете некоторое представление о haskell. Впрочем ничего не мешает начать. Обычно начинающим рекомендуют следующие книги:
- Learn You A Haskell - основы haskell в картинках.
- Real World Haskell - введение в haskell + описание современных (на момент выхода книги) библиотек. В частности из Real World Haskell может пригодиться глава 16: Parsec. Там вы сможете найти описание парсера, который используется в данном компиляторе и ещё там приводится описание аппликативного стиля (который тоже во всю используется).
Выбор IDE для Haskell. Проще говоря - нет качественных, продуманных IDE. Разработка ведется любимом текстовом редакторе с подстветкой и плагинами для сборки. Тем кто не имеет предпочтений и не привык пользоваться vim/emacs стоит посмотреть на Sublime Text.
В большинстве случаев достаточно начать с Haskell Platform. Хотя на Arch Linux было удобнее установить компилятор из репозиториев.
sudo pacman -S ghc cabal-install
После установки желательно обновить список удаленных пакетов
cabal update
cabal install cabal-install
Перейдите в консоли в папку в которой вы храните проекты и выполните:
git clone https://github.com/vlastachu/milan.git
cd milan
cabal install
cabal configure
cabal build
Теперь у вас должен быть исполянемый файл в папке /dist/build/milan. Вы можете добавить эту папку в переменную окржуения PATH, хотя не стоит. Также вы можете создать ссылку
ln ./dist/build/milan/milan .
Или для windows:
mklink ./dist/build/milan/milan.exe .
Теперь можно проверить работоспособность компилятора:
./milan --input=test/add.mil --ouput=add.out
##Запуск виртуальной машины
##Отладка Заместо сборки можно воспользоваться
ghc src/Main.hs -o milan
Вы также получите исполняемый файл. Но этап с запуском исполняемого файл тоже можно пропустить, заместо этого воспользоваться интерпретатором:
runghc src/Main.hs --input=test/add.mil --ouput=add.out
Каждый раз полностью собирать проект не удобно для отладки. Тем более скорее всего вы будете изменять только Parser.hs.
Поэтому вы можете запустить его в интерактвной среде
ghci src/Parser.hs
Теперь вы можете напрямую вызывать функции. например проверить парсер выражений:
> parse pExpr "test" "1 + 1"
Binary Add (Constant 1) (Constant 1)
##Полезные утилиты
Помогает улучшить стиль кода, сделать лаконичнее убрать лишние скобки. Тем не менее мне не удалось удачно им воспользоваться: советы которые он выдаёт могут сделать код не компилируемым (хотя не исключено, что я делал что-то не так). Установка:
cabal install hlint
hlint src/main.hs