function-automata

1.6.0 • Public • Published

function-automata

This is a NodeJS Finite Automata package. This package supports CF-DFAs and CS-DFAs. However, all accept states must be context free (which does not reduce the size of parsable languages). This package is a 0-look ahead state machine.

const Automata = require('function-automata');

constructor

var automata = new Automata(states, transitions, accept_states, start_state);
states

This is an array of strings. These are the names of the nodes in the state machine.

transitions

This is an array of arrays of the following format:

  1. {String} - name of the state that this transition will originate from
  2. {String} - name of the state that is the destination of the transition
  3. {function} - the function that determines if this transition is followed. The parameters are as follows:
  • token {String} - the next token to be analysed
  • state {Object} - the state machine data object. Here can be stored information that help with matching things like brackets
accept_states

This is an array of state names that count as accept states or if the machine ends on one of these then the matching is correct

start_state

This is the name of the state which will be first used to make transitions. Starting in the start state is assumed and does not consume a token. Likewise, a token must be consumed to traverse to the next state.

validate

automata.validate(tokens, callback, state);
tokens

This is an array of tokens to be validated. All empty strings or elements that are == null will be removed.

callback

This function is used to return the results back to the user. The function should have the following signature.

state {optional}

If you wish to retrieve the state machine's final state object then pass in a named object variable. This can be useful if you are using the state machine for parsing.

function callback(isValid, error)

isValid {Boolean} - represents whether the tokens were accepted

error {String} - If isValid is false then this will tell why the state machine did not validate the tokens

Readme

Keywords

Package Sidebar

Install

npm i function-automata

Weekly Downloads

1

Version

1.6.0

License

MIT

Last publish

Collaborators

  • nokel81