| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | // CodeMirror, copyright (c) by Marijn Haverbeke and others// Distributed under an MIT license: http://codemirror.net/LICENSE(function(mod) {  if (typeof exports == "object" && typeof module == "object") // CommonJS    mod(require("../../lib/codemirror"));  else if (typeof define == "function" && define.amd) // AMD    define(["../../lib/codemirror"], mod);  else // Plain browser env    mod(CodeMirror);})(function(CodeMirror) {"use strict";CodeMirror.defineMode('z80', function() {  var keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i;  var keywords2 = /^(call|j[pr]|ret[in]?)\b/i;  var keywords3 = /^b_?(call|jump)\b/i;  var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i;  var variables2 = /^(n?[zc]|p[oe]?|m)\b/i;  var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i;  var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+)\b/i;  return {    startState: function() {      return {context: 0};    },    token: function(stream, state) {      if (!stream.column())        state.context = 0;      if (stream.eatSpace())        return null;      var w;      if (stream.eatWhile(/\w/)) {        w = stream.current();        if (stream.indentation()) {          if (state.context == 1 && variables1.test(w))            return 'variable-2';          if (state.context == 2 && variables2.test(w))            return 'variable-3';          if (keywords1.test(w)) {            state.context = 1;            return 'keyword';          } else if (keywords2.test(w)) {            state.context = 2;            return 'keyword';          } else if (keywords3.test(w)) {            state.context = 3;            return 'keyword';          }          if (errors.test(w))            return 'error';        } else if (numbers.test(w)) {          return 'number';        } else {          return null;        }      } else if (stream.eat(';')) {        stream.skipToEnd();        return 'comment';      } else if (stream.eat('"')) {        while (w = stream.next()) {          if (w == '"')            break;          if (w == '\\')            stream.next();        }        return 'string';      } else if (stream.eat('\'')) {        if (stream.match(/\\?.'/))          return 'number';      } else if (stream.eat('.') || stream.sol() && stream.eat('#')) {        state.context = 4;        if (stream.eatWhile(/\w/))          return 'def';      } else if (stream.eat('$')) {        if (stream.eatWhile(/[\da-f]/i))          return 'number';      } else if (stream.eat('%')) {        if (stream.eatWhile(/[01]/))          return 'number';      } else {        stream.next();      }      return null;    }  };});CodeMirror.defineMIME("text/x-z80", "z80");});
 |