Skip to content

vlastachu/milan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

milan

Minimal Language realisation on haskell

Haskell

Предполагается, что знакомясь с данной реализацией милана вы уже имеете некоторое представление о haskell. Впрочем ничего не мешает начать. Обычно начинающим рекомендуют следующие книги:

  1. Learn You A Haskell - основы haskell в картинках.
  2. Real World Haskell - введение в haskell + описание современных (на момент выхода книги) библиотек. В частности из Real World Haskell может пригодиться глава 16: Parsec. Там вы сможете найти описание парсера, который используется в данном компиляторе и ещё там приводится описание аппликативного стиля (который тоже во всю используется).

Выбор IDE для Haskell. Проще говоря - нет качественных, продуманных IDE. Разработка ведется любимом текстовом редакторе с подстветкой и плагинами для сборки. Тем кто не имеет предпочтений и не привык пользоваться vim/emacs стоит посмотреть на Sublime Text.

Установка Haskell

В большинстве случаев достаточно начать с 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)

##Полезные утилиты

HLint

Помогает улучшить стиль кода, сделать лаконичнее убрать лишние скобки. Тем не менее мне не удалось удачно им воспользоваться: советы которые он выдаёт могут сделать код не компилируемым (хотя не исключено, что я делал что-то не так). Установка:

cabal install hlint
hlint src/main.hs

About

Minimal Language realisation on haskell

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published