[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/vendor/codemirror/mode/gas/ -> gas.js (source)

   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  });


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer