@unabandoned/regexper-parser
v1.0.2
Published
Parse a regular expression to an AST
Readme
@unabandoned/regexper-parser
Parses a regular expression into an AST, for
@unabandoned/regexper-render to draw.
const parser = require('@unabandoned/regexper-parser')
const tree = parser.parse('/ab+|c/gi', { types })types is required: the parser is generated by
canopy, which copies the matching entry of
types onto every node it builds, and the grammar labels every rule. Omit it and
parsing throws a TypeError from inside the generated parser. getExtensions()
in the render package is the set this grammar needs.
The generated parser is committed
regexp.js is generated from regexp.peg, and it is checked in rather than built.
canopy has had no release since May 2023 and depends on handlebars: ">=4.0.0"
and nopt: "*" — unbounded ranges on an unmaintained package, which is the shape
of dependency this organisation exists to stop carrying. Since the grammar is 62
lines that have not changed since 2022 and the compiler's output is a static
artifact, the artifact is what we keep. Nothing installs canopy to build or test
this package.
To change the grammar, edit regexp.peg, regenerate, and commit both:
npx --yes [email protected] ./regexp.peg --lang jsThen check the test suite: it reads the node labels out of regexp.peg and
asserts they are the set the renderer implements, so a new label fails there
rather than inside a consumer.
regexp.min.js — the unpkg and jsdelivr entry point — is still built, by
terser, and the suite parses the same expression through both files to confirm
they agree.
