Design: صيغة WAT كمجموعة فرعية صالحة من JavaScript

تم إنشاؤها على ١٦ مارس ٢٠١٩  ·  4تعليقات  ·  مصدر: WebAssembly/design

للسماح بتعبيرات S مفصولة بفواصل داخل تنسيق النص للسماح لبناء جملة WAT أن تكون صيغة مجموعة فرعية صالحة لوقت التحليل مثل 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 دون الحاجة إلى نماذج حرفية عند إنشاء النماذج الأولية.

التعليق الأكثر فائدة

لست متأكدًا حقًا من أننا نريد الحصول على WAST متوافق مع JS. غالبًا لأنه من المحلل اللغوي سيكون من الصعب حقًا معرفة ما إذا كنت تكتب WAST أو JS.

أفضل استخدام القيم الحرفية لنموذج JS:

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

ال 4 كومينتر

تجعلني تعبيرات S أفكر في Lisp وبسبب ذلك أتوقع أن يعني ' اقتباس و , يعني عدم الاقتباس.

هذه فكرة مثيرة للاهتمام ، لكنني لست متأكدًا من أننا سنرغب في تعديل تنسيق النص لدعمها.

لست متأكدًا حقًا من أننا نريد الحصول على WAST متوافق مع JS. غالبًا لأنه من المحلل اللغوي سيكون من الصعب حقًا معرفة ما إذا كنت تكتب WAST أو JS.

أفضل استخدام القيم الحرفية لنموذج JS:

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

يمكنك إنشاء WAT DSL في CoffeeScript بسهولة بالغة. فقط لتقديم خيار آخر.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات