我正在重新构建一个 Lua 到 ES3 的转译器(一个将 Lua 转换为跨浏览器 JavaScript 的工具)。在我开始将我的想法花在这个转译器上之前,我想问一下是否可以将 Lua 标签转换为 ECMAScript 3。例如:
goto label;
:: label ::
print "skipped";
我的第一个想法是将每个语句体分成几部分,例如,当有标签时,它的下一个语句必须作为整个下一部分存储:
some body
label (& statements)
other label (& statements)
等等。每个具有主体(或程序块)的语句都会获得这样的部分列表。标签的每个部分都应将其名称存储在某个地方(例如,在其自己的部分对象中,在属性内)。
每个部分都将是一个函数,或者将在其自身上存储一个函数,以便相对于其他部分按顺序执行。
goto 语句将查找其特定标签以运行其语句并调用 ES return 语句以停止当前语句的执行。
以这种方式分离正文语句的局限性在于访问不同部分中定义的变量和函数......那么,有没有一个想法或答案?如果将它们转换为 ECMAScript,就不可能有稳定的标签吗?