|
|
||
|---|---|---|
| examples | ||
| extra | ||
| include | ||
| ref_parser | ||
| src | ||
| .gitignore | ||
| Makefile | ||
| README.md | ||
README.md
milly
milly is an hobby, and should not be taken seriously.
Interpreter for a Minimal ML-like language whose ideal goal is to be used for bootstrapping compilers and interpreters.
How to build
milly's interpreter is written in portable ISO C11, sources are in src/ and header files are in include/.
If your system happens to have a make implementation compatible with GNU Make, you can just run:
make
Otherwise, something like this should work:
$(CC) -std=c11 -o milly -Iinclude/ src/*.c
The language
milly is a minimal dialect of Standard ML and Haskell, here is a list of the features (or better, limitations) I want to introduce:
- Keep the implementation <5000 LOC
- Eager evaluation (call by value)
- Algebraic Datatypes (pretty useful for representing syntax trees)
- First class functions
- Pattern patching (pretty useful for analyzing syntax trees)
- Integers, booleans, strings
- Mutable
refcell - FFI to C
- Polymorphic types à la Hindley Milner (probably unfeasible)
- Automatic currying of functions, with optimised partial evaluation (unfeasible)
- Delimited continuations (this is an overkill)
- Easy syntax allowing easy kakoune support
milly's full grammar is specified as a pair of lex and yacc files in ref_parser/.
kakoune plugin for milly is in extra/milly.kak.