Skip to content

Latest commit

 

History

History
31 lines (27 loc) · 1.68 KB

README.md

File metadata and controls

31 lines (27 loc) · 1.68 KB

coachtaal-tooling

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.

Speed

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).

Features

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)

Project Setup

  1. Clone this repository
  2. Run git submodule update --init --recursive
  3. Run ./gradlew build to build an artifact for every submodule

License

The Unlicense.