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.
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.
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: