Разрешить 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))
Одно из применений этого - возможность писать действительный синтаксис WAT в функциях JavaScript.
function add (a, b) {
(i32.const, a)
(i32.const, b)
(i32.const, add)
}
Что вы можете add.toString()
для извлечения действительного исходного кода WAT, что может упростить чередование исходного кода WAT в JavaScript без необходимости использования шаблонных литералов при прототипировании.
S-выражения заставляют меня думать о Лиспе, и из-за этого я ожидал, что '
означает цитату, а ,
означает отмену цитирования.
Это интересная идея, но я не уверен, что мы захотим изменить текстовый формат для ее поддержки.
Я действительно не уверен, что мы хотим иметь JS-совместимый WAST. В основном потому, что с точки зрения парсера было бы очень сложно определить, пишете ли вы WAST или JS.
Я бы предпочел использовать литералы шаблонов JS:
function add (a, b) {
wast`
(i32.const, a)
(i32.const, b)
(i32.const, add)
`
}
Вы можете очень легко создать WAT DSL в CoffeeScript. Просто предлагаю другой вариант.
Самый полезный комментарий
Я действительно не уверен, что мы хотим иметь JS-совместимый WAST. В основном потому, что с точки зрения парсера было бы очень сложно определить, пишете ли вы WAST или JS.
Я бы предпочел использовать литералы шаблонов JS: