first commit
This commit is contained in:
73
public/static/js/codemirror/mode/wast/index.html
vendored
Normal file
73
public/static/js/codemirror/mode/wast/index.html
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<title>CodeMirror: WebAssembly mode</title>
|
||||
<meta charset="utf-8" />
|
||||
<link rel=stylesheet href="../../doc/docs.css">
|
||||
|
||||
<link rel="stylesheet" href="../../lib/codemirror.css">
|
||||
<script src="../../lib/codemirror.js"></script>
|
||||
<script src="../../addon/mode/simple.js"></script>
|
||||
<script src="wast.js"></script>
|
||||
<style>
|
||||
.CodeMirror {
|
||||
border-top: 1px solid black;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
</style>
|
||||
<div id=nav>
|
||||
<a href="https://codemirror.net">
|
||||
<h1>CodeMirror</h1><img id=logo src="../../doc/logo.png" alt="">
|
||||
</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="../../index.html">Home</a>
|
||||
<li><a href="../../doc/manual.html">Manual</a>
|
||||
<li><a href="https://github.com/codemirror/codemirror">Code</a>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="../index.html">Language modes</a>
|
||||
<li><a class=active href="#">WebAssembly</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<article>
|
||||
<h2>WebAssembly mode</h2>
|
||||
|
||||
|
||||
<div><textarea id="code" name="code">
|
||||
/* Example WebAssembly */
|
||||
(module $foo
|
||||
(export "fac" (func $fac))
|
||||
(export "plus" (func $plus))
|
||||
|
||||
(func $fac (type $t0) (param $p0 i64) (result i64)
|
||||
(if $I0 (result i64)
|
||||
(i64.lt_s
|
||||
(local.get $p0)
|
||||
(i64.const 1))
|
||||
(then
|
||||
(i64.const 1))
|
||||
(else
|
||||
(i64.mul
|
||||
(local.get $p0)
|
||||
(call $fac
|
||||
(i64.sub
|
||||
(local.get $p0)
|
||||
(i64.const 1)))))))
|
||||
|
||||
(func $plus (param $x i32) (param $y i32) (result i32)
|
||||
(i32.add
|
||||
(local.get $x)
|
||||
(local.get $y))))</textarea></div>
|
||||
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
lineNumbers: true,
|
||||
lineWrapping: true,
|
||||
indentUnit: 4,
|
||||
mode: "wast"
|
||||
});
|
||||
</script>
|
||||
|
||||
<p><strong>MIME types defined:</strong> <code>text/webassembly</code>.</p>
|
||||
</article>
|
||||
417
public/static/js/codemirror/mode/wast/test.js
vendored
Normal file
417
public/static/js/codemirror/mode/wast/test.js
vendored
Normal file
@@ -0,0 +1,417 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
|
||||
(function() {
|
||||
var mode = CodeMirror.getMode({indentUnit: 4}, "wast");
|
||||
function MT(name) {test.mode(name, mode, Array.prototype.slice.call(arguments, 1));}
|
||||
|
||||
MT('number-test',
|
||||
'[number 0]',
|
||||
'[number 123]',
|
||||
'[number nan]',
|
||||
'[number inf]',
|
||||
'[number infinity]',
|
||||
'[number 0.1]',
|
||||
'[number 123.0]',
|
||||
'[number 12E+99]');
|
||||
|
||||
MT('string-literals-test',
|
||||
'[string "foo"]',
|
||||
'[string "\\"foo\\""]',
|
||||
'[string "foo #\\"# bar"]');
|
||||
|
||||
MT('atom-test',
|
||||
'[atom funcref]',
|
||||
'[atom externref]',
|
||||
'[atom i32]',
|
||||
'[atom i64]',
|
||||
'[atom f32]',
|
||||
'[atom f64]');
|
||||
|
||||
MT('keyword-test',
|
||||
'[keyword br]',
|
||||
'[keyword if]',
|
||||
'[keyword loop]',
|
||||
'[keyword i32.add]',
|
||||
'[keyword local.get]');
|
||||
|
||||
MT('control-instructions',
|
||||
'[keyword unreachable]',
|
||||
'[keyword nop]',
|
||||
'[keyword br] [variable-2 $label0]',
|
||||
'[keyword br_if] [variable-2 $label0]',
|
||||
'[keyword br_table] [variable-2 $label0] [variable-2 $label1] [variable-2 $label3]',
|
||||
'[keyword return]',
|
||||
'[keyword call] [variable-2 $func0]',
|
||||
'[keyword call_indirect] [variable-2 $table] ([keyword param] [atom f32] [atom f64]) ([keyword result] [atom i32] [atom i64])',
|
||||
'[keyword return_call] [variable-2 $func0]',
|
||||
'[keyword return_call_indirect] ([keyword param] [atom f32] [atom f64]) ([keyword result] [atom i32] [atom i64])',
|
||||
'[keyword select] ([keyword local.get] [number 1]) ([keyword local.get] [number 2]) ([keyword local.get] [number 3])');
|
||||
|
||||
|
||||
MT('memory-instructions',
|
||||
'[keyword i32.load] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i32.load8_s] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i32.load8_u] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i32.load16_s] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i32.load16_u] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i32.store] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i32.store8] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i32.store16] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.store] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.load] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.load8_s] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.load8_u] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.load16_s] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.load16_u] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.load32_s] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.load32_u] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.store8] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.store16] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword i64.store32] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword f32.load] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword f32.store] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword f64.load] [keyword offset]=[number 4] [keyword align]=[number 4]',
|
||||
'[keyword f64.store] [keyword offset]=[number 4] [keyword align]=[number 4]');
|
||||
|
||||
MT('atomic-memory-instructions',
|
||||
'[keyword memory.atomic.notify] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword memory.atomic.wait32] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword memory.atomic.wait64] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.load] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.load8_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.load16_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.store] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.store8] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.store16] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.load] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.load8_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.load16_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.load32_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.store] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.store8] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.store16] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.store32] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw.add] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw8.add_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw16.add_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw.add] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw8.add_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw16.add_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw32.add_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw.sub] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw8.sub_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw16.sub_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw.sub] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw8.sub_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw16.sub_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw32.sub_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw.and] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw8.and_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw16.and_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw.and] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw8.and_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw16.and_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw32.and_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw.or] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw8.or_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw16.or_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw.or] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw8.or_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw16.or_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw32.or_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw.xor] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw8.xor_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw16.xor_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw.xor] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw8.xor_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw16.xor_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw32.xor_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw.xchg] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw8.xchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw16.xchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw.xchg] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw8.xchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw16.xchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw32.xchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw.cmpxchg] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw8.cmpxchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i32.atomic.rmw16.cmpxchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw.cmpxchg] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw8.cmpxchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw16.cmpxchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword i64.atomic.rmw32.cmpxchg_u] [keyword offset]=[number 32] [keyword align]=[number 4]');
|
||||
|
||||
MT('simd-instructions',
|
||||
'[keyword v128.load] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword v128.load8x8_s] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.load8x8_u] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.load16x4_s] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.load16x4_u] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.load32x2_s] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.load32x2_u] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.load8_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.load16_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.load32_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.load64_splat] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.store] [keyword offset]=[number 32] [keyword align]=[number 4]',
|
||||
'[keyword v128.const] [number 0] [number 1] [number 2] [number 3] [number 4] [number 5] [number 6] [number 7] [number 8] [number 9] [number 10] [number 11] [number 12] [number 13] [number 14] [number 15]',
|
||||
'[keyword i8x16.shuffle] [number 0] [number 1] [number 2] [number 3] [number 4] [number 5] [number 6] [number 7] [number 8] [number 9] [number 10] [number 11] [number 12] [number 13] [number 14] [number 15]',
|
||||
'[keyword i8x16.swizzle]',
|
||||
'[keyword i8x16.splat]',
|
||||
'[keyword i16x8.splat]',
|
||||
'[keyword i32x4.splat]',
|
||||
'[keyword i64x2.splat]',
|
||||
'[keyword f32x4.splat]',
|
||||
'[keyword f64x2.splat]',
|
||||
'[keyword i8x16.extract_lane_s] [number 1]',
|
||||
'[keyword i8x16.extract_lane_u] [number 1]',
|
||||
'[keyword i8x16.replace_lane] [number 1]',
|
||||
'[keyword i16x8.extract_lane_s] [number 1]',
|
||||
'[keyword i16x8.extract_lane_u] [number 1]',
|
||||
'[keyword i16x8.replace_lane] [number 1]',
|
||||
'[keyword i32x4.extract_lane] [number 1]',
|
||||
'[keyword i32x4.replace_lane] [number 1]',
|
||||
'[keyword i64x2.extract_lane] [number 1]',
|
||||
'[keyword i64x2.replace_lane] [number 1]',
|
||||
'[keyword f32x4.extract_lane] [number 1]',
|
||||
'[keyword f32x4.replace_lane] [number 1]',
|
||||
'[keyword f64x2.extract_lane] [number 1]',
|
||||
'[keyword f64x2.replace_lane] [number 1]',
|
||||
'[keyword i8x16.eq]',
|
||||
'[keyword i8x16.ne]',
|
||||
'[keyword i8x16.lt_s]',
|
||||
'[keyword i8x16.lt_u]',
|
||||
'[keyword i8x16.gt_s]',
|
||||
'[keyword i8x16.gt_u]',
|
||||
'[keyword i8x16.le_s]',
|
||||
'[keyword i8x16.le_u]',
|
||||
'[keyword i8x16.ge_s]',
|
||||
'[keyword i8x16.ge_u]',
|
||||
'[keyword i16x8.eq]',
|
||||
'[keyword i16x8.ne]',
|
||||
'[keyword i16x8.lt_s]',
|
||||
'[keyword i16x8.lt_u]',
|
||||
'[keyword i16x8.gt_s]',
|
||||
'[keyword i16x8.gt_u]',
|
||||
'[keyword i16x8.le_s]',
|
||||
'[keyword i16x8.le_u]',
|
||||
'[keyword i16x8.ge_s]',
|
||||
'[keyword i16x8.ge_u]',
|
||||
'[keyword i32x4.eq]',
|
||||
'[keyword i32x4.ne]',
|
||||
'[keyword i32x4.lt_s]',
|
||||
'[keyword i32x4.lt_u]',
|
||||
'[keyword i32x4.gt_s]',
|
||||
'[keyword i32x4.gt_u]',
|
||||
'[keyword i32x4.le_s]',
|
||||
'[keyword i32x4.le_u]',
|
||||
'[keyword i32x4.ge_s]',
|
||||
'[keyword i32x4.ge_u]',
|
||||
'[keyword f32x4.eq]',
|
||||
'[keyword f32x4.ne]',
|
||||
'[keyword f32x4.lt]',
|
||||
'[keyword f32x4.gt]',
|
||||
'[keyword f32x4.le]',
|
||||
'[keyword f32x4.ge]',
|
||||
'[keyword f64x2.eq]',
|
||||
'[keyword f64x2.ne]',
|
||||
'[keyword f64x2.lt]',
|
||||
'[keyword f64x2.gt]',
|
||||
'[keyword f64x2.le]',
|
||||
'[keyword f64x2.ge]',
|
||||
'[keyword v128.not]',
|
||||
'[keyword v128.and]',
|
||||
'[keyword v128.andnot]',
|
||||
'[keyword v128.or]',
|
||||
'[keyword v128.xor]',
|
||||
'[keyword v128.bitselect]',
|
||||
'[keyword v128.any_true]',
|
||||
'[keyword v128.load8_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
|
||||
'[keyword v128.load16_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
|
||||
'[keyword v128.load32_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
|
||||
'[keyword v128.load64_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
|
||||
'[keyword v128.store8_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
|
||||
'[keyword v128.store16_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
|
||||
'[keyword v128.store32_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
|
||||
'[keyword v128.store64_lane] [keyword offset]=[number 64] [keyword align]=[number 0] [number 1]',
|
||||
'[keyword v128.load32_zero] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword v128.load64_zero] [keyword offset]=[number 64] [keyword align]=[number 0]',
|
||||
'[keyword f32x4.demote_f64x2_zero]',
|
||||
'[keyword f64x2.promote_low_f32x4]',
|
||||
'[keyword i8x16.abs]',
|
||||
'[keyword i8x16.neg]',
|
||||
'[keyword i8x16.popcnt]',
|
||||
'[keyword i8x16.all_true]',
|
||||
'[keyword i8x16.bitmask]',
|
||||
'[keyword i8x16.narrow_i16x8_s]',
|
||||
'[keyword i8x16.narrow_i16x8_u]',
|
||||
'[keyword f32x4.ceil]',
|
||||
'[keyword f32x4.floor]',
|
||||
'[keyword f32x4.trunc]',
|
||||
'[keyword f32x4.nearest]',
|
||||
'[keyword i8x16.shl]',
|
||||
'[keyword i8x16.shr_s]',
|
||||
'[keyword i8x16.shr_u]',
|
||||
'[keyword i8x16.add]',
|
||||
'[keyword i8x16.add_sat_s]',
|
||||
'[keyword i8x16.add_sat_u]',
|
||||
'[keyword i8x16.sub]',
|
||||
'[keyword i8x16.sub_sat_s]',
|
||||
'[keyword i8x16.sub_sat_u]',
|
||||
'[keyword f64x2.ceil]',
|
||||
'[keyword f64x2.floor]',
|
||||
'[keyword i8x16.min_s]',
|
||||
'[keyword i8x16.min_u]',
|
||||
'[keyword i8x16.max_s]',
|
||||
'[keyword i8x16.max_u]',
|
||||
'[keyword f64x2.trunc]',
|
||||
'[keyword i8x16.avgr_u]',
|
||||
'[keyword i16x8.extadd_pairwise_i8x16_s]',
|
||||
'[keyword i16x8.extadd_pairwise_i8x16_u]',
|
||||
'[keyword i32x4.extadd_pairwise_i16x8_s]',
|
||||
'[keyword i32x4.extadd_pairwise_i16x8_u]',
|
||||
'[keyword i16x8.abs]',
|
||||
'[keyword i16x8.neg]',
|
||||
'[keyword i16x8.q15mulr_sat_s]',
|
||||
'[keyword i16x8.all_true]',
|
||||
'[keyword i16x8.bitmask]',
|
||||
'[keyword i16x8.narrow_i32x4_s]',
|
||||
'[keyword i16x8.narrow_i32x4_u]',
|
||||
'[keyword i16x8.extend_low_i8x16_s]',
|
||||
'[keyword i16x8.extend_high_i8x16_s]',
|
||||
'[keyword i16x8.extend_low_i8x16_u]',
|
||||
'[keyword i16x8.extend_high_i8x16_u]',
|
||||
'[keyword i16x8.shl]',
|
||||
'[keyword i16x8.shr_s]',
|
||||
'[keyword i16x8.shr_u]',
|
||||
'[keyword i16x8.add]',
|
||||
'[keyword i16x8.add_sat_s]',
|
||||
'[keyword i16x8.add_sat_u]',
|
||||
'[keyword i16x8.sub]',
|
||||
'[keyword i16x8.sub_sat_s]',
|
||||
'[keyword i16x8.sub_sat_u]',
|
||||
'[keyword f64x2.nearest]',
|
||||
'[keyword i16x8.mul]',
|
||||
'[keyword i16x8.min_s]',
|
||||
'[keyword i16x8.min_u]',
|
||||
'[keyword i16x8.max_s]',
|
||||
'[keyword i16x8.max_u]',
|
||||
'[keyword i16x8.avgr_u]',
|
||||
'[keyword i16x8.extmul_low_i8x16_s]',
|
||||
'[keyword i16x8.extmul_high_i8x16_s]',
|
||||
'[keyword i16x8.extmul_low_i8x16_u]',
|
||||
'[keyword i16x8.extmul_high_i8x16_u]',
|
||||
'[keyword i32x4.abs]',
|
||||
'[keyword i32x4.neg]',
|
||||
'[keyword i32x4.all_true]',
|
||||
'[keyword i32x4.bitmask]',
|
||||
'[keyword i32x4.extend_low_i16x8_s]',
|
||||
'[keyword i32x4.extend_high_i16x8_s]',
|
||||
'[keyword i32x4.extend_low_i16x8_u]',
|
||||
'[keyword i32x4.extend_high_i16x8_u]',
|
||||
'[keyword i32x4.shl]',
|
||||
'[keyword i32x4.shr_s]',
|
||||
'[keyword i32x4.shr_u]',
|
||||
'[keyword i32x4.add]',
|
||||
'[keyword i32x4.sub]',
|
||||
'[keyword i32x4.mul]',
|
||||
'[keyword i32x4.min_s]',
|
||||
'[keyword i32x4.min_u]',
|
||||
'[keyword i32x4.max_s]',
|
||||
'[keyword i32x4.max_u]',
|
||||
'[keyword i32x4.dot_i16x8_s]',
|
||||
'[keyword i32x4.extmul_low_i16x8_s]',
|
||||
'[keyword i32x4.extmul_high_i16x8_s]',
|
||||
'[keyword i32x4.extmul_low_i16x8_u]',
|
||||
'[keyword i32x4.extmul_high_i16x8_u]',
|
||||
'[keyword i64x2.abs]',
|
||||
'[keyword i64x2.neg]',
|
||||
'[keyword i64x2.all_true]',
|
||||
'[keyword i64x2.bitmask]',
|
||||
'[keyword i64x2.extend_low_i32x4_s]',
|
||||
'[keyword i64x2.extend_high_i32x4_s]',
|
||||
'[keyword i64x2.extend_low_i32x4_u]',
|
||||
'[keyword i64x2.extend_high_i32x4_u]',
|
||||
'[keyword i64x2.shl]',
|
||||
'[keyword i64x2.shr_s]',
|
||||
'[keyword i64x2.shr_u]',
|
||||
'[keyword i64x2.add]',
|
||||
'[keyword i64x2.sub]',
|
||||
'[keyword i64x2.mul]',
|
||||
'[keyword i64x2.eq]',
|
||||
'[keyword i64x2.ne]',
|
||||
'[keyword i64x2.lt_s]',
|
||||
'[keyword i64x2.gt_s]',
|
||||
'[keyword i64x2.le_s]',
|
||||
'[keyword i64x2.ge_s]',
|
||||
'[keyword i64x2.extmul_low_i32x4_s]',
|
||||
'[keyword i64x2.extmul_high_i32x4_s]',
|
||||
'[keyword i64x2.extmul_low_i32x4_u]',
|
||||
'[keyword i64x2.extmul_high_i32x4_u]',
|
||||
'[keyword f32x4.abs]',
|
||||
'[keyword f32x4.neg]',
|
||||
'[keyword f32x4.sqrt]',
|
||||
'[keyword f32x4.add]',
|
||||
'[keyword f32x4.sub]',
|
||||
'[keyword f32x4.mul]',
|
||||
'[keyword f32x4.div]',
|
||||
'[keyword f32x4.min]',
|
||||
'[keyword f32x4.max]',
|
||||
'[keyword f64x2.abs]',
|
||||
'[keyword f64x2.neg]',
|
||||
'[keyword f64x2.sqrt]',
|
||||
'[keyword f64x2.add]',
|
||||
'[keyword f64x2.sub]',
|
||||
'[keyword f64x2.mul]',
|
||||
'[keyword f64x2.div]',
|
||||
'[keyword f64x2.min]',
|
||||
'[keyword f64x2.max]',
|
||||
'[keyword i32x4.trunc_sat_f32x4_s]',
|
||||
'[keyword i32x4.trunc_sat_f32x4_u]',
|
||||
'[keyword f32x4.convert_i32x4_s]',
|
||||
'[keyword f32x4.convert_i32x4_u]',
|
||||
'[keyword i32x4.trunc_sat_f64x2_s_zero]',
|
||||
'[keyword i32x4.trunc_sat_f64x2_u_zero]',
|
||||
'[keyword f64x2.convert_low_i32x4_s]',
|
||||
'[keyword f64x2.convert_low_i32x4_u]');
|
||||
|
||||
MT('reference-type-instructions',
|
||||
'[keyword ref.null] [keyword extern]',
|
||||
'[keyword ref.null] [keyword func]',
|
||||
'[keyword ref.is_null] ([keyword ref.func] [variable-2 $f])',
|
||||
'[keyword ref.func] [variable-2 $f]');
|
||||
|
||||
MT('table-instructions',
|
||||
'[keyword table.get] [variable-2 $t] ([keyword i32.const] [number 5])',
|
||||
'[keyword table.set] [variable-2 $t] ([keyword i32.const] [number 5]) ([keyword ref.func] [variable-2 $f])',
|
||||
'[keyword table.size] [variable-2 $t]',
|
||||
'[keyword table.grow] [variable-2 $t] ([keyword ref.null] [keyword extern]) ([keyword i32.const] [number 5])',
|
||||
'[keyword table.fill] [variable-2 $t] ([keyword i32.const] [number 5]) ([keyword param] [variable-2 $r] [atom externref]) ([keyword i32.const] [number 5])',
|
||||
'[keyword table.init] [variable-2 $t] [number 1] ([keyword i32.const] [number 5]) ([keyword i32.const] [number 10]) ([keyword i32.const] [number 15])',
|
||||
'[keyword table.copy] [variable-2 $t] [variable-2 $t2] ([keyword i32.const] [number 5]) ([keyword i32.const] [number 10]) ([keyword i32.const] [number 15])'
|
||||
);
|
||||
MT('gc-proposal',
|
||||
'[keyword call_ref] [keyword return_call_ref]',
|
||||
'[keyword ref.as_non_null] [keyword br_on_null] [keyword ref.eq]');
|
||||
MT('gc-proposal-structs',
|
||||
'[keyword struct.new_with_rtt] [keyword struct.new_default_with_rtt]',
|
||||
'[keyword struct.get] [keyword struct.get_s] [keyword struct.get_u]',
|
||||
'[keyword struct.set]');
|
||||
MT('gc-proposal-arrays',
|
||||
'[keyword array.new_with_rtt] [keyword array.new_default_with_rtt]',
|
||||
'[keyword array.get] [keyword array.get_s] [keyword array.get_u]',
|
||||
'[keyword array.len] [keyword array.set]');
|
||||
MT('gc-proposal-i31',
|
||||
'[keyword i31.new] [keyword i31.get_s] [keyword i31.get_u]');
|
||||
MT('gc-proposal-rtt',
|
||||
'[keyword rtt.canon] [keyword rtt.sub]');
|
||||
MT('gc-proposal-typechecks',
|
||||
'[keyword ref.test] [keyword ref.cast] [keyword br_on_cast]',
|
||||
'[keyword ref.is_func] [keyword ref.is_data] [keyword ref.is_i31]',
|
||||
'[keyword ref.as_func] [keyword ref.as_data] [keyword ref.as_i31]',
|
||||
'[keyword br_on_func] [keyword br_on_data] [keyword br_on_i31]');
|
||||
MT('gc-proposal-types',
|
||||
'[atom i8] [atom i16]',
|
||||
'[atom anyref] [atom dataref] [atom eqref] [atom i31ref]');
|
||||
})();
|
||||
126
public/static/js/codemirror/mode/wast/wast.js
vendored
Normal file
126
public/static/js/codemirror/mode/wast/wast.js
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
|
||||
|
||||
(function(mod) {
|
||||
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||
mod(require("../../lib/codemirror"), require("../../addon/mode/simple"));
|
||||
else if (typeof define == "function" && define.amd) // AMD
|
||||
define(["../../lib/codemirror", "../../addon/mode/simple"], mod);
|
||||
else // Plain browser env
|
||||
mod(CodeMirror);
|
||||
})(function(CodeMirror) {
|
||||
"use strict";
|
||||
|
||||
var kKeywords = [
|
||||
"align",
|
||||
"block",
|
||||
"br(_if|_table|_on_(cast|data|func|i31|null))?",
|
||||
"call(_indirect|_ref)?",
|
||||
"current_memory",
|
||||
"\\bdata\\b",
|
||||
"drop",
|
||||
"elem",
|
||||
"else",
|
||||
"end",
|
||||
"export",
|
||||
"\\bextern\\b",
|
||||
"\\bfunc\\b",
|
||||
"global(\\.(get|set))?",
|
||||
"if",
|
||||
"import",
|
||||
"local(\\.(get|set|tee))?",
|
||||
"loop",
|
||||
"module",
|
||||
"mut",
|
||||
"nop",
|
||||
"offset",
|
||||
"param",
|
||||
"result",
|
||||
"return(_call(_indirect|_ref)?)?",
|
||||
"select",
|
||||
"start",
|
||||
"table(\\.(size|get|set|size|grow|fill|init|copy))?",
|
||||
"then",
|
||||
"type",
|
||||
"unreachable",
|
||||
|
||||
// Numeric opcodes.
|
||||
"i(32|64)\\.(store(8|16)|(load(8|16)_[su]))",
|
||||
"i64\\.(load32_[su]|store32)",
|
||||
"[fi](32|64)\\.(const|load|store)",
|
||||
"f(32|64)\\.(abs|add|ceil|copysign|div|eq|floor|[gl][et]|max|min|mul|nearest|neg?|sqrt|sub|trunc)",
|
||||
"i(32|64)\\.(a[dn]d|c[lt]z|(div|rem)_[su]|eqz?|[gl][te]_[su]|mul|ne|popcnt|rot[lr]|sh(l|r_[su])|sub|x?or)",
|
||||
"i64\\.extend_[su]_i32",
|
||||
"i32\\.wrap_i64",
|
||||
"i(32|64)\\.trunc_f(32|64)_[su]",
|
||||
"f(32|64)\\.convert_i(32|64)_[su]",
|
||||
"f64\\.promote_f32",
|
||||
"f32\\.demote_f64",
|
||||
"f32\\.reinterpret_i32",
|
||||
"i32\\.reinterpret_f32",
|
||||
"f64\\.reinterpret_i64",
|
||||
"i64\\.reinterpret_f64",
|
||||
// Atomics.
|
||||
"memory(\\.((atomic\\.(notify|wait(32|64)))|grow|size))?",
|
||||
"i64\.atomic\\.(load32_u|store32|rmw32\\.(a[dn]d|sub|x?or|(cmp)?xchg)_u)",
|
||||
"i(32|64)\\.atomic\\.(load((8|16)_u)?|store(8|16)?|rmw(\\.(a[dn]d|sub|x?or|(cmp)?xchg)|(8|16)\\.(a[dn]d|sub|x?or|(cmp)?xchg)_u))",
|
||||
// SIMD.
|
||||
"v128\\.load(8x8|16x4|32x2)_[su]",
|
||||
"v128\\.load(8|16|32|64)_splat",
|
||||
"v128\\.(load|store)(8|16|32|64)_lane",
|
||||
"v128\\.load(32|64)_zero",
|
||||
"v128\.(load|store|const|not|andnot|and|or|xor|bitselect|any_true)",
|
||||
"i(8x16|16x8)\\.(extract_lane_[su]|(add|sub)_sat_[su]|avgr_u)",
|
||||
"i(8x16|16x8|32x4|64x2)\\.(neg|add|sub|abs|shl|shr_[su]|all_true|bitmask|eq|ne|[lg][te]_s)",
|
||||
"(i(8x16|16x8|32x4|64x2)|f(32x4|64x2))\.(splat|replace_lane)",
|
||||
"i(8x16|16x8|32x4)\\.(([lg][te]_u)|((min|max)_[su]))",
|
||||
"f(32x4|64x2)\\.(neg|add|sub|abs|nearest|eq|ne|[lg][te]|sqrt|mul|div|min|max|ceil|floor|trunc)",
|
||||
"[fi](32x4|64x2)\\.extract_lane",
|
||||
"i8x16\\.(shuffle|swizzle|popcnt|narrow_i16x8_[su])",
|
||||
"i16x8\\.(narrow_i32x4_[su]|mul|extadd_pairwise_i8x16_[su]|q15mulr_sat_s)",
|
||||
"i16x8\\.(extend|extmul)_(low|high)_i8x16_[su]",
|
||||
"i32x4\\.(mul|dot_i16x8_s|trunc_sat_f64x2_[su]_zero)",
|
||||
"i32x4\\.((extend|extmul)_(low|high)_i16x8_|trunc_sat_f32x4_|extadd_pairwise_i16x8_)[su]",
|
||||
"i64x2\\.(mul|(extend|extmul)_(low|high)_i32x4_[su])",
|
||||
"f32x4\\.(convert_i32x4_[su]|demote_f64x2_zero)",
|
||||
"f64x2\\.(promote_low_f32x4|convert_low_i32x4_[su])",
|
||||
// Reference types, function references, and GC.
|
||||
"\\bany\\b",
|
||||
"array\\.len",
|
||||
"(array|struct)(\\.(new_(default_)?with_rtt|get(_[su])?|set))?",
|
||||
"\\beq\\b",
|
||||
"field",
|
||||
"i31\\.(new|get_[su])",
|
||||
"\\bnull\\b",
|
||||
"ref(\\.(([ai]s_(data|func|i31))|cast|eq|func|(is_|as_non_)?null|test))?",
|
||||
"rtt(\\.(canon|sub))?",
|
||||
];
|
||||
|
||||
CodeMirror.defineSimpleMode('wast', {
|
||||
start: [
|
||||
{regex: /[+\-]?(?:nan(?::0x[0-9a-fA-F]+)?|infinity|inf|0x[0-9a-fA-F]+\.?[0-9a-fA-F]*p[+\/-]?\d+|\d+(?:\.\d*)?[eE][+\-]?\d*|\d+\.\d*|0x[0-9a-fA-F]+|\d+)/, token: "number"},
|
||||
{regex: new RegExp(kKeywords.join('|')), token: "keyword"},
|
||||
{regex: /\b((any|data|eq|extern|i31|func)ref|[fi](32|64)|i(8|16))\b/, token: "atom"},
|
||||
{regex: /\$([a-zA-Z0-9_`\+\-\*\/\\\^~=<>!\?@#$%&|:\.]+)/, token: "variable-2"},
|
||||
{regex: /"(?:[^"\\\x00-\x1f\x7f]|\\[nt\\'"]|\\[0-9a-fA-F][0-9a-fA-F])*"/, token: "string"},
|
||||
{regex: /\(;.*?/, token: "comment", next: "comment"},
|
||||
{regex: /;;.*$/, token: "comment"},
|
||||
{regex: /\(/, indent: true},
|
||||
{regex: /\)/, dedent: true},
|
||||
],
|
||||
|
||||
comment: [
|
||||
{regex: /.*?;\)/, token: "comment", next: "start"},
|
||||
{regex: /.*/, token: "comment"},
|
||||
],
|
||||
|
||||
meta: {
|
||||
dontIndentStates: ['comment'],
|
||||
},
|
||||
});
|
||||
|
||||
// https://github.com/WebAssembly/design/issues/981 mentions text/webassembly,
|
||||
// which seems like a reasonable choice, although it's not standard right now.
|
||||
CodeMirror.defineMIME("text/webassembly", "wast");
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user