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.