UNPKG

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
'use strict'; 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; } }; };