Skip to content
This repository has been archived by the owner on May 2, 2024. It is now read-only.

kana-sama/agner

Repository files navigation

Компилятор сабсета эрланга в бинарник. Для образовательных целей.

Для сборки нужен ghc 9.6.1 и hpack

hpack
cabal install --overwrite-policy=always

Использование

agner -o example example.erl
./example

Что умеет:

  • целые числа
  • атомы
  • функции с патматачем
  • ссылки на функции
  • кортежи
  • списки
  • гц
  • оптимизация хвостовых вызовов (необязательно рекурсивных, и даже для лямбд)
  • spawn + процессы + шедулер
  • receive + send
  • строки, литералы чаров
  • begin Expr+ end.
  • операторы для чисел: +/1, -/1, +/2, -/2, */2, div/2, rem/2
  • битовые операторы: bnot/1, band/2, bor/2, bxor/2, bsl/2, bsr/2
  • булевы операторы: not/1, and/2, or/2, xor/2
  • ленивые операторы: andalso/2, orelse/2
  • операторы сравнения: ==, /=, =<, <, >=, >, =:=, =/=
  • операторы для списков: ++/2
  • case Expr of (Pat -> Exprs)+ end
  • гарды
  • if
  • модули (module, ренейминг)
  • рекорды
  • мапы
  • лямбды
  • лист-выражения
  • мап-выражения
  • erlang-модуль - prelude
  • maybe
  • прагма import
  • прагма export
  • раздельная компиляция
  • catch
  • try-[catch]-[after] (кроме try-of)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published