regexp-to-ast
TypeScript icon, indicating that this package has built-in type declarations

0.5.0 • Public • Published

npm version CircleCI Coverage Status Greenkeeper badge

regexp-to-ast

Reads a JavaScript Regular Expression literal(text) and outputs an Abstract Syntax Tree.

Installation

  • npm
      npm install regexp-to-ast
    
  • Browser
      <script src="https://unpkg.com/regexp-to-ast/lib/parser.js"></script>
    

API

The API is defined as a TypeScript definition file.

Usage

  • Parsing to an AST:

    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:

    // 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.

Compatibility

This library is written in ES5 style and is compatiable with all major browsers and modern node.js versions.

TODO / Limitations

Package Sidebar

Install

npm i regexp-to-ast

Weekly Downloads

720,318

Version

0.5.0

License

MIT

Unpacked Size

42.5 kB

Total Files

6

Last publish

Collaborators

  • bd82