A lexer, parser and AST for Monkey C. See monkey-c-parser
A full representation of the Monkey C AST to support future development of
tools, for now primarily the monkey-c-formatter.
A formatter to format Monkey C code. See monkey-c-formatter
The main reason this project was created. An opinionated zero-config formatter that produces a deterministic formatting experience similar to ruff and rustfmt.
Note
I'd love any input and testing on the formatter. Both help finding bugs and inconsistencies but also input on the formatting algorithm. Please create an issue for any bug or feature request.
A linter for Monkey C with machine-applicable fixes. See
monkey-c-linter
Rules walk the AST produced by monkey-c-parser and emit diagnostics with
optional --fix suggestions that patch source byte ranges directly. The
linter is independent of the formatter and fixes don't reformat unrelated code.
Run the formatter after --fix if you want whitespace normalised.
For transparency: this project uses AI. Implementations are suggested by me, discussed, and reviewed before being committed.
This repository is licensed under the MIT License
