# tabnas

> An extensible parsing engine, and a compile target for agents. A grammar compiles to a rule table, a state machine as data, so you extend a language by adding rules instead of forking its parser, and an agent can write the rules. One grammar file drives TypeScript and Go.

## What it is

Parser generators produce code, and code you extend by forking. tabnas compiles a grammar into a rule table instead: a state machine as data. To extend a language you add rules to the table, and because the rules are data, an agent can write them as easily as a person can.

One grammar file drives both implementations, TypeScript and Go, so a format parses the same way in both. It ships parsers for JSON, YAML, TOML, CSV, INI, XML, Markdown, CSS, C and Protocol Buffers among others, and it compiles RFC 5234 ABNF, the grammar notation the internet's own standards are written in, straight into a working parser.

It started as jsonic, an attempt at a more forgiving JSON parser, and became an extensible one along the way. Today it is the parser under the rest of the Voxgig toolchain: apidef reads OpenAPI through it, and aontu is built on it.

## Facts

- Site: https://tabnas.dev
- Source: https://github.com/tabnas
- npm: @tabnas/parser
- Install: `npm install @tabnas/parser @tabnas/abnf`
- Languages: TypeScript, Go
- Licence: MIT

## The other sections

- [Open source at Voxgig](https://voxgig.com/open-source): the overview, with every voxgig repository active in the last six months.
- [SDK Generator](https://voxgig.com/open-source/sdk-generator): Six surfaces from one OpenAPI description.
- [SDK Catalog](https://voxgig.com/open-source/sdk-catalog): 600+ generated SDKs, as repositories you can read.
- [aontu](https://voxgig.com/open-source/aontu): Type-safe system definitions, as guardrails for coding agents.
- [jostraca](https://voxgig.com/open-source/jostraca): A code generator you can run twice.
- [Seneca](https://voxgig.com/open-source/seneca): A microservices toolkit for Node.js.
- [Voxgig tools](https://voxgig.com/open-source/tools): The libraries inside every generated SDK, ported to every language the SDKs ship in.
