我正在为要在浏览器中运行的元语言编写解析器。元语言是阻塞的,但由于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
报表,这将是很容易编译成JavaScript,然后eval
。但是,我不知道如何实施goto
。任何帮助表示赞赏。
无条件转到只是一个while循环 – akonsu
你如何解释一个非阻塞语言中的阻塞while循环? – twinlakes
我不明白这个问题。 – akonsu