Design: Sintaks WAT sebagai subset JavaScript yang valid

Dibuat pada 16 Mar 2019  ·  4Komentar  ·  Sumber: WebAssembly/design

Untuk mengizinkan ekspresi S yang dipisahkan koma dalam format teks untuk memungkinkan sintaks WAT menjadi sintaks subset JavaScript parse-time yang valid seperti JSON untuk JavaScript.

Ini akan memungkinkan Anda untuk menulis contoh berikut:

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

Sebagai berikut:

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

Salah satu aplikasinya adalah mampu menulis sintaks WAT yang valid dalam fungsi JavaScript

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

Bahwa Anda dapat add.toString() untuk mengekstrak kode sumber WAT yang valid, yang dapat mempermudah penyisipan kode sumber WAT dalam JavaScript tanpa memerlukan literal template saat membuat prototipe.

Komentar yang paling membantu

Saya benar-benar tidak yakin kami ingin memiliki WAST yang kompatibel dengan JS. Sebagian besar karena dari perspektif parser akan sangat sulit untuk mengetahui apakah Anda menulis WAST atau JS.

Saya lebih suka menggunakan literal templat JS:

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

Semua 4 komentar

S-ekspresi membuat saya berpikir tentang Lisp dan karena itu saya berharap ' berarti kutipan dan , berarti tidak mengutip.

Ini adalah ide yang menarik, tetapi saya tidak yakin kita ingin mengubah format teks untuk mendukungnya.

Saya benar-benar tidak yakin kami ingin memiliki WAST yang kompatibel dengan JS. Sebagian besar karena dari perspektif parser akan sangat sulit untuk mengetahui apakah Anda menulis WAST atau JS.

Saya lebih suka menggunakan literal templat JS:

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

Anda dapat membuat WAT DSL di CoffeeScript dengan sangat mudah. Hanya untuk menawarkan pilihan lain.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

spidoche picture spidoche  ·  4Komentar

Thaina picture Thaina  ·  8Komentar

frehberg picture frehberg  ·  6Komentar

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6Komentar

nikhedonia picture nikhedonia  ·  7Komentar