basant307/AI_Governance_Project
048
1/*2Language: WebAssembly3Website: https://webassembly.org4Description: Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.5Category: web, common6Audit: 20207*/8 9/** @type LanguageFn */10function wasm(hljs) {11 hljs.regex;12 const BLOCK_COMMENT = hljs.COMMENT(/\(;/, /;\)/);13 BLOCK_COMMENT.contains.push("self");14 const LINE_COMMENT = hljs.COMMENT(/;;/, /$/);15 16 const KWS = [17 "anyfunc",18 "block",19 "br",20 "br_if",21 "br_table",22 "call",23 "call_indirect",24 "data",25 "drop",26 "elem",27 "else",28 "end",29 "export",30 "func",31 "global.get",32 "global.set",33 "local.get",34 "local.set",35 "local.tee",36 "get_global",37 "get_local",38 "global",39 "if",40 "import",41 "local",42 "loop",43 "memory",44 "memory.grow",45 "memory.size",46 "module",47 "mut",48 "nop",49 "offset",50 "param",51 "result",52 "return",53 "select",54 "set_global",55 "set_local",56 "start",57 "table",58 "tee_local",59 "then",60 "type",61 "unreachable"62 ];63 64 const FUNCTION_REFERENCE = {65 begin: [66 /(?:func|call|call_indirect)/,67 /\s+/,68 /\$[^\s)]+/69 ],70 className: {71 1: "keyword",72 3: "title.function"73 }74 };75 76 const ARGUMENT = {77 className: "variable",78 begin: /\$[\w_]+/79 };80 81 const PARENS = {82 match: /(\((?!;)|\))+/,83 className: "punctuation",84 relevance: 085 };86 87 const NUMBER = {88 className: "number",89 relevance: 0,90 // borrowed from Prism, TODO: split out into variants91 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/92 };93 94 const TYPE = {95 // look-ahead prevents us from gobbling up opcodes96 match: /(i32|i64|f32|f64)(?!\.)/,97 className: "type"98 };99 100 const MATH_OPERATIONS = {101 className: "keyword",102 // borrowed from Prism, TODO: split out into variants103 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/104 };105 106 const OFFSET_ALIGN = {107 match: [108 /(?:offset|align)/,109 /\s*/,110 /=/111 ],112 className: {113 1: "keyword",114 3: "operator"115 }116 };117 118 return {119 name: 'WebAssembly',120 keywords: {121 $pattern: /[\w.]+/,122 keyword: KWS123 },124 contains: [125 LINE_COMMENT,126 BLOCK_COMMENT,127 OFFSET_ALIGN,128 ARGUMENT,129 PARENS,130 FUNCTION_REFERENCE,131 hljs.QUOTE_STRING_MODE,132 TYPE,133 MATH_OPERATIONS,134 NUMBER135 ]136 };137}138 139export { wasm as default };140 