Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.02.2014, 19:33
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Finite State machine на javascript
Пишу парсер (верней переписываю).
В 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());
};


Любые идеи и предложения приветствуются

Забыл сказать, должна быть еще возможность переключать состояния извне.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2014, 12:49
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

когда я учился еще в институте, то сначала мы изучали паскаль, с++. и иногда я тоже пользовался конструкцией гото, но были люди, которые твердили, что гото это говно еще то. когда я сел на js, то его первое время не хватало, потом привык. а сейчас я тоже противник гото, имхо с ним код становится запутанным..

а вот с этим примером конечно сложно разобраться с первого раза, как его применять) можно пример использования? и как это примерно выглядит на сях?
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2014, 13:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от skrudjmakdak
имхо с ним код становится запутанным
Да пох какой становится код. Мне тут главное выжать максимум скорости. Запутанность не страшит, ибо ты и без гото не захочешь разбираться как работает парсер

А в обычном коде да, гото не нужен. Я честно говоря никогда не пользовался им в других языках)

Пример писать лень. Важно что парсер переключается из состояния в состояние.

Посмотрев на другие реализации, вижу что в js вариант с функциями самый используемый. Только функции должны быть опеределены как свойства объекта, и даже наверное самого парсера.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присвоить значение hidden и -200% когда div закрыт xrror Элементы интерфейса 0 20.09.2013 16:47
Интерпретатор Java на JS kobezzza Оффтопик 24 11.10.2012 18:32
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34