Packages
Every package is published to npm under the @tabnas/* scope and, where
applicable, as a Go module at github.com/tabnas/<name>/go. Each ships
four-quadrant Diátaxis docs in both languages.
Grammars are plugins over other grammars, so the list below is closer to a dependency order than a catalogue: JSON is a handful of rules, JSONC adds comments to them, JSON5 and jsonic relax the quoting, and so on. Extending one of these is usually cheaper than starting a new grammar.
28 packages. Versions here are recorded in the site source and can lag a release — releases reads the live version from npm.
Engine
The machine everything else plugs into.
| Package | What it does | Version | Links |
|---|---|---|---|
@tabnas/parser | The engine — a pluggable, rule-based parsing machine and a uniform syntax tree. | 0.8.5 | npm go |
Grammar tooling
Write, inspect and draw grammars.
| Package | What it does | Version | Links |
|---|---|---|---|
@tabnas/abnf | Compile RFC 5234 ABNF straight into a working grammar. | 0.4.2 | npm go |
@tabnas/bnf | The shared BNF-family compiler behind abnf, ebnf and gbnf. | 0.1.5 | npm go |
@tabnas/debug | Inspect a live grammar — describe it, render it back as ABNF. | 0.3.2 | npm go |
@tabnas/railroad | Render railroad (syntax) diagrams from a grammar. | 0.3.2 | npm go |
Languages and formats
Ready-made languages and data formats. Each is a plugin, so you can extend one rather than start over.
| Package | What it does | Version | Links |
|---|---|---|---|
@tabnas/json | Standard JSON. | 0.5.2 | npm go |
@tabnas/jsonc | JSON with comments. | 0.5.2 | npm go |
@tabnas/json5 | The JSON5 dialect. | 0.5.2 | npm go |
@tabnas/jsonic | A dynamic JSON parser that isn't strict and can be customised. | 0.6.2 | npm go |
@tabnas/yaml | YAML. | 0.5.2 | npm go |
@tabnas/toml | TOML. | 0.5.2 | npm go |
@tabnas/ini | INI files. | 0.5.2 | npm go |
@tabnas/csv | Delimited records — CSV, TSV, RFC 4180 quoting — into objects or arrays. | 0.5.2 | npm go |
@tabnas/xml | XML. | 0.7.2 | npm go |
@tabnas/markdown | Markdown — the full CommonMark spec, 652/652 on the reference suite. | 0.6.2 | npm go |
@tabnas/css | CSS, into an AST that preserves declaration order and duplicate properties. | 0.5.2 | npm go |
@tabnas/c | C source, into a concrete syntax tree — every token, comment, and macro kept as-is. | 0.5.2 | npm go |
@tabnas/proto | Protocol Buffers .proto IDL (proto2, proto3, editions 2023/2024). | 0.4.2 | npm go |
@tabnas/zon | Zig Object Notation, as used by build.zig.zon manifests. | 0.5.2 | npm go |
@tabnas/feed | RSS (0.90–2.0) and Atom (0.3, 1.0), normalised to one Atom-shaped result. | 0.6.2 | npm go |
@tabnas/chess | PGN and SAN — chess games and moves, tag pairs, variations and annotations. | 0.1.3 | npm go |
@tabnas/gbnf | llama.cpp GBNF — check text against a constrained-decoding grammar, with no model. | 0.1.4 | npm go |
Syntax plugins
Syntax that layers onto a host grammar instead of standing alone.
| Package | What it does | Version | Links |
|---|---|---|---|
@tabnas/expr | Pratt-parser expressions — infix, prefix, suffix, ternary, with configurable precedence. | 0.5.2 | npm go |
@tabnas/directive | Directive syntax — token sequences like @name or add<1,2> that trigger custom parsing. | 0.5.2 | npm go |
@tabnas/hoover | String hoovering — block-delimited strings with unquoted internal spaces. | 0.3.2 | npm go |
@tabnas/path | Track the property path to each value as it is parsed. | 0.3.2 | npm go |
@tabnas/multisource | Merge multiple sources into one parse — a marked path is resolved and spliced in place. | 0.5.2 | npm go |
Command line
Command-line entry points.
| Package | What it does | Version | Links |
|---|---|---|---|
@tabnas/jsonic-cli | Command-line interface for @tabnas/jsonic. | 0.5.2 | npm go |
Health and CI status for every repository is on the org status dashboard.