| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 | 
							- // CodeMirror, copyright (c) by Marijn Haverbeke and others
 
- // Distributed under an MIT license: https://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("eiffel", function() {
 
-   function wordObj(words) {
 
-     var o = {};
 
-     for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;
 
-     return o;
 
-   }
 
-   var keywords = wordObj([
 
-     'note',
 
-     'across',
 
-     'when',
 
-     'variant',
 
-     'until',
 
-     'unique',
 
-     'undefine',
 
-     'then',
 
-     'strip',
 
-     'select',
 
-     'retry',
 
-     'rescue',
 
-     'require',
 
-     'rename',
 
-     'reference',
 
-     'redefine',
 
-     'prefix',
 
-     'once',
 
-     'old',
 
-     'obsolete',
 
-     'loop',
 
-     'local',
 
-     'like',
 
-     'is',
 
-     'inspect',
 
-     'infix',
 
-     'include',
 
-     'if',
 
-     'frozen',
 
-     'from',
 
-     'external',
 
-     'export',
 
-     'ensure',
 
-     'end',
 
-     'elseif',
 
-     'else',
 
-     'do',
 
-     'creation',
 
-     'create',
 
-     'check',
 
-     'alias',
 
-     'agent',
 
-     'separate',
 
-     'invariant',
 
-     'inherit',
 
-     'indexing',
 
-     'feature',
 
-     'expanded',
 
-     'deferred',
 
-     'class',
 
-     'Void',
 
-     'True',
 
-     'Result',
 
-     'Precursor',
 
-     'False',
 
-     'Current',
 
-     'create',
 
-     'attached',
 
-     'detachable',
 
-     'as',
 
-     'and',
 
-     'implies',
 
-     'not',
 
-     'or'
 
-   ]);
 
-   var operators = wordObj([":=", "and then","and", "or","<<",">>"]);
 
-   function chain(newtok, stream, state) {
 
-     state.tokenize.push(newtok);
 
-     return newtok(stream, state);
 
-   }
 
-   function tokenBase(stream, state) {
 
-     if (stream.eatSpace()) return null;
 
-     var ch = stream.next();
 
-     if (ch == '"'||ch == "'") {
 
-       return chain(readQuoted(ch, "string"), stream, state);
 
-     } else if (ch == "-"&&stream.eat("-")) {
 
-       stream.skipToEnd();
 
-       return "comment";
 
-     } else if (ch == ":"&&stream.eat("=")) {
 
-       return "operator";
 
-     } else if (/[0-9]/.test(ch)) {
 
-       stream.eatWhile(/[xXbBCc0-9\.]/);
 
-       stream.eat(/[\?\!]/);
 
-       return "ident";
 
-     } else if (/[a-zA-Z_0-9]/.test(ch)) {
 
-       stream.eatWhile(/[a-zA-Z_0-9]/);
 
-       stream.eat(/[\?\!]/);
 
-       return "ident";
 
-     } else if (/[=+\-\/*^%<>~]/.test(ch)) {
 
-       stream.eatWhile(/[=+\-\/*^%<>~]/);
 
-       return "operator";
 
-     } else {
 
-       return null;
 
-     }
 
-   }
 
-   function readQuoted(quote, style,  unescaped) {
 
-     return function(stream, state) {
 
-       var escaped = false, ch;
 
-       while ((ch = stream.next()) != null) {
 
-         if (ch == quote && (unescaped || !escaped)) {
 
-           state.tokenize.pop();
 
-           break;
 
-         }
 
-         escaped = !escaped && ch == "%";
 
-       }
 
-       return style;
 
-     };
 
-   }
 
-   return {
 
-     startState: function() {
 
-       return {tokenize: [tokenBase]};
 
-     },
 
-     token: function(stream, state) {
 
-       var style = state.tokenize[state.tokenize.length-1](stream, state);
 
-       if (style == "ident") {
 
-         var word = stream.current();
 
-         style = keywords.propertyIsEnumerable(stream.current()) ? "keyword"
 
-           : operators.propertyIsEnumerable(stream.current()) ? "operator"
 
-           : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag"
 
-           : /^0[bB][0-1]+$/g.test(word) ? "number"
 
-           : /^0[cC][0-7]+$/g.test(word) ? "number"
 
-           : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number"
 
-           : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ? "number"
 
-           : /^[0-9]+$/g.test(word) ? "number"
 
-           : "variable";
 
-       }
 
-       return style;
 
-     },
 
-     lineComment: "--"
 
-   };
 
- });
 
- CodeMirror.defineMIME("text/x-eiffel", "eiffel");
 
- });
 
 
  |