kavak is an embeddable
frontend toolkit in C.
kavak provides the reusable frontend pieces behind
small language implementations: borrowed source buffers,
descriptor-driven lexing, Pratt expression parsing, AST and type
arenas, diagnostics, scope lookup, and flow-sensitive narrowing.
The core is now open-source ready. Native tests, examples, ASan/UBSan, TSan, install dry-run, and the WASM static archive build pass locally. The Unicode path links against the sibling decoder library, so browser targets use the same scalar classification as native builds.
Descriptor model: languages provide keyword, operator, comment, string, number, offside, and auto-semicolon rules, then attach parser and semantic hooks where the grammar needs language-specific behavior.