Merge pull request #120 from eqlabs/feat/add-hooks-docs
Feat/add hooks docs
This commit is contained in:
		
							
								
								
									
										714
									
								
								utils/wat-highlight.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										714
									
								
								utils/wat-highlight.ts
									
									
									
									
									
										Normal 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;
 | 
			
		||||
		Reference in New Issue
	
	Block a user