Sign inSign up

coorde/mlml

By coorde

•Updated over 7 years ago

https://github.com/coord-e/mlml

Image
0

10K+

coorde/mlml repository overview

⁠mlml

Build Status Coverage Status Docker Cloud Automated build Docker Cloud Build Status MicroBadger Image

mlml is a self-hosted toy compiler for a tiny subset of OCaml.

a detailed description can be found in my blog post (in Japanese): 自作OCamlコンパイラでセルフホストした - molecular coordinates⁠

⁠roadmap

  • basic arithmetic
  • variables
  • if-then-else
  • functions
    • recursion
    • mutual recursion
    • closure
    • currying
  • tuples
  • variants
  • records
  • pattern matching
  • structual comparison
  • primitive types
    • string
    • list
    • bytes
    • array
  • formatted output with Printf
  • modules
    • definition
    • aliases
    • open
    • dune-like bundler
  • self-hosting!
  • exceptions
  • type checker & type inference

⁠self hosting

mlml is self-hosted. i.e. mlml can compile itself.

./dev/exec.sh ./dev/self_host.sh

To obtain build artifacts, pass a path to local directory as below. You will see compiled binaries under ./self_host.

mkdir self_host
./dev/exec.sh ./dev/self_host.sh ./self_host

⁠limitations

  • external definitions are only available for functions
  • all modules and paths are statically-resolved
  • all custom oeprators are left-associative
  • function keyword does not make an expression

⁠development

If you have docker installed in your system, simply run

./dev/start.sh

to start the development.

You can run tests manually by running the following command:

./dev/exec.sh dune runtest

⁠thanks

The code and algorithm in parser and lexer is strongly inspired by ushitora-anqou/aqaml⁠

Tag summary

Content type

Image

Digest

Size

3.5 MB

Last updated

over 7 years ago

docker pull coorde/mlml