Skip to content
A regular expression converter
JavaScript Makefile
Branch: master
Clone or download
hokein Merge pull request #16 from peey/patch-1
Fix typo in readme.md
Latest commit c37550e May 8, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
screenshot Add screenshot. Aug 31, 2015
src Fix code style. Jun 1, 2018
test Add testcase for the fix #10. Jun 1, 2018
.gitignore Add .gitignore. Sep 26, 2014
index.js Update npm package.json. Sep 26, 2014
makefile Add building script. Sep 26, 2014
package.json Bump v0.2.1 Aug 31, 2015
readme.md Fix typo in readme.md May 7, 2019

readme.md

Automata.js

Automata.js is a regular expression converter written in JS for both Node.js and browser.

It aims to convert regular expression to finite state machine(FSM, like NFA). Besides, dot script transition is provided so that you can make diagrams with Graphiz.

Try it online!

screenshot

Development

// Install dependency modules.
npm install

// Run test.
make test

// Generate browser js.
make distribution

API Description

Currently, Automata.js supports minimal regular expressions:

  • +: One or more
  • *: Zero or more
  • ?: Zero or one
  • (): Capture everything enclosed
  • |: Or
  • \n: Newline
  • \r: Carriage return
  • \t: Tab
  • \w: [a-zA-Z0-9_]
  • \d: [0-9]

FSM

FSM is a object represent a finite state machine(NFA, DFA).

The json definition is below:

{
  initialState: 'id',
  acceptState: ['id', ... ] ,
  numOfStates: Integer,
  type: 'DFA' or 'NFA',
  transitions: {
    'id': { 'to_id': label, },
    ...,
  }
}

FSM.toDotScript()

Convert the fsm to Graphiz dot script.

FSM.match(text)

  • text: String

Determine whether text matches to the FSM. This methods only supports DFA.

RegParser

RegParser is a regular expression parser.

RegParser.reset(string)

Set regular expression string in parser.

RegParser.parseToNFA()

Parses the given regular expression.

Returns a FSM object, the FSM represents a Nondeterministic Finite Automata(NFA).

RegParser.parseToDFA()

Parses the given regular expression.

Returns a FSM object, the FSM represents a Deterministic Finite Automata(DFA).

Usage

Usage in Node.js

Install via npm install automata.js.

var regParser = require('automata.js');

var parser = new regParser.RegParser('a*b');
var nfa = parser.parseToNFA();

console.log(nfa.toDotScript());

Usage in Browser

Automata.js uses node-browserify to generate a browser distribution.

You can use Viz.js to render graphiz dot script in your web page.

var regParser = require('automata.js');

var parser = new regParser.RegParser('a*b');
var nfa = regParser.parseToNFA();

// render dot script to svg.
var result = Viz(nfa.toDotScript(), 'svg', 'dot');
You can’t perform that action at this time.