715 lines
16 KiB
TypeScript
715 lines
16 KiB
TypeScript
// '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;
|