我正在为要在浏览器中运行的元语言编写解析器。元语言是阻塞的,但由于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
s. 任何帮助表示赞赏。