Я пишу парсер для метаязыка, который будет запущен в браузере. Метаязык блокируется, но его необходимо преобразовать в неблокирующий в интерпретаторе из-за ограничений javascript.Программно преобразовать синхронный код в асинхронный код
Например, код метаязык может выглядеть
1. dosomething(4)
2. dosomethingelse(1)
3. dosomething(7)
4. goto 2
с функциями, реализованных в JavaScript как
function dosomething(n, callback) {
... // do something with n
setTimeout(callback, 1000);
}
function dosomethingelse(n, callback) {
... // do something else with n
setTimeout(callback, 1000);
}
Без goto
заявления, это было бы легко компилировать яваскрипт и затем eval
. Тем не менее, я не знаю, как реализовать goto
. Любая помощь приветствуется.
безусловный переход только в цикле while – akonsu
как вы интерпретируете цикл блокировки while на неблокируемом языке? – twinlakes
Я не понимаю этот вопрос. – akonsu