A Primitive Compiler from
$ lamc [EXAMPLE_ID] [(-c|--direct-c) (-o|--output OUTPUT_FILE) | [--am]]
For details of each option, please check lamc --help
.
optparse-applicative
.
To use that, users can check their documentation about autocompletion.
Currently, this repository implements a primitive compiler from Call-By-Value
- Frontend Parser for
$\lambda$ -calculus - Bidirectional type-checker for
$\lambda$ -calculus - Local
$\lambda$ -calculus optimization pass - Call-By-Value
$\lambda$ -calculus-To-CBPV pass - Call-By-Name
$\lambda$ -calculus-To-CBPV pass - Call-By-Need
$\lambda$ -calculus-To-CBPV pass - Arity analysis
- Type-checker for CBPV
- Local CBPV optimization pass
- Tail call optimization pass (or lowering pass)
- CBPV-to-C pass without GC
- CBPV-to-AM pass without GC
- AM interpreter
- AM-to-C pass without GC
- GC runtime function
- GC instruction in CBPV-to-C
- GC instruction in CBPV-to-AM
- PrintInt effect
- PrintDouble effect
- PrintString effect
- Read effect
- Exception-handling effects
- General I/O effect
- Simple module system