Parsanol

Parsanol

Write a grammar once. Compile it to a verified, checksummed artifact. Get byte-identical trees and IDE-grade error recovery on Ruby, Rust, WebAssembly, and TypeScript.

What Parsanol does today

Error recovery, by design

A failed parse returns the deepest real-content position, the expected set, the best partial tree — and when the grammar declares a resync policy, the exact spans consumed so parsing resumed. Deterministic across engines.

One grammar, every runtime

Compile PARG once into a checksummed parsanol-tree/v2 artifact; Ruby, Rust, WebAssembly, and the TypeScript runtime consume the same bytes and build the same tree.

Verified identical, every day

A 32-artifact conformance corpus, a nightly five-engine differential fuzz — including a reference walker with every optimization switched off — and shipped-artifact audits keep "identical everywhere" an enforced property.

Fast where it counts

Packrat parsing with O(n) guarantees. On real documents the native engine parses the same grammar roughly 3.6× faster than parslet, with a bytecode VM and incremental sessions for editor-scale reparse.

Real-world grammar features

Skip/trivia injection with comment capture, atomic rules, compile-time left-recursion rewriting with precedence tiers, lookbehind guards, and runtime state atoms — the things real formats actually need.

Tooling that meets you where you are

A language server, a browser playground running the shipped wasm binary, and Ruby-DSL / PARG frontends feeding the same portable core.

Recent News