Skip to content

gregofi/js-regex

Repository files navigation

Regex tooling

A Javascript library for creating and working regular expressions. It offers API to transform regexes all the way into deterministic finite automata (DFA) and back. Is not supposed to be used to match strings, but rather to display how regexes work.

The library is written in TypeScript and can be used in both Node.js and browser environments. Following API is available:

new Parser(regex: string).parse() // -> Returns an Abstract Syntax Tree (AST) of the regex
glushkov(ast: AST): { ..., NFA } // -> Returns a Nondeterministic finite automaton (NFA) from the AST using the Glushkov neighborhood algorithm
determinize(nfa: NFA): DFA // -> Returns a Deterministic finite automaton (DFA) from the NFA using the subset construction algorithm

faToDot(fa: NFA | DFA): string // -> Returns a string in DOT format representing the NFA or DFA

simulate(dfa: DFA, input: string): boolean // -> Simulates the DFA on the input string and returns true if the input is accepted by the DFA, false otherwise

The regexes support only very small subset of the full regex syntax, namely:

  • a, b, c - literal characters
  • abc - implicit concatenation
  • a|b - alternation
  • a*, a+, a? - Kleene star, plus and optional quantifiers
  • (...) - grouping

The literal characters can be only from the a-z, A-Z, 0-9 range.

See the library in action at Coderunner website.

Installation

npm install @gregofi1/regex-tooling

this includes TypeScript types.

About

Shows the steps necessary to compile and run regular expressions

Resources

Stars

Watchers

Forks

Packages

No packages published