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.
npm install @gregofi1/regex-tooling
this includes TypeScript types.