Parses a Regular Expression and outputs an AST
npm install regexp-to-ast

 
Reads a JavaScript Regular Expression literal(text) and outputs an Abstract Syntax Tree.
- npm
```
npm install regexp-to-ast
`
- Browser
`
The API is defined as a TypeScript definition file.
- Parsing to an AST:
`javascript
const RegExpParser = require("regexp-to-ast").RegExpParser
const regexpParser = new RegExpParser.parser()
// from a regexp text
const astOutput = regexpParser.pattern("/a|b|c/g")
// text from regexp instance.
const input2 = /a|b/.toString()
// The same parser instance can be reused
const anotherAstOutput = regexpParser.pattern(input2)
`
- Visiting the AST:
`javascript
// parse to an AST as before.
const { RegExpParser, BaseRegExpVisitor } = require("regexp-to-ast")
const regexpParser = new RegExpParser.parser()
const regExpAst = regexpParser.pattern("/a|b|c/g")
// Override the visitor methods to add your logic.
class MyRegExpVisitor extends BaseRegExpVisitor {
visitPattern(node) {}
visitFlags(node) {}
visitDisjunction(node) {}
visitAlternative(node) {}
// Assertion
visitStartAnchor(node) {}
visitEndAnchor(node) {}
visitWordBoundary(node) {}
visitNonWordBoundary(node) {}
visitLookahead(node) {}
visitNegativeLookahead(node) {}
// atoms
visitCharacter(node) {}
visitSet(node) {}
visitGroup(node) {}
visitGroupBackReference(node) {}
visitQuantifier(node) {}
}
const myVisitor = new MyRegExpVisitor()
myVisitor.visit(regExpAst)
// extract visit results from the visitor state.
``
This library is written in ES5 style and is compatiable with all major browsers and modern node.js versions.
- Use polyFill for string.prototype.at
to support unicode characters outside BMP.
- Descriptive error messages.
- Position information in error messages.
- Support unicode flag escapes.
- Ensure edge cases described in "The madness of parsing real world JavaScript regexps" are supported.
- Support deprecated octal escapes