Design: WAT 语法作为有效的 JavaScript 子集

创建于 2019-03-16  ·  4评论  ·  资料来源: WebAssembly/design

允许在文本格式中使用逗号分隔的 S 表达式以允许 WAT 语法成为有效的解析时 JavaScript 子集语法,就像 JSON 之于 JavaScript。

这将允许您编写以下示例:

(func $swap (param i32 i32) (result i32 i32) (get_local 1) (get_local 0))

如下:

(func, $swap, (param, i32, i32), (result, i32, i32), (get_local, 1) (get_local, 0))

一种应用是能够在 JavaScript 函数中编写有效的 WAT 语法

function add (a, b) {
   (i32.const, a)
   (i32.const, b)
   (i32.const, add)
}

您可以add.toString()提取有效的 WAT 源代码,这样可以更轻松地在 JavaScript 中插入 WAT 源代码,而无需在原型设计时使用模板文字。

最有用的评论

我真的不确定我们是否想要与 JS 兼容的 WAST。 主要是因为从解析器的角度来看,很难判断您是在编写 WAST 还是 JS。

我宁愿使用 JS 的模板文字:

function add (a, b) {
   wast`
     (i32.const, a)
     (i32.const, b)
     (i32.const, add)
   `
}

所有4条评论

S 表达式让我想到 Lisp,因此我希望'表示引用,而,表示取消引用。

这是一个有趣的想法,但我不确定我们是否要修改文本格式以支持它。

我真的不确定我们是否想要与 JS 兼容的 WAST。 主要是因为从解析器的角度来看,很难判断您是在编写 WAST 还是 JS。

我宁愿使用 JS 的模板文字:

function add (a, b) {
   wast`
     (i32.const, a)
     (i32.const, b)
     (i32.const, add)
   `
}

你可以很容易地在 CoffeeScript 中敲出 WAT DSL。 只是为了提供另一种选择。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mfateev picture mfateev  ·  5评论

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6评论

JimmyVV picture JimmyVV  ·  4评论

Thaina picture Thaina  ·  8评论

ghost picture ghost  ·  7评论