---
title: "Packages · Docs · tabnas"
description: "Every package in the project: the engine, the grammar tooling, and all the ready-made grammars."
source: "https://tabnas.dev/docs/packages/"
---

# Packages

Every package is published to npm under the `@tabnas/*` scope and, where applicable, as a Go module at `github.com/tabnas/<name>/go`. Most ship four-quadrant [Diátaxis](https://diataxis.fr) 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.

35 packages. Versions here are recorded in the site source and can lag a release: [releases](https://tabnas.dev/releases/) reads the live version from npm.

## Engine

The machine everything else plugs into.

| Package | What it does | Version | Links |
| --- | --- | --- | --- |
| [`@tabnas/parser`](https://github.com/tabnas/parser) | The engine: a pluggable, rule-based parsing machine and a uniform syntax tree. | `0.12.9` | [npm](https://www.npmjs.com/package/@tabnas/parser) [go](https://pkg.go.dev/github.com/tabnas/parser/go) |

## Grammar tooling

Write, inspect, draw, and test grammars.

| Package | What it does | Version | Links |
| --- | --- | --- | --- |
| [`@tabnas/abnf`](https://github.com/tabnas/abnf) | Compile RFC 5234 ABNF straight into a working grammar. | `0.4.17` | [npm](https://www.npmjs.com/package/@tabnas/abnf) [go](https://pkg.go.dev/github.com/tabnas/abnf/go) |
| [`@tabnas/bnf`](https://github.com/tabnas/bnf) | The shared BNF-family compiler behind abnf, ebnf, and gbnf. | `0.1.25` | [npm](https://www.npmjs.com/package/@tabnas/bnf) [go](https://pkg.go.dev/github.com/tabnas/bnf/go) |
| [`@tabnas/ebnf`](https://github.com/tabnas/ebnf) | Compile W3C EBNF, the notation the XML and XPath specifications use, into a working grammar. | `0.1.11` | [npm](https://www.npmjs.com/package/@tabnas/ebnf) [go](https://pkg.go.dev/github.com/tabnas/ebnf/go) |
| [`@tabnas/debug`](https://github.com/tabnas/debug) | Inspect a live grammar: describe it, render it back as ABNF. | `0.3.10` | [npm](https://www.npmjs.com/package/@tabnas/debug) [go](https://pkg.go.dev/github.com/tabnas/debug/go) |
| [`@tabnas/railroad`](https://github.com/tabnas/railroad) | Render railroad (syntax) diagrams from a grammar. | `0.3.9` | [npm](https://www.npmjs.com/package/@tabnas/railroad) [go](https://pkg.go.dev/github.com/tabnas/railroad/go) |
| [`@tabnas/support`](https://github.com/tabnas/support) | Shared .tsv fixture loaders and the error-code census helpers: the machinery behind every repo's two-runtime specs. | `0.3.6` | [npm](https://www.npmjs.com/package/@tabnas/support) [go](https://pkg.go.dev/github.com/tabnas/support/go) |

## Agent tooling

Serve the fleet to an agent: the MCP server and the tabnas CLI, one implementation behind both.

| Package | What it does | Version | Links |
| --- | --- | --- | --- |
| [`@tabnas/mcp`](https://github.com/tabnas/mcp) | The MCP server and the unified tabnas CLI: the same seven operations from one core, listed in the MCP registry as dev.tabnas/mcp. | `0.1.17` | [npm](https://www.npmjs.com/package/@tabnas/mcp) |

## 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`](https://github.com/tabnas/json) | Standard JSON. | `0.5.13` | [npm](https://www.npmjs.com/package/@tabnas/json) [go](https://pkg.go.dev/github.com/tabnas/json/go) |
| [`@tabnas/jsonc`](https://github.com/tabnas/jsonc) | JSON with comments. | `0.5.10` | [npm](https://www.npmjs.com/package/@tabnas/jsonc) [go](https://pkg.go.dev/github.com/tabnas/jsonc/go) |
| [`@tabnas/json5`](https://github.com/tabnas/json5) | The JSON5 dialect. | `0.5.11` | [npm](https://www.npmjs.com/package/@tabnas/json5) [go](https://pkg.go.dev/github.com/tabnas/json5/go) |
| [`@tabnas/jsonl`](https://github.com/tabnas/jsonl) | JSON Lines (NDJSON): one standard-JSON value per line. | `0.1.12` | [npm](https://www.npmjs.com/package/@tabnas/jsonl) [go](https://pkg.go.dev/github.com/tabnas/jsonl/go) |
| [`@tabnas/jsonic`](https://github.com/tabnas/jsonic) | A dynamic JSON parser that isn't strict and can be customised. | `0.7.4` | [npm](https://www.npmjs.com/package/@tabnas/jsonic) [go](https://pkg.go.dev/github.com/tabnas/jsonic/go) |
| [`@tabnas/yaml`](https://github.com/tabnas/yaml) | YAML. | `0.5.19` | [npm](https://www.npmjs.com/package/@tabnas/yaml) [go](https://pkg.go.dev/github.com/tabnas/yaml/go) |
| [`@tabnas/toml`](https://github.com/tabnas/toml) | TOML. | `0.5.12` | [npm](https://www.npmjs.com/package/@tabnas/toml) [go](https://pkg.go.dev/github.com/tabnas/toml/go) |
| [`@tabnas/ini`](https://github.com/tabnas/ini) | INI files. | `0.5.14` | [npm](https://www.npmjs.com/package/@tabnas/ini) [go](https://pkg.go.dev/github.com/tabnas/ini/go) |
| [`@tabnas/csv`](https://github.com/tabnas/csv) | Delimited records (CSV, TSV, RFC 4180 quoting) into objects or arrays. | `0.6.2` | [npm](https://www.npmjs.com/package/@tabnas/csv) [go](https://pkg.go.dev/github.com/tabnas/csv/go) |
| [`@tabnas/xml`](https://github.com/tabnas/xml) | XML. | `0.7.12` | [npm](https://www.npmjs.com/package/@tabnas/xml) [go](https://pkg.go.dev/github.com/tabnas/xml/go) |
| [`@tabnas/markdown`](https://github.com/tabnas/markdown) | Markdown: the full CommonMark spec, 652/652 on the reference suite. | `0.7.8` | [npm](https://www.npmjs.com/package/@tabnas/markdown) [go](https://pkg.go.dev/github.com/tabnas/markdown/go) |
| [`@tabnas/css`](https://github.com/tabnas/css) | CSS, into an AST that preserves declaration order and duplicate properties. | `0.5.10` | [npm](https://www.npmjs.com/package/@tabnas/css) [go](https://pkg.go.dev/github.com/tabnas/css/go) |
| [`@tabnas/c`](https://github.com/tabnas/c) | C source, into a concrete syntax tree: every token, comment, and macro kept as-is. | `0.5.10` | [npm](https://www.npmjs.com/package/@tabnas/c) [go](https://pkg.go.dev/github.com/tabnas/c/go) |
| [`@tabnas/proto`](https://github.com/tabnas/proto) | Protocol Buffers .proto IDL (proto2, proto3, editions 2023/2024). | `0.6.3` | [npm](https://www.npmjs.com/package/@tabnas/proto) [go](https://pkg.go.dev/github.com/tabnas/proto/go) |
| [`@tabnas/zon`](https://github.com/tabnas/zon) | Zig Object Notation, as used by build.zig.zon manifests. | `0.5.12` | [npm](https://www.npmjs.com/package/@tabnas/zon) [go](https://pkg.go.dev/github.com/tabnas/zon/go) |
| [`@tabnas/feed`](https://github.com/tabnas/feed) | RSS (0.90–2.0) and Atom (0.3, 1.0), normalised to one Atom-shaped result. | `0.6.11` | [npm](https://www.npmjs.com/package/@tabnas/feed) [go](https://pkg.go.dev/github.com/tabnas/feed/go) |
| [`@tabnas/chess`](https://github.com/tabnas/chess) | PGN and SAN: chess games and moves, tag pairs, variations, and annotations. | `0.1.10` | [npm](https://www.npmjs.com/package/@tabnas/chess) [go](https://pkg.go.dev/github.com/tabnas/chess/go) |
| [`@tabnas/semver`](https://github.com/tabnas/semver) | Semantic Versioning 2.0.0, compiled from the specification's own grammar, with precedence. | `0.0.6` | [npm](https://www.npmjs.com/package/@tabnas/semver) [go](https://pkg.go.dev/github.com/tabnas/semver/go) |
| [`@tabnas/gbnf`](https://github.com/tabnas/gbnf) | llama.cpp GBNF: check text against a constrained-decoding grammar, with no model. | `0.1.14` | [npm](https://www.npmjs.com/package/@tabnas/gbnf) [go](https://pkg.go.dev/github.com/tabnas/gbnf/go) |

## Web components

Custom elements for a web page that bundle a grammar and the engine.

| Package | What it does | Version | Links |
| --- | --- | --- | --- |
| [`@tabnas/chess-view`](https://github.com/tabnas/chess/tree/main/web) | A <chess-view> web component: a 2D chessboard view of a PGN game, with move navigation and highlighted notation. | `0.1.5` | [npm](https://www.npmjs.com/package/@tabnas/chess-view) |

## Syntax plugins

Syntax that layers onto a host grammar instead of standing alone.

| Package | What it does | Version | Links |
| --- | --- | --- | --- |
| [`@tabnas/expr`](https://github.com/tabnas/expr) | Pratt-parser expressions: infix, prefix, suffix, ternary, with configurable precedence. | `0.5.12` | [npm](https://www.npmjs.com/package/@tabnas/expr) [go](https://pkg.go.dev/github.com/tabnas/expr/go) |
| [`@tabnas/directive`](https://github.com/tabnas/directive) | Directive syntax: token sequences like @name or add<1,2> that trigger custom parsing. | `0.5.10` | [npm](https://www.npmjs.com/package/@tabnas/directive) [go](https://pkg.go.dev/github.com/tabnas/directive/go) |
| [`@tabnas/hoover`](https://github.com/tabnas/hoover) | String hoovering: block-delimited strings with unquoted internal spaces. | `0.3.11` | [npm](https://www.npmjs.com/package/@tabnas/hoover) [go](https://pkg.go.dev/github.com/tabnas/hoover/go) |
| [`@tabnas/path`](https://github.com/tabnas/path) | Track the property path to each value as it is parsed. | `0.3.10` | [npm](https://www.npmjs.com/package/@tabnas/path) [go](https://pkg.go.dev/github.com/tabnas/path/go) |
| [`@tabnas/multisource`](https://github.com/tabnas/multisource) | Merge multiple sources into one parse: a marked path is resolved and spliced in place. | `0.5.10` | [npm](https://www.npmjs.com/package/@tabnas/multisource) [go](https://pkg.go.dev/github.com/tabnas/multisource/go) |

## Command line

Command-line entry points.

| Package | What it does | Version | Links |
| --- | --- | --- | --- |
| [`@tabnas/jsonic-cli`](https://github.com/tabnas/jsonic-cli) | Command-line interface for @tabnas/jsonic. | `0.5.10` | [npm](https://www.npmjs.com/package/@tabnas/jsonic-cli) [go](https://pkg.go.dev/github.com/tabnas/jsonic-cli/go) |
| [`@tabnas/lsp`](https://github.com/tabnas/lsp) | One language server for every tabnas grammar, and a generator for single-language servers and their editor plugins. | `0.1.4` | [npm](https://www.npmjs.com/package/@tabnas/lsp) [go](https://pkg.go.dev/github.com/tabnas/lsp/go) |

Health and CI status for every repository is on the [org status dashboard](https://tabnas.github.io/status/). Reproducible cross-port capability and performance evidence is in the [measurement catalog](https://tabnas.github.io/measure/).
