Build and Runtime Matrix

This chapter summarizes, per target, what CongoCC emits and how you turn it into a running parser. In every case generation itself only needs congocc.jar and Java 17+ (Installation); the rows below are about building and running the generated code.

Target

Output

Build

Runtime requirement

Java

.java files in a package tree

javac (or your usual build tool)

a JRE/JDK 17+; standard library only

Python

a Python package of .py modules

none — import and run

CPython; standard library only

C#

a project with a .csproj

dotnet build

the .NET SDK/runtime; standard library only

Rust

a crate with Cargo.toml

cargo build / cargo test

Rust 1.89+ (2024 edition); no dependencies (optional serde)

No runtime library

There is no separate “CongoCC runtime” to ship. Each generated parser contains the lexer, parser, token, and node types it needs, so deploying it means deploying ordinary source in the target language. This keeps dependencies minimal — for Rust, literally zero beyond the standard library unless you opt into serde.

Regeneration in the build

Whatever the target, wire generation into the build so the generated code stays in sync with the grammar, and pass -n so CongoCC does not check for updates during automated builds. The language-neutral advice is in How To: Integrate the Build; the per-language chapters note where each toolchain expects generated sources to live.