finite state parsing done in javascript
//finite state parser in javascript
function parseAtDefine() {
this.chars = "@define".split("");
this.final = false;
this.state = 0;
}
parseAtDefine.prototype.acceptToken = function(token) {
if(this.final) return "done";
else if(this.chars[this.state] == token) {
if((++this.state) == this.chars.length) this.final = true;
return "progress to next state";
}
else return "bad token";
};
/*
=> [Function]
var g = new parseAtDefine();
=> undefined
g.acceptToken('@');
=> 'progress to next state'
g.acceptToken('d');
=> 'progress to next state'
g.acceptToken('e');
=> 'progress to next state'
g.acceptToken('f');
=> 'progress to next state'
g.acceptToken('i');
=> 'progress to next state'
g.acceptToken('n');
=> 'progress to next state'
g.acceptToken('e');
=> 'progress to next state'
g.acceptToken('n');
=> 'done'*/