/** * The MIT License (MIT) * Copyright (c) 2017-present Dmitry Soshnikov */ 'use strict'; var NFA = require('./nfa/nfa'); var DFA = require('./dfa/dfa'); var nfaFromRegExp = require('./nfa/nfa-from-regexp'); var builders = require('./nfa/builders'); module.exports = { /** * Export NFA and DFA classes. */ NFA: NFA, DFA: DFA, /** * Expose builders. */ builders: builders, /** * Builds an NFA for the passed regexp. * * @param string | AST | RegExp: * * a regular expression in different representations: a string, * a RegExp object, or an AST. */ toNFA: function toNFA(regexp) { return nfaFromRegExp.build(regexp); }, /** * Builds DFA for the passed regexp. * * @param string | AST | RegExp: * * a regular expression in different representations: a string, * a RegExp object, or an AST. */ toDFA: function toDFA(regexp) { return new DFA(this.toNFA(regexp)); }, /** * Returns true if regexp accepts the string. */ test: function test(regexp, string) { return this.toDFA(regexp).matches(string); } };