Small monorepo that contains a lexer, parser, interpreter and compiler (to JVM bytecode / .class files) for the CMA Coach 7 language. It currently supports most standard library functions, supports English and Dutch, and supports a few procedures and statements. This project is intended to simplify and provide QOL features for Coach 7 modeling (which is a mandatory part of the Dutch Physics exam curriculum) by providing proper error logs and a programmable interface.
This implementation is, even though there are little to none optimizations used, significantly faster than the official Coach software. The interpreter is about 50-200x faster (depending on the model and the amount of iterations), and the compiler (excluding compile times) is 500-1500x faster (these figures are rough estimates based on measurements on my local computer, and should be taken with a grain of salt, but the order of magnitude should match).
An item with a ticked checkbox is already implemented, otherwise, the item is still yet to be implemented.
- Lexing the programs
- Building a tree structure (for evaluation and analysis)
- Validating the code
- Multiple languages (Dutch and English)
- Logging data (and converting to TSV/CSV)
- Visually view the data (
visualizer
) - Compile to JVM bytecode (and dynamically loading and executing)
- Do..while, repeat
- Function and procedure definition and usage
- LSP / IntelliJ plugin (partially)
- Clone this repository
- Run
git submodule update --init --recursive
- Run
./gradlew build
to build an artifact for every submodule
The Unlicense.