Skip to content

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

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages