Design: Sintaxis WAT como un subconjunto válido de JavaScript

Creado en 16 mar. 2019  ·  4Comentarios  ·  Fuente: WebAssembly/design

Permitir expresiones S separadas por comas dentro del formato de texto para permitir que la sintaxis WAT sea una sintaxis válida de subconjunto de JavaScript en tiempo de análisis como JSON es para JavaScript.

Esto le permitiría escribir el siguiente ejemplo:

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

Como el seguiente:

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

Una aplicación de esto es poder escribir una sintaxis WAT válida en funciones de JavaScript

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

Que puede add.toString() extraer código fuente WAT válido, que puede facilitar la intercalación del código fuente WAT dentro de JavaScript sin la necesidad de literales de plantilla al crear prototipos.

Comentario más útil

Realmente no estoy seguro de que queramos tener WAST compatible con JS. Principalmente porque desde la perspectiva del analizador sería muy difícil saber si está escribiendo WAST o JS.

Prefiero usar los literales de plantilla de JS:

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

Todos 4 comentarios

Las expresiones-S me hacen pensar en Lisp y por eso esperaría que ' signifique comillas y , signifiquen comillas.

Esta es una idea interesante, pero no estoy seguro de que queramos modificar el formato de texto para que sea compatible.

Realmente no estoy seguro de que queramos tener WAST compatible con JS. Principalmente porque desde la perspectiva del analizador sería muy difícil saber si está escribiendo WAST o JS.

Prefiero usar los literales de plantilla de JS:

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

Podrías crear un WAT DSL en CoffeeScript muy fácilmente. Solo para ofrecer otra opción.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

lukewagner picture lukewagner  ·  44Comentarios

sebmarkbage picture sebmarkbage  ·  41Comentarios

jfbastien picture jfbastien  ·  80Comentarios

jfbastien picture jfbastien  ·  44Comentarios

rossberg picture rossberg  ·  68Comentarios