aboutsummaryrefslogtreecommitdiff

Micro

This is not necessarily related to Micro, but I couldn't find a better name.

Micro is a small statically typed toy programming language.

Objectives:

  • Learn Haskell and have fun
  • Build a compiler
  • (may be) Targeting 8-bit microcomputers (Z80 CPU); easy to interact with existing code written in C/ASM
  • (may be) Targeting WASM
  • Fast compilation
  • Statically typed, small but useful, and reasonably performant (including on the target)

Current status

This is a work in progress.

Check the language spec for a taste of what is planned.

Currently the compiler uses parsec (Monadic parser combinators) following this planned pipeline:

  • Frontend
    • Lexer; lexical analysis
    • Parser; syntax analysis
    • Analyzer; semantic analysis, type-check, fold constant, etc
  • Backend
    • Generator: emit intermediate code for the target (e.g. ASM files); (maybe) Intermediate representation

For updates, please check Micro website.

How to build it

Requires Haskel and Cabal:

cabal run micro

To run the tests use:

cabal test

Running the compiler

TODO

How does it look like?

This is an example of a Micro program:

def fib(n: u16): u16 {
    if n < 2 {
        return n;
    } else {
        return fib(n - 1) + fib(n - 2);
    }
}

fib(20); # 6765

COPYING

This software is distributed under licence GPL, unless stated otherwise. It covers only this software, your programs are yours to license in any way you want.

See COPYING file for further details.