stream-token-parser
Version:
Token parser designed based on stream property. Accept chunk string and parse it into tokens simultaneously. [readme-lang:zh]基于流特性设计的token解析器,接受一个chunk的字符串,同时解析成tokens。
40 lines (33 loc) • 777 B
JavaScript
;
let {
RegularExp
} = require('cl-fsm');
let {
WAIT,
QUIT,
MATCH
} = require('./const');
/**
* build a fda to do the matching work
*
* transit: (currentState, letter) -> nextState
*/
module.exports = (regularExpStr) => {
let regExp = new RegularExp(regularExpStr);
let state = -1;
return (prefix, letter) => {
if (prefix.length === 1) {
state = regExp.getStartState();
}
let nextState = regExp.transit(state, letter);
if (regExp.isEndState(nextState)) {
state = nextState;
return MATCH;
} else if (regExp.isErrorState(nextState)) {
return QUIT;
} else {
state = nextState;
return WAIT;
}
};
};