Design: WAT-Syntax als gültige JavaScript-Untermenge

Erstellt am 16. März 2019  ·  4Kommentare  ·  Quelle: WebAssembly/design

Komma-separierte S-Ausdrücke innerhalb des Textformats zuzulassen, damit die WAT-Syntax eine gültige JavaScript-Subset-Syntax zur Parsezeit ist, wie JSON für JavaScript.

Damit könnten Sie das folgende Beispiel schreiben:

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

Wie die folgenden:

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

Eine Anwendung davon ist das Schreiben einer gültigen WAT-Syntax in JavaScript-Funktionen

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

Dass Sie add.toString() , um gültigen WAT-Quellcode zu extrahieren, der es einfacher machen kann, WAT-Quellcode in JavaScript zu verschachteln, ohne dass beim Prototyping Vorlagenliterale erforderlich sind.

Hilfreichster Kommentar

Ich bin mir wirklich nicht sicher, ob wir JS-kompatibles WAST haben wollen. Vor allem, weil es aus Parser-Perspektive wirklich schwer zu sagen wäre, ob Sie WAST oder JS schreiben.

Ich würde lieber die Vorlagenliterale von JS verwenden:

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

Alle 4 Kommentare

S-Ausdrücke lassen mich an Lisp denken und deshalb würde ich erwarten, dass ' Anführungszeichen und , Anführungszeichen bedeuten.

Dies ist eine interessante Idee, aber ich bin mir nicht sicher, ob wir das Textformat ändern wollen, um es zu unterstützen.

Ich bin mir wirklich nicht sicher, ob wir JS-kompatibles WAST haben wollen. Vor allem, weil es aus Parser-Perspektive wirklich schwer zu sagen wäre, ob Sie WAST oder JS schreiben.

Ich würde lieber die Vorlagenliterale von JS verwenden:

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

Sie könnten in CoffeeScript ganz einfach eine WAT-DSL aufbauen. Nur um eine andere Option anzubieten.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

badumt55 picture badumt55  ·  8Kommentare

Artur-A picture Artur-A  ·  3Kommentare

JimmyVV picture JimmyVV  ·  4Kommentare

jfbastien picture jfbastien  ·  6Kommentare

cretz picture cretz  ·  5Kommentare