Design: Синтаксис WAT как допустимое подмножество JavaScript

Созданный на 16 мар. 2019  ·  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))

Одно из применений этого - возможность писать действительный синтаксис WAT в функциях JavaScript.

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

Что вы можете add.toString() для извлечения действительного исходного кода WAT, что может упростить чередование исходного кода WAT в JavaScript без необходимости использования шаблонных литералов при прототипировании.

Самый полезный комментарий

Я действительно не уверен, что мы хотим иметь JS-совместимый WAST. В основном потому, что с точки зрения парсера было бы очень сложно определить, пишете ли вы WAST или JS.

Я бы предпочел использовать литералы шаблонов JS:

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

Все 4 Комментарий

S-выражения заставляют меня думать о Лиспе, и из-за этого я ожидал, что ' означает цитату, а , означает отмену цитирования.

Это интересная идея, но я не уверен, что мы захотим изменить текстовый формат для ее поддержки.

Я действительно не уверен, что мы хотим иметь JS-совместимый WAST. В основном потому, что с точки зрения парсера было бы очень сложно определить, пишете ли вы WAST или JS.

Я бы предпочел использовать литералы шаблонов JS:

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

Вы можете очень легко создать WAT DSL в CoffeeScript. Просто предлагаю другой вариант.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

JimmyVV picture JimmyVV  ·  4Комментарии

chicoxyzzy picture chicoxyzzy  ·  5Комментарии

jfbastien picture jfbastien  ·  6Комментарии

Artur-A picture Artur-A  ·  3Комментарии

bobOnGitHub picture bobOnGitHub  ·  6Комментарии