Пишу парсер (верней переписываю).
В C++ конечный автомат реализуется эффективно с использованием GOTO.
В JS умники решили что GOTO в языке не нужен. Вопрос: как должен выглядеть эффективный конечный автомат. Чтоб в нем потери на сам каркас были минимальные.
Сейчас парсер работает так:
function Parser() {}
Parser.prototype.parse = function() {
var state = state1;
function state1() {
// переключаем состояние
state = state2;
return true;
}
function state2() {
// останавливаем цикл
return false;
}
while(state());
};
Любые идеи и предложения приветствуются
Забыл сказать, должна быть еще возможность переключать состояния извне.