function-automata
v1.6.0
Published
This is a package for creating and using finite automita
Downloads
3
Readme
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:
- {String} - name of the state that this transition will originate from
- {String} - name of the state that is the destination of the transition
- {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