Merge pull request #120 from eqlabs/feat/add-hooks-docs

Feat/add hooks docs
This commit is contained in:
Valtteri Karesto
2022-03-09 12:06:06 +02:00
committed by GitHub
52 changed files with 1310 additions and 12 deletions

714
utils/wat-highlight.ts Normal file
View File

@@ -0,0 +1,714 @@
// 'WebAssembly Text Format' Monarch language
import type monaco from 'monaco-editor';
const WebAssemblyTextLanguage: { config: monaco.languages.LanguageConfiguration, tokens: monaco.languages.IMonarchLanguage } = {
config: {
brackets: [
["(", ")"],
["if", "end"],
["loop", "end"],
["block", "end"],
],
autoClosingPairs: [
{ open: "(", close: ")" },
{ open: "if", close: "end" },
{ open: "loop", close: "end" },
{ open: "block", close: "end" },
],
surroundingPairs: [
{ open: "(", close: ")" },
{ open: "if", close: "end" },
{ open: "loop", close: "end" },
{ open: "block", close: "end" },
],
},
tokens: {
keywords: [
"module",
"import",
"export",
"memory",
"data",
"table",
"elem",
"start",
"func",
"tag",
"type",
"param",
"result",
"global",
"local",
"mut",
"struct",
"array",
"field",
],
types: [
"i8",
"i16",
"i32",
"i64",
"f32",
"f64",
"v128",
"i31ref",
"eqref",
"anyref",
"dataref",
"externref",
"funcref",
"exnref",
"extern",
"null",
"any",
"eq",
],
instructions: [
"pop",
"nop",
"drop",
"data.drop",
"elem.drop",
"local.get",
"local.set",
"local.tee",
"global.get",
"global.set",
"tuple.make",
"tuple.extract",
"select",
"v128.const",
"v128.and",
"v128.or",
"v128.xor",
"v128.not",
"v128.andnot",
"v128.bitselect",
"v128.load",
"v128.load8x8_s",
"v128.load8x8_u",
"v128.load16x4_s",
"v128.load16x4_u",
"v128.load32x2_s",
"v128.load32x2_u",
"v128.load8_lane",
"v128.load16_lane",
"v128.load32_lane",
"v128.load64_lane",
"v128.load8_splat",
"v128.load16_splat",
"v128.load32_splat",
"v128.load64_splat",
"v128.load32_zero",
"v128.load64_zero",
"v128.store",
"v128.store8_lane",
"v128.store16_lane",
"v128.store32_lane",
"v128.store64_lane",
"v128.any_true",
"i8x16.shuffle",
"i8x16.swizzle",
"i8x16.bitmask",
"i8x16.splat",
"i8x16.popcnt",
"i8x16.replace_lane",
"i8x16.extract_lane_s",
"i8x16.extract_lane_u",
"i8x16.all_true",
"i8x16.abs",
"i8x16.add",
"i8x16.add_sat_s",
"i8x16.add_sat_u",
"i8x16.sub",
"i8x16.sub_sat_s",
"i8x16.sub_sat_u",
"i8x16.mul",
"i8x16.neg",
"i8x16.shl",
"i8x16.shr_s",
"i8x16.shr_u",
"i8x16.eq",
"i8x16.ne",
"i8x16.lt_s",
"i8x16.lt_u",
"i8x16.le_s",
"i8x16.le_u",
"i8x16.gt_s",
"i8x16.gt_u",
"i8x16.ge_s",
"i8x16.ge_u",
"i8x16.min_s",
"i8x16.min_u",
"i8x16.max_s",
"i8x16.max_u",
"i8x16.avgr_u",
"i8x16.narrow_i16x8_s",
"i8x16.narrow_i16x8_u",
"i16x8.bitmask",
"i16x8.splat",
"i16x8.load_8x8_s",
"i16x8.load_8x8_u",
"i16x8.replace_lane",
"i16x8.extract_lane_s",
"i16x8.extract_lane_u",
"i16x8.extend_low_i8x16_s",
"i16x8.extend_high_i8x16_s",
"i16x8.extend_low_i8x16_u",
"i16x8.extend_high_i8x16_u",
"i16x8.all_true",
"i16x8.abs",
"i16x8.add",
"i16x8.add_sat_s",
"i16x8.add_sat_u",
"i16x8.extadd_pairwise_i8x16_s",
"i16x8.extadd_pairwise_i8x16_u",
"i16x8.sub",
"i16x8.sub_sat_s",
"i16x8.sub_sat_u",
"i16x8.q15mulr_sat_s",
"i16x8.mul",
"i16x8.extmul_low_i8x16_s",
"i16x8.extmul_high_i8x16_s",
"i16x8.extmul_low_i8x16_u",
"i16x8.extmul_high_i8x16_u",
"i16x8.neg",
"i16x8.shl",
"i16x8.shr_s",
"i16x8.shr_u",
"i16x8.eq",
"i16x8.ne",
"i16x8.lt_s",
"i16x8.lt_u",
"i16x8.le_s",
"i16x8.le_u",
"i16x8.gt_s",
"i16x8.gt_u",
"i16x8.ge_s",
"i16x8.ge_u",
"i16x8.min_s",
"i16x8.min_u",
"i16x8.max_s",
"i16x8.max_u",
"i16x8.avgr_u",
"i16x8.narrow_i32x4_s",
"i16x8.narrow_i32x4_u",
"i32x4.bitmask",
"i32x4.splat",
"i32x4.load_16x4_s",
"i32x4.load_16x4_u",
"i32x4.replace_lane",
"i32x4.extract_lane",
"i32x4.extend_low_i16x8_s",
"i32x4.extend_high_i16x8_s",
"i32x4.extend_low_i16x8_u",
"i32x4.extend_high_i16x8_u",
"i32x4.all_true",
"i32x4.abs",
"i32x4.add",
"i32x4.extadd_pairwise_i16x8_s",
"i32x4.extadd_pairwise_i16x8_u",
"i32x4.sub",
"i32x4.mul",
"i32x4.extmul_low_i16x8_s",
"i32x4.extmul_high_i16x8_s",
"i32x4.extmul_low_i16x8_u",
"i32x4.extmul_high_i16x8_u",
"i32x4.neg",
"i32x4.shl",
"i32x4.shr_s",
"i32x4.shr_u",
"i32x4.eq",
"i32x4.ne",
"i32x4.lt_s",
"i32x4.lt_u",
"i32x4.le_s",
"i32x4.le_u",
"i32x4.gt_s",
"i32x4.gt_u",
"i32x4.ge_s",
"i32x4.ge_u",
"i32x4.min_s",
"i32x4.min_u",
"i32x4.max_s",
"i32x4.max_u",
"i32x4.trunc_sat_f32x4_s",
"i32x4.trunc_sat_f32x4_u",
"i32x4.trunc_sat_f64x2_s_zero",
"i32x4.trunc_sat_f64x2_u_zero",
"i32x4.dot_i16x8_s",
"i64x2.bitmask",
"i64x2.splat",
"i64x2.load32x2_s",
"i64x2.load32x2_u",
"i64x2.replace_lane",
"i64x2.extract_lane",
"i64x2.extend_low_i32x4_s",
"i64x2.extend_high_i32x4_s",
"i64x2.extend_low_i32x4_u",
"i64x2.extend_high_i32x4_u",
"i64x2.all_true",
"i64x2.abs",
"i64x2.add",
"i64x2.sub",
"i64x2.mul",
"i64x2.neg",
"i64x2.shl",
"i64x2.shr_s",
"i64x2.shr_u",
"f32x4.splat",
"f32x4.replace_lane",
"f32x4.extract_lane",
"f32x4.add",
"f32x4.sub",
"f32x4.mul",
"i64x2.extmul_low_i32x4_s",
"i64x2.extmul_high_i32x4_s",
"i64x2.extmul_low_i32x4_u",
"i64x2.extmul_high_i32x4_u",
"i64x2.eq",
"i64x2.ne",
"i64x2.lt_s",
"i64x2.le_s",
"i64x2.gt_s",
"i64x2.ge_s",
"f32x4.neg",
"f32x4.eq",
"f32x4.ne",
"f32x4.lt",
"f32x4.le",
"f32x4.gt",
"f32x4.ge",
"f32x4.abs",
"f32x4.min",
"f32x4.pmin",
"f32x4.max",
"f32x4.pmax",
"f32x4.div",
"f32x4.sqrt",
"f32x4.ceil",
"f32x4.floor",
"f32x4.trunc",
"f32x4.nearest",
"f32x4.demote_f64x2_zero",
"f32x4.convert_i32x4_s",
"f32x4.convert_i32x4_u",
"f64x2.splat",
"f64x2.replace_lane",
"f64x2.extract_lane",
"f64x2.add",
"f64x2.sub",
"f64x2.mul",
"f64x2.neg",
"f64x2.eq",
"f64x2.ne",
"f64x2.lt",
"f64x2.le",
"f64x2.gt",
"f64x2.ge",
"f64x2.abs",
"f64x2.min",
"f64x2.max",
"f64x2.pmin",
"f64x2.pmax",
"f64x2.div",
"f64x2.sqrt",
"f64x2.ceil",
"f64x2.floor",
"f64x2.trunc",
"f64x2.nearest",
"f64x2.promote_low_f32x4",
"f64x2.convert_low_i32x4_s",
"f64x2.convert_low_i32x4_u",
"i32.atomic.load",
"i32.atomic.load8_u",
"i32.atomic.load16_u",
"i32.atomic.store",
"i32.atomic.store8",
"i32.atomic.store16",
"i32.atomic.rmw.add",
"i32.atomic.rmw.sub",
"i32.atomic.rmw.and",
"i32.atomic.rmw.or",
"i32.atomic.rmw.xor",
"i32.atomic.rmw.xchg",
"i32.atomic.rmw.cmpxchg",
"i32.atomic.rmw8.add_u",
"i32.atomic.rmw8.sub_u",
"i32.atomic.rmw8.and_u",
"i32.atomic.rmw8.or_u",
"i32.atomic.rmw8.xor_u",
"i32.atomic.rmw8.xchg_u",
"i32.atomic.rmw8.cmpxchg_u",
"i32.atomic.rmw16.add_u",
"i32.atomic.rmw16.sub_u",
"i32.atomic.rmw16.and_u",
"i32.atomic.rmw16.or_u",
"i32.atomic.rmw16.xor_u",
"i32.atomic.rmw16.xchg_u",
"i32.atomic.rmw16.cmpxchg_u",
"i64.atomic.load",
"i64.atomic.load8_u",
"i64.atomic.load16_u",
"i64.atomic.load32_u",
"i64.atomic.store",
"i64.atomic.store8",
"i64.atomic.store16",
"i64.atomic.store32",
"i64.atomic.rmw.add",
"i64.atomic.rmw.sub",
"i64.atomic.rmw.and",
"i64.atomic.rmw.or",
"i64.atomic.rmw.xor",
"i64.atomic.rmw.xchg",
"i64.atomic.rmw.cmpxchg",
"i64.atomic.rmw8.add_u",
"i64.atomic.rmw8.sub_u",
"i64.atomic.rmw8.and_u",
"i64.atomic.rmw8.or_u",
"i64.atomic.rmw8.xor_u",
"i64.atomic.rmw8.xchg_u",
"i64.atomic.rmw8.cmpxchg_u",
"i64.atomic.rmw16.add_u",
"i64.atomic.rmw16.sub_u",
"i64.atomic.rmw16.and_u",
"i64.atomic.rmw16.or_u",
"i64.atomic.rmw16.xor_u",
"i64.atomic.rmw16.xchg_u",
"i64.atomic.rmw16.cmpxchg_u",
"i64.atomic.rmw32.add_u",
"i64.atomic.rmw32.sub_u",
"i64.atomic.rmw32.and_u",
"i64.atomic.rmw32.or_u",
"i64.atomic.rmw32.xor_u",
"i64.atomic.rmw32.xchg_u",
"i64.atomic.rmw32.cmpxchg_u",
"atomic.fence",
"func.bind",
"ref",
"ref.eq",
"ref.null",
"ref.is_null",
"ref.is_func",
"ref.is_data",
"ref.is_i31",
"ref.as_func",
"ref.as_non_null",
"ref.as_data",
"ref.as_i31",
"ref.func",
"ref.cast",
"ref.cast_static",
"ref.test",
"ref.test_static",
"table.get",
"table.set",
"table.size",
"table.grow",
"table.fill",
"table.init",
"table.copy",
"throw",
"rethrow",
"i32.load",
"i32.load8_s",
"i32.load8_u",
"i32.load16_s",
"i32.load16_u",
"i32.store",
"i32.store8",
"i32.store16",
"i32.const",
"i32.eqz",
"i32.eq",
"i32.ne",
"i32.lt_s",
"i32.lt_u",
"i32.le_s",
"i32.le_u",
"i32.gt_s",
"i32.gt_u",
"i32.ge_s",
"i32.ge_u",
"i32.clz",
"i32.ctz",
"i32.popcnt",
"i32.add",
"i32.sub",
"i32.mul",
"i32.div_s",
"i32.div_u",
"i32.rem_s",
"i32.rem_u",
"i32.and",
"i32.or",
"i32.xor",
"i32.shl",
"i32.shr_s",
"i32.shr_u",
"i32.rotl",
"i32.rotr",
"i32.wrap_i64",
"i32.trunc_f32_s",
"i32.trunc_f32_u",
"i32.trunc_f64_s",
"i32.trunc_f64_u",
"i32.reinterpret_f32",
"i64.load",
"i64.load8_s",
"i64.load8_u",
"i64.load16_s",
"i64.load16_u",
"i64.load32_s",
"i64.load32_u",
"i64.store",
"i64.store8",
"i64.store16",
"i64.store32",
"i64.const",
"i64.eqz",
"i64.eq",
"i64.ne",
"i64.lt_s",
"i64.lt_u",
"i64.le_s",
"i64.le_u",
"i64.gt_s",
"i64.gt_u",
"i64.ge_s",
"i64.ge_u",
"i64.clz",
"i64.ctz",
"i64.popcnt",
"i64.add",
"i64.sub",
"i64.mul",
"i64.div_s",
"i64.div_u",
"i64.rem_s",
"i64.rem_u",
"i64.and",
"i64.or",
"i64.xor",
"i64.shl",
"i64.shr_s",
"i64.shr_u",
"i64.rotl",
"i64.rotr",
"i64.extend_i32_s",
"i64.extend_i32_u",
"i64.trunc_f32_s",
"i64.trunc_f32_u",
"i64.trunc_f64_s",
"i64.trunc_f64_u",
"i64.reinterpret_f64",
"f32.load",
"f32.store",
"f32.const",
"f32.eq",
"f32.ne",
"f32.lt",
"f32.le",
"f32.gt",
"f32.ge",
"f32.abs",
"f32.neg",
"f32.ceil",
"f32.floor",
"f32.trunc",
"f32.nearest",
"f32.sqrt",
"f32.add",
"f32.sub",
"f32.mul",
"f32.div",
"f32.min",
"f32.max",
"f32.copysign",
"f32.convert_i32_s",
"f32.convert_i32_u",
"f32.convert_i64_s",
"f32.convert_i64_u",
"f32.demote_f64",
"f32.reinterpret_i32",
"f64.load",
"f64.store",
"f64.const",
"f64.eq",
"f64.ne",
"f64.lt",
"f64.le",
"f64.gt",
"f64.ge",
"f64.abs",
"f64.neg",
"f64.ceil",
"f64.floor",
"f64.trunc",
"f64.nearest",
"f64.sqrt",
"f64.add",
"f64.sub",
"f64.mul",
"f64.div",
"f64.min",
"f64.max",
"f64.copysign",
"f64.convert_i32_s",
"f64.convert_i32_u",
"f64.convert_i64_s",
"f64.convert_i64_u",
"f64.promote_f32",
"f64.reinterpret_i64",
"i32.extend8_s",
"i32.extend16_s",
"i64.extend8_s",
"i64.extend16_s",
"i64.extend32_s",
"i32.trunc_sat_f32_s",
"i32.trunc_sat_f32_u",
"i32.trunc_sat_f64_s",
"i32.trunc_sat_f64_u",
"i64.trunc_sat_f32_s",
"i64.trunc_sat_f32_u",
"i64.trunc_sat_f64_s",
"i64.trunc_sat_f64_u",
"memory.size",
"memory.grow",
"memory.copy",
"memory.fill",
"memory.init",
"memory.atomic.notify",
"memory.atomic.wait32",
"memory.atomic.wait64",
"i31.new",
"i31.get_u",
"i31.get_s",
"array.new",
"array.new_default",
"array.init",
"array.init_static",
"array.get",
"array.get_s",
"array.get_u",
"array.set",
"array.len",
"array.copy",
"struct.new",
"struct.new_default",
"struct.new_with_rtt",
"struct.new_default_with_rtt",
"struct.get",
"struct.get_s",
"struct.get_u",
"struct.set",
"rtt.canon",
"rtt.sub",
"rtt.fresh_sub",
],
controlInstructions: [
"block",
"loop",
"if",
"else",
"then",
"end",
"do",
"let",
"br",
"br_if",
"br_table",
"br_on_exn",
"br_on_null",
"br_on_non_null",
"br_on_cast",
"br_on_cast_static",
"br_on_cast_fail",
"br_on_cast_static_fail",
"br_on_func",
"br_on_non_func",
"br_on_data",
"br_on_non_data",
"br_on_i31",
"br_on_non_i31",
"call",
"call_indirect",
"call_ref",
"return",
"return_call",
"return_call_indirect",
"return_call_ref",
"try",
"catch",
"catch_all",
"delegate",
"unreachable",
],
escapes:
/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
digits: /\d+(_+\d+)*/,
octaldigits: /[0-7]+(_+[0-7]+)*/,
binarydigits: /[0-1]+(_+[0-1]+)*/,
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
tokenizer: {
root: [
// whitespace
{ include: "@whitespace" },
// strings
[/"([^"\\]|\\.)*$/, "string.invalid"], // non-teminated string
[/"/, "string", "@string"],
// numbers (not all of these are generated, but here to be sure)
[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/, "number.float"],
[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/, "number.float"],
[/0[xX](@hexdigits)[Ll]?/, "number.hex"],
[/0(@octaldigits)[Ll]?/, "number.octal"],
[/0[bB](@binarydigits)[Ll]?/, "number.binary"],
[/(@digits)[fFdD]/, "number.float"],
[/(@digits)[lL]?/, "number"],
// variable names
[/\$[^\s\)]*/, { token: "identifier" }],
// instructions and types
[
/[a-z0-9_]+(?:\.[a-z0-9_]+)*/,
{
cases: {
"@types": { token: "type.$0" },
"@keywords": { token: "keyword.$0" },
"@controlInstructions": { token: "controlInstruction.$0" },
"@instructions": { token: "instruction.$0" },
"@default": "identifier",
},
},
],
],
string: [
[/[^\\"]+/, "string"],
[/@escapes/, "string.escape"],
[/\\./, "string.escape.invalid"],
[/"/, "string", "@pop"],
],
whitespace: [
[/[ \t\r\n]+/, ""],
[/(;; )(ERROR |FAILURE )([^\n]*)/, ["comment", "error", ""]],
[/(;; )(WARNING )([^\n]*)/, ["comment", "warning", ""]],
[/(;; )(INFO )([^\n]*)/, ["comment", "info", ""]],
[/(;; )(PEDANTIC )([^\n]*)/, ["comment", "pedantic", ""]],
[/(;; +)(~+|\^)$/, ["comment", "underline"]],
[/(;; )([^\n]*)/, ["comment", ""]],
[/;;[^\n]*/, "comment"],
],
},
},
};
export default WebAssemblyTextLanguage;