Skip to content
develop
Switch branches/tags
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
dev
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

About

self-hosted compiler for a subset of OCaml

Topics

Resources

License

Releases

No releases published

Packages

No packages published