fix
This commit is contained in:
139
book/node_modules/highlight.js/lib/languages/wasm.js
generated
vendored
Normal file
139
book/node_modules/highlight.js/lib/languages/wasm.js
generated
vendored
Normal file
@ -0,0 +1,139 @@
|
||||
/*
|
||||
Language: WebAssembly
|
||||
Website: https://webassembly.org
|
||||
Description: Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.
|
||||
Category: web, common
|
||||
Audit: 2020
|
||||
*/
|
||||
|
||||
/** @type LanguageFn */
|
||||
function wasm(hljs) {
|
||||
hljs.regex;
|
||||
const BLOCK_COMMENT = hljs.COMMENT(/\(;/, /;\)/);
|
||||
BLOCK_COMMENT.contains.push("self");
|
||||
const LINE_COMMENT = hljs.COMMENT(/;;/, /$/);
|
||||
|
||||
const KWS = [
|
||||
"anyfunc",
|
||||
"block",
|
||||
"br",
|
||||
"br_if",
|
||||
"br_table",
|
||||
"call",
|
||||
"call_indirect",
|
||||
"data",
|
||||
"drop",
|
||||
"elem",
|
||||
"else",
|
||||
"end",
|
||||
"export",
|
||||
"func",
|
||||
"global.get",
|
||||
"global.set",
|
||||
"local.get",
|
||||
"local.set",
|
||||
"local.tee",
|
||||
"get_global",
|
||||
"get_local",
|
||||
"global",
|
||||
"if",
|
||||
"import",
|
||||
"local",
|
||||
"loop",
|
||||
"memory",
|
||||
"memory.grow",
|
||||
"memory.size",
|
||||
"module",
|
||||
"mut",
|
||||
"nop",
|
||||
"offset",
|
||||
"param",
|
||||
"result",
|
||||
"return",
|
||||
"select",
|
||||
"set_global",
|
||||
"set_local",
|
||||
"start",
|
||||
"table",
|
||||
"tee_local",
|
||||
"then",
|
||||
"type",
|
||||
"unreachable"
|
||||
];
|
||||
|
||||
const FUNCTION_REFERENCE = {
|
||||
begin: [
|
||||
/(?:func|call|call_indirect)/,
|
||||
/\s+/,
|
||||
/\$[^\s)]+/
|
||||
],
|
||||
className: {
|
||||
1: "keyword",
|
||||
3: "title.function"
|
||||
}
|
||||
};
|
||||
|
||||
const ARGUMENT = {
|
||||
className: "variable",
|
||||
begin: /\$[\w_]+/
|
||||
};
|
||||
|
||||
const PARENS = {
|
||||
match: /(\((?!;)|\))+/,
|
||||
className: "punctuation",
|
||||
relevance: 0
|
||||
};
|
||||
|
||||
const NUMBER = {
|
||||
className: "number",
|
||||
relevance: 0,
|
||||
// borrowed from Prism, TODO: split out into variants
|
||||
match: /[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/
|
||||
};
|
||||
|
||||
const TYPE = {
|
||||
// look-ahead prevents us from gobbling up opcodes
|
||||
match: /(i32|i64|f32|f64)(?!\.)/,
|
||||
className: "type"
|
||||
};
|
||||
|
||||
const MATH_OPERATIONS = {
|
||||
className: "keyword",
|
||||
// borrowed from Prism, TODO: split out into variants
|
||||
match: /\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/
|
||||
};
|
||||
|
||||
const OFFSET_ALIGN = {
|
||||
match: [
|
||||
/(?:offset|align)/,
|
||||
/\s*/,
|
||||
/=/
|
||||
],
|
||||
className: {
|
||||
1: "keyword",
|
||||
3: "operator"
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
name: 'WebAssembly',
|
||||
keywords: {
|
||||
$pattern: /[\w.]+/,
|
||||
keyword: KWS
|
||||
},
|
||||
contains: [
|
||||
LINE_COMMENT,
|
||||
BLOCK_COMMENT,
|
||||
OFFSET_ALIGN,
|
||||
ARGUMENT,
|
||||
PARENS,
|
||||
FUNCTION_REFERENCE,
|
||||
hljs.QUOTE_STRING_MODE,
|
||||
TYPE,
|
||||
MATH_OPERATIONS,
|
||||
NUMBER
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = wasm;
|
Reference in New Issue
Block a user