# Keywords "module" "func" "type" "table" "export" "import" "memory" "data" "elem" "passive" "start" "param" "result" "local" "global" "assert_return" "assert_return_arithmetic_nan" "assert_return_canonical_nan" "assert_return_func" "assert_trap" "assert_throws" "assert_invalid" "assert_unlinkable" "assert_malformed" "assert_exhaustion" "invoke" "get" "align" "offset" "then" "register" "mut" "i8" "i16" "i32" "i64" "f32" "f64" "anyref" "funcref" "shared" "quote" "binary" "v128" "exception_type" "custom_section" "after" "before" "data_count" "code" "calling_conv" "intrinsic" "intrinsic_with_context_switch" "c" "c_api_callback" "ref.host" # Whitespace space=" " tab="\x09" cr="\x0d" lf="\x0a" crlf="\x0d\x0a" # Comments ";;" "(;" ";)" "(; comment ;)" # Symbols "(" ")" "=" # Operators "block" "loop" "if" "else" "end" "try" "catch" "catch_all" "unreachable" "br" "br_if" "br_table" "return" "call" "call_indirect" "drop" "select" "local.get" "local.set" "local.tee" "global.get" "global.set" "table.get" "table.set" "nop" "memory.size" "memory.grow" "i32.load" "i64.load" "f32.load" "f64.load" "i32.load8_s" "i32.load8_u" "i32.load16_s" "i32.load16_u" "i64.load8_s" "i64.load8_u" "i64.load16_s" "i64.load16_u" "i64.load32_s" "i64.load32_u" "i32.store" "i64.store" "f32.store" "f64.store" "i32.store8" "i32.store16" "i64.store8" "i64.store16" "i64.store32" "i32.const" "i64.const" "f32.const" "f64.const" "i32.eqz" "i32.eq" "i32.ne" "i32.lt_s" "i32.lt_u" "i32.gt_s" "i32.gt_u" "i32.le_s" "i32.le_u" "i32.ge_s" "i32.ge_u" "i64.eqz" "i64.eq" "i64.ne" "i64.lt_s" "i64.lt_u" "i64.gt_s" "i64.gt_u" "i64.le_s" "i64.le_u" "i64.ge_s" "i64.ge_u" "f32.eq" "f32.ne" "f32.lt" "f32.gt" "f32.le" "f32.ge" "f64.eq" "f64.ne" "f64.lt" "f64.gt" "f64.le" "f64.ge" "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" "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" "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" "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" "i32.wrap_i64" "i32.trunc_f32_s" "i32.trunc_f32_u" "i32.trunc_f64_s" "i32.trunc_f64_u" "i64.extend_i32_s" "i64.extend_i32_u" "i64.trunc_f32_s" "i64.trunc_f32_u" "i64.trunc_f64_s" "i64.trunc_f64_u" "f32.convert_i32_s" "f32.convert_i32_u" "f32.convert_i64_s" "f32.convert_i64_u" "f32.demote_f64" "f64.convert_i32_s" "f64.convert_i32_u" "f64.convert_i64_s" "f64.convert_i64_u" "f64.promote_f32" "i32.reinterpret_f32" "i64.reinterpret_f64" "f32.reinterpret_i32" "f64.reinterpret_i64" "i32.extend8_s" "i32.extend16_s" "i64.extend8_s" "i64.extend16_s" "i64.extend32_s" "ref.null" "ref.is_null" "v128.const" "v128.load" "v128.store" "i8x16.splat" "i16x8.splat" "i32x4.splat" "i64x2.splat" "f32x4.splat" "f64x2.splat" "i8x16.extract_lane_s" "i8x16.extract_lane_u" "i16x8.extract_lane_s" "i16x8.extract_lane_u" "i32x4.extract_lane" "i64x2.extract_lane" "f32x4.extract_lane" "f64x2.extract_lane" "i8x16.replace_lane" "i16x8.replace_lane" "i32x4.replace_lane" "i64x2.replace_lane" "f32x4.replace_lane" "f64x2.replace_lane" "v8x16.swizzle" "v8x16.shuffle" "v8x16.load_splat" "v16x8.load_splat" "v32x4.load_splat" "v64x2.load_splat" "i8x16.narrow_i16x8_s" "i8x16.narrow_i16x8_u" "i16x8.narrow_i32x4_s" "i16x8.narrow_i32x4_u" "i16x8.widen_low_i8x16_s" "i16x8.widen_high_i8x16_s" "i16x8.widen_low_i8x16_u" "i16x8.widen_high_i8x16_u" "i32x4.widen_low_i16x8_s" "i32x4.widen_high_i16x8_s" "i32x4.widen_low_i16x8_u" "i32x4.widen_high_i16x8_u" "i8x16.add" "i16x8.add" "i32x4.add" "i64x2.add" "i8x16.sub" "i16x8.sub" "i32x4.sub" "i64x2.sub" "i8x16.mul" "i16x8.mul" "i32x4.mul" "i8x16.neg" "i16x8.neg" "i32x4.neg" "i64x2.neg" "i8x16.add_saturate_s" "i8x16.add_saturate_u" "i16x8.add_saturate_s" "i16x8.add_saturate_u" "i8x16.sub_saturate_s" "i8x16.sub_saturate_u" "i16x8.sub_saturate_s" "i16x8.sub_saturate_u" "i8x16.shl" "i16x8.shl" "i32x4.shl" "i64x2.shl" "i8x16.shr_s" "i8x16.shr_u" "i16x8.shr_s" "i16x8.shr_u" "i32x4.shr_s" "i32x4.shr_u" "i64x2.shr_s" "i64x2.shr_u" "v128.and" "v128.or" "v128.xor" "v128.not" "v128.bitselect" "i8x16.any_true" "i16x8.any_true" "i32x4.any_true" "i64x2.any_true" "i8x16.all_true" "i16x8.all_true" "i32x4.all_true" "i64x2.all_true" "i8x16.eq" "i16x8.eq" "i32x4.eq" "f32x4.eq" "f64x2.eq" "i8x16.ne" "i16x8.ne" "i32x4.ne" "f32x4.ne" "f64x2.ne" "i8x16.lt_s" "i8x16.lt_u" "i16x8.lt_s" "i16x8.lt_u" "i32x4.lt_s" "i32x4.lt_u" "f32x4.lt" "f64x2.lt" "i8x16.le_s" "i8x16.le_u" "i16x8.le_s" "i16x8.le_u" "i32x4.le_s" "i32x4.le_u" "f32x4.le" "f64x2.le" "i8x16.gt_s" "i8x16.gt_u" "i16x8.gt_s" "i16x8.gt_u" "i32x4.gt_s" "i32x4.gt_u" "f32x4.gt" "f64x2.gt" "i8x16.ge_s" "i8x16.ge_u" "i16x8.ge_s" "i16x8.ge_u" "i32x4.ge_s" "i32x4.ge_u" "f32x4.ge" "f64x2.ge" "f32x4.neg" "f64x2.neg" "f32x4.abs" "f64x2.abs" "f32x4.min" "f64x2.min" "f32x4.max" "f64x2.max" "f32x4.add" "f64x2.add" "f32x4.sub" "f64x2.sub" "f32x4.div" "f64x2.div" "f32x4.mul" "f64x2.mul" "f32x4.sqrt" "f64x2.sqrt" "f32x4.convert_i32x4_s" "f32x4.convert_i32x4_u" "f64x2.convert_i64x2_s" "f64x2.convert_i64x2_u" "i32x4.trunc_sat_f32x4_s" "i32x4.trunc_sat_f32x4_u" "i64x2.trunc_sat_f64x2_s" "i64x2.trunc_sat_f64x2_u" "i16x8.load8x8_s" "i16x8.load8x8_u" "i32x4.load16x4_s" "i32x4.load16x4_u" "i64x2.load32x2_s" "i64x2.load32x2_u" "v128.andnot" "v8x16.load_interleaved_2" "v8x16.load_interleaved_3" "v8x16.load_interleaved_4" "v16x8.load_interleaved_2" "v16x8.load_interleaved_3" "v16x8.load_interleaved_4" "v32x4.load_interleaved_2" "v32x4.load_interleaved_3" "v32x4.load_interleaved_4" "v64x2.load_interleaved_2" "v64x2.load_interleaved_3" "v64x2.load_interleaved_4" "v8x16.store_interleaved_2" "v8x16.store_interleaved_3" "v8x16.store_interleaved_4" "v16x8.store_interleaved_2" "v16x8.store_interleaved_3" "v16x8.store_interleaved_4" "v32x4.store_interleaved_2" "v32x4.store_interleaved_3" "v32x4.store_interleaved_4" "v64x2.store_interleaved_2" "v64x2.store_interleaved_3" "v64x2.store_interleaved_4" "i8x16.ltz_mask" "atomic.notify" "i32.atomic.wait" "i64.atomic.wait" "atomic.fence" "i32.atomic.load" "i64.atomic.load" "i32.atomic.load8_u" "i32.atomic.load16_u" "i64.atomic.load8_u" "i64.atomic.load16_u" "i64.atomic.load32_u" "i32.atomic.store" "i64.atomic.store" "i32.atomic.store8" "i32.atomic.store16" "i64.atomic.store8" "i64.atomic.store16" "i64.atomic.store32" "i32.atomic.rmw.add" "i64.atomic.rmw.add" "i32.atomic.rmw8.add_u" "i32.atomic.rmw16.add_u" "i64.atomic.rmw8.add_u" "i64.atomic.rmw16.add_u" "i64.atomic.rmw32.add_u" "i32.atomic.rmw.sub" "i64.atomic.rmw.sub" "i32.atomic.rmw8.sub_u" "i32.atomic.rmw16.sub_u" "i64.atomic.rmw8.sub_u" "i64.atomic.rmw16.sub_u" "i64.atomic.rmw32.sub_u" "i32.atomic.rmw.and" "i64.atomic.rmw.and" "i32.atomic.rmw8.and_u" "i32.atomic.rmw16.and_u" "i64.atomic.rmw8.and_u" "i64.atomic.rmw16.and_u" "i64.atomic.rmw32.and_u" "i32.atomic.rmw.or" "i64.atomic.rmw.or" "i32.atomic.rmw8.or_u" "i32.atomic.rmw16.or_u" "i64.atomic.rmw8.or_u" "i64.atomic.rmw16.or_u" "i64.atomic.rmw32.or_u" "i32.atomic.rmw.xor" "i64.atomic.rmw.xor" "i32.atomic.rmw8.xor_u" "i32.atomic.rmw16.xor_u" "i64.atomic.rmw8.xor_u" "i64.atomic.rmw16.xor_u" "i64.atomic.rmw32.xor_u" "i32.atomic.rmw.xchg" "i64.atomic.rmw.xchg" "i32.atomic.rmw8.xchg_u" "i32.atomic.rmw16.xchg_u" "i64.atomic.rmw8.xchg_u" "i64.atomic.rmw16.xchg_u" "i64.atomic.rmw32.xchg_u" "i32.atomic.rmw.cmpxchg" "i64.atomic.rmw.cmpxchg" "i32.atomic.rmw8.cmpxchg_u" "i32.atomic.rmw16.cmpxchg_u" "i64.atomic.rmw8.cmpxchg_u" "i64.atomic.rmw16.cmpxchg_u" "i64.atomic.rmw32.cmpxchg_u" "throw" "rethrow" "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.init" "data.drop" "memory.copy" "memory.fill" "table.init" "elem.drop" "table.copy" # Legacy aliases "anyfunc" "get_local" "set_local" "tee_local" "get_global" "set_global" "i32.wrap/i64" "i32.trunc_s/f32" "i32.trunc_u/f32" "i32.trunc_s/f64" "i32.trunc_u/f64" "i64.extend_s/i32" "i64.extend_u/i32" "i64.trunc_s/f32" "i64.trunc_u/f32" "i64.trunc_s/f64" "i64.trunc_u/f64" "f32.convert_s/i32" "f32.convert_u/i32" "f32.convert_s/i64" "f32.convert_u/i64" "f32.demote/f64" "f64.convert_s/i32" "f64.convert_u/i32" "f64.convert_s/i64" "f64.convert_u/i64" "f64.promote/f32" "i32.reinterpret/f32" "i64.reinterpret/f64" "f32.reinterpret/i32" "f64.reinterpret/i64" "f32x4.convert_s/i32x4" "f32x4.convert_u/i32x4" "f64x2.convert_s/i64x2" "f64x2.convert_u/i64x2" "i32x4.trunc_s:sat/f32x4" "i32x4.trunc_u:sat/f32x4" "i64x2.trunc_s:sat/f64x2" "i64x2.trunc_u:sat/f64x2" "i32.trunc_s:sat/f32" "i32.trunc_u:sat/f32" "i32.trunc_s:sat/f64" "i32.trunc_u:sat/f64" "i64.trunc_s:sat/f32" "i64.trunc_u:sat/f32" "i64.trunc_s:sat/f64" "i64.trunc_u:sat/f64" # Literals "0" "1" "0.0" "-1" "0xffffffff" "0x100000000" "42.0" "-0x1000000000" # Strings "\"\"" "\"\\00\"" "\"\\00\\01\"" "\"abcd\"" # Names "$a" "$b" "$c" "$_1" "$_2" "$_3" # Operators + immediates "(i32.const 0)" "(i64.const 0)" "(f32.const 0.0)" "(f64.const 0.0)" "(v128.const i64x2 0 0)" "(drop)" "(local.get 0)" "(local.get 1)" "(local.tee 0)" "(local.tee 1)" "(unreachable)" "(return)" "(br 0)" "(block)" "(loop)" "(i32.const 0) (if (then) (else))" "(i32.const 1) (if (then) (else))" "(if (i32.const 0) (then) (else))" "(if (i32.const 1) (then) (else))" "(if (i32.const 0) (then))" "(if (i32.const 1) (then))" "(if i32 (i32.const 0) (i32.const 1) (i32.const 2))" "(if i32 (i32.const 1) (i32.const 2) (i32.const 3))" "(if i32 (i32.const 0) (i32.const 1))" "(if i32 (i32.const 1) (i32.const 2))" "(i32.const 0) if else end" "(i32.const 1) if else end" "(i32.const 0) if end" "(i32.const 1) if end" "try catch_all end"