38 lines
1.2 KiB
Markdown
38 lines
1.2 KiB
Markdown
# 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 `ref` cell
|
|
- 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)
|
|
|
|
milly's full grammar is specified as a pair of lex and yacc files in `ref_parser/`.
|
|
|