open-index/open-npm huggingface dataset:
npm package: @gregofi1/regex-tooling
Description: 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.
Latest version: 1.0.2

# 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:

```typescript
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](https://coderunner.gregofi.sh/algorithms/regexes).

## Installation

```bash
npm install @gregofi1/regex-tooling
```

this includes TypeScript types.