@tabnas/debug
v0.2.3
Published
Debug plugin for the tabnas parser — tracing helpers and a describe() method.
Readme
@tabnas/debug
Debug / introspection plugin for the
tabnas parser.
It makes a grammar visible: a structured model() and a printable
describe() return a description of an instance's installed grammar
(rules, tokens, plugins), abnf() re-expresses it as ABNF, and trace
logs a parse step by step. A dev/test aid — never a runtime dependency.
Install
npm install @tabnas/parser @tabnas/debugUse
const { Tabnas } = require('@tabnas/parser')
const { Debug } = require('@tabnas/debug')
const tn = new Tabnas({ tag: 'demo' })
tn.use(Debug, { print: false, trace: false })
// describe() is the printable form; model() is the structured form.
typeof tn.debug.describe() // => 'string'
const m = tn.debug.model()
m.tag // => 'demo'
m.config.start // => 'val'
m.plugins.map((p) => p.name) // => ['Debug']
Array.isArray(m.rules) // => trueStructured output — model()
describe() renders the instance as text; model() returns the same
information as a typed, JSON-serialisable object (DebugModel):
| field | what it holds |
|---|---|
| tag | the instance tag |
| tokens | { tin, name, fixed? }[] — the token table |
| tokenSets | named token sets → member tins |
| rules | each rule's open / close alternates as { seq, push, replace, back, counters, groups, action, cond, modifier } |
| graph | per-rule push/replace edges (openPush, openReplace, closePush, closeReplace) |
| lexer | the lexer matchers (order, matcher, make) |
| config | start rule, finish flag, safe-key, and the per-lexer enable flags |
| plugins | the applied plugins (name + options) |
| abnf | the live grammar rendered as ABNF text |
The grammar-structure fields round-trip through JSON.stringify.
Documentation
- Tutorial — zero to a working inspection, step by step.
- How-to guide — focused recipes (diff grammars, capture traces, round-trip ABNF).
- Reference — the exact exports, options and types.
- Concepts — how it works and why.
The Go port lives in ../go and tracks this implementation.
License
MIT.
