[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 // Distributed under an MIT license: https://codemirror.net/5/LICENSE 3 4 (function(mod) { 5 if (typeof exports == "object" && typeof module == "object") // CommonJS 6 mod(require("../../lib/codemirror")); 7 else if (typeof define == "function" && define.amd) // AMD 8 define(["../../lib/codemirror"], mod); 9 else // Plain browser env 10 mod(CodeMirror); 11 })(function(CodeMirror) { 12 "use strict"; 13 14 CodeMirror.defineMode("gas", function(_config, parserConfig) { 15 'use strict'; 16 17 // If an architecture is specified, its initialization function may 18 // populate this array with custom parsing functions which will be 19 // tried in the event that the standard functions do not find a match. 20 var custom = []; 21 22 // The symbol used to start a line comment changes based on the target 23 // architecture. 24 // If no architecture is pased in "parserConfig" then only multiline 25 // comments will have syntax support. 26 var lineCommentStartSymbol = ""; 27 28 // These directives are architecture independent. 29 // Machine specific directives should go in their respective 30 // architecture initialization function. 31 // Reference: 32 // http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops 33 var directives = { 34 ".abort" : "builtin", 35 ".align" : "builtin", 36 ".altmacro" : "builtin", 37 ".ascii" : "builtin", 38 ".asciz" : "builtin", 39 ".balign" : "builtin", 40 ".balignw" : "builtin", 41 ".balignl" : "builtin", 42 ".bundle_align_mode" : "builtin", 43 ".bundle_lock" : "builtin", 44 ".bundle_unlock" : "builtin", 45 ".byte" : "builtin", 46 ".cfi_startproc" : "builtin", 47 ".comm" : "builtin", 48 ".data" : "builtin", 49 ".def" : "builtin", 50 ".desc" : "builtin", 51 ".dim" : "builtin", 52 ".double" : "builtin", 53 ".eject" : "builtin", 54 ".else" : "builtin", 55 ".elseif" : "builtin", 56 ".end" : "builtin", 57 ".endef" : "builtin", 58 ".endfunc" : "builtin", 59 ".endif" : "builtin", 60 ".equ" : "builtin", 61 ".equiv" : "builtin", 62 ".eqv" : "builtin", 63 ".err" : "builtin", 64 ".error" : "builtin", 65 ".exitm" : "builtin", 66 ".extern" : "builtin", 67 ".fail" : "builtin", 68 ".file" : "builtin", 69 ".fill" : "builtin", 70 ".float" : "builtin", 71 ".func" : "builtin", 72 ".global" : "builtin", 73 ".gnu_attribute" : "builtin", 74 ".hidden" : "builtin", 75 ".hword" : "builtin", 76 ".ident" : "builtin", 77 ".if" : "builtin", 78 ".incbin" : "builtin", 79 ".include" : "builtin", 80 ".int" : "builtin", 81 ".internal" : "builtin", 82 ".irp" : "builtin", 83 ".irpc" : "builtin", 84 ".lcomm" : "builtin", 85 ".lflags" : "builtin", 86 ".line" : "builtin", 87 ".linkonce" : "builtin", 88 ".list" : "builtin", 89 ".ln" : "builtin", 90 ".loc" : "builtin", 91 ".loc_mark_labels" : "builtin", 92 ".local" : "builtin", 93 ".long" : "builtin", 94 ".macro" : "builtin", 95 ".mri" : "builtin", 96 ".noaltmacro" : "builtin", 97 ".nolist" : "builtin", 98 ".octa" : "builtin", 99 ".offset" : "builtin", 100 ".org" : "builtin", 101 ".p2align" : "builtin", 102 ".popsection" : "builtin", 103 ".previous" : "builtin", 104 ".print" : "builtin", 105 ".protected" : "builtin", 106 ".psize" : "builtin", 107 ".purgem" : "builtin", 108 ".pushsection" : "builtin", 109 ".quad" : "builtin", 110 ".reloc" : "builtin", 111 ".rept" : "builtin", 112 ".sbttl" : "builtin", 113 ".scl" : "builtin", 114 ".section" : "builtin", 115 ".set" : "builtin", 116 ".short" : "builtin", 117 ".single" : "builtin", 118 ".size" : "builtin", 119 ".skip" : "builtin", 120 ".sleb128" : "builtin", 121 ".space" : "builtin", 122 ".stab" : "builtin", 123 ".string" : "builtin", 124 ".struct" : "builtin", 125 ".subsection" : "builtin", 126 ".symver" : "builtin", 127 ".tag" : "builtin", 128 ".text" : "builtin", 129 ".title" : "builtin", 130 ".type" : "builtin", 131 ".uleb128" : "builtin", 132 ".val" : "builtin", 133 ".version" : "builtin", 134 ".vtable_entry" : "builtin", 135 ".vtable_inherit" : "builtin", 136 ".warning" : "builtin", 137 ".weak" : "builtin", 138 ".weakref" : "builtin", 139 ".word" : "builtin" 140 }; 141 142 var registers = {}; 143 144 function x86(_parserConfig) { 145 lineCommentStartSymbol = "#"; 146 147 registers.al = "variable"; 148 registers.ah = "variable"; 149 registers.ax = "variable"; 150 registers.eax = "variable-2"; 151 registers.rax = "variable-3"; 152 153 registers.bl = "variable"; 154 registers.bh = "variable"; 155 registers.bx = "variable"; 156 registers.ebx = "variable-2"; 157 registers.rbx = "variable-3"; 158 159 registers.cl = "variable"; 160 registers.ch = "variable"; 161 registers.cx = "variable"; 162 registers.ecx = "variable-2"; 163 registers.rcx = "variable-3"; 164 165 registers.dl = "variable"; 166 registers.dh = "variable"; 167 registers.dx = "variable"; 168 registers.edx = "variable-2"; 169 registers.rdx = "variable-3"; 170 171 registers.si = "variable"; 172 registers.esi = "variable-2"; 173 registers.rsi = "variable-3"; 174 175 registers.di = "variable"; 176 registers.edi = "variable-2"; 177 registers.rdi = "variable-3"; 178 179 registers.sp = "variable"; 180 registers.esp = "variable-2"; 181 registers.rsp = "variable-3"; 182 183 registers.bp = "variable"; 184 registers.ebp = "variable-2"; 185 registers.rbp = "variable-3"; 186 187 registers.ip = "variable"; 188 registers.eip = "variable-2"; 189 registers.rip = "variable-3"; 190 191 registers.cs = "keyword"; 192 registers.ds = "keyword"; 193 registers.ss = "keyword"; 194 registers.es = "keyword"; 195 registers.fs = "keyword"; 196 registers.gs = "keyword"; 197 } 198 199 function armv6(_parserConfig) { 200 // Reference: 201 // http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf 202 // http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf 203 lineCommentStartSymbol = "@"; 204 directives.syntax = "builtin"; 205 206 registers.r0 = "variable"; 207 registers.r1 = "variable"; 208 registers.r2 = "variable"; 209 registers.r3 = "variable"; 210 registers.r4 = "variable"; 211 registers.r5 = "variable"; 212 registers.r6 = "variable"; 213 registers.r7 = "variable"; 214 registers.r8 = "variable"; 215 registers.r9 = "variable"; 216 registers.r10 = "variable"; 217 registers.r11 = "variable"; 218 registers.r12 = "variable"; 219 220 registers.sp = "variable-2"; 221 registers.lr = "variable-2"; 222 registers.pc = "variable-2"; 223 registers.r13 = registers.sp; 224 registers.r14 = registers.lr; 225 registers.r15 = registers.pc; 226 227 custom.push(function(ch, stream) { 228 if (ch === '#') { 229 stream.eatWhile(/\w/); 230 return "number"; 231 } 232 }); 233 } 234 235 var arch = (parserConfig.architecture || "x86").toLowerCase(); 236 if (arch === "x86") { 237 x86(parserConfig); 238 } else if (arch === "arm" || arch === "armv6") { 239 armv6(parserConfig); 240 } 241 242 function nextUntilUnescaped(stream, end) { 243 var escaped = false, next; 244 while ((next = stream.next()) != null) { 245 if (next === end && !escaped) { 246 return false; 247 } 248 escaped = !escaped && next === "\\"; 249 } 250 return escaped; 251 } 252 253 function clikeComment(stream, state) { 254 var maybeEnd = false, ch; 255 while ((ch = stream.next()) != null) { 256 if (ch === "/" && maybeEnd) { 257 state.tokenize = null; 258 break; 259 } 260 maybeEnd = (ch === "*"); 261 } 262 return "comment"; 263 } 264 265 return { 266 startState: function() { 267 return { 268 tokenize: null 269 }; 270 }, 271 272 token: function(stream, state) { 273 if (state.tokenize) { 274 return state.tokenize(stream, state); 275 } 276 277 if (stream.eatSpace()) { 278 return null; 279 } 280 281 var style, cur, ch = stream.next(); 282 283 if (ch === "/") { 284 if (stream.eat("*")) { 285 state.tokenize = clikeComment; 286 return clikeComment(stream, state); 287 } 288 } 289 290 if (ch === lineCommentStartSymbol) { 291 stream.skipToEnd(); 292 return "comment"; 293 } 294 295 if (ch === '"') { 296 nextUntilUnescaped(stream, '"'); 297 return "string"; 298 } 299 300 if (ch === '.') { 301 stream.eatWhile(/\w/); 302 cur = stream.current().toLowerCase(); 303 style = directives[cur]; 304 return style || null; 305 } 306 307 if (ch === '=') { 308 stream.eatWhile(/\w/); 309 return "tag"; 310 } 311 312 if (ch === '{') { 313 return "bracket"; 314 } 315 316 if (ch === '}') { 317 return "bracket"; 318 } 319 320 if (/\d/.test(ch)) { 321 if (ch === "0" && stream.eat("x")) { 322 stream.eatWhile(/[0-9a-fA-F]/); 323 return "number"; 324 } 325 stream.eatWhile(/\d/); 326 return "number"; 327 } 328 329 if (/\w/.test(ch)) { 330 stream.eatWhile(/\w/); 331 if (stream.eat(":")) { 332 return 'tag'; 333 } 334 cur = stream.current().toLowerCase(); 335 style = registers[cur]; 336 return style || null; 337 } 338 339 for (var i = 0; i < custom.length; i++) { 340 style = custom[i](ch, stream, state); 341 if (style) { 342 return style; 343 } 344 } 345 }, 346 347 lineComment: lineCommentStartSymbol, 348 blockCommentStart: "/*", 349 blockCommentEnd: "*/" 350 }; 351 }); 352 353 });
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |