Path: blob/master/web-gui/buildyourownbotnet/assets/js/codemirror/mode/mllike/mllike.js
1294 views
CodeMirror.defineMode('mllike', function(_config, parserConfig) {12var words = {3'let': 'keyword',4'rec': 'keyword',5'in': 'keyword',6'of': 'keyword',7'and': 'keyword',8'if': 'keyword',9'then': 'keyword',10'else': 'keyword',11'for': 'keyword',12'to': 'keyword',13'while': 'keyword',14'do': 'keyword',15'done': 'keyword',16'fun': 'keyword',17'function': 'keyword',18'val': 'keyword',19'type': 'keyword',20'mutable': 'keyword',21'match': 'keyword',22'with': 'keyword',23'try': 'keyword',24'open': 'builtin',25'ignore': 'builtin',26'begin': 'keyword',27'end': 'keyword'28};2930var extraWords = parserConfig.extraWords || {};31for (var prop in extraWords) {32if (extraWords.hasOwnProperty(prop)) {33words[prop] = parserConfig.extraWords[prop];34}35}3637function tokenBase(stream, state) {38var ch = stream.next();3940if (ch === '"') {41state.tokenize = tokenString;42return state.tokenize(stream, state);43}44if (ch === '(') {45if (stream.eat('*')) {46state.commentLevel++;47state.tokenize = tokenComment;48return state.tokenize(stream, state);49}50}51if (ch === '~') {52stream.eatWhile(/\w/);53return 'variable-2';54}55if (ch === '`') {56stream.eatWhile(/\w/);57return 'quote';58}59if (ch === '/' && parserConfig.slashComments && stream.eat('/')) {60stream.skipToEnd();61return 'comment';62}63if (/\d/.test(ch)) {64stream.eatWhile(/[\d]/);65if (stream.eat('.')) {66stream.eatWhile(/[\d]/);67}68return 'number';69}70if ( /[+\-*&%=<>!?|]/.test(ch)) {71return 'operator';72}73stream.eatWhile(/\w/);74var cur = stream.current();75return words[cur] || 'variable';76}7778function tokenString(stream, state) {79var next, end = false, escaped = false;80while ((next = stream.next()) != null) {81if (next === '"' && !escaped) {82end = true;83break;84}85escaped = !escaped && next === '\\';86}87if (end && !escaped) {88state.tokenize = tokenBase;89}90return 'string';91};9293function tokenComment(stream, state) {94var prev, next;95while(state.commentLevel > 0 && (next = stream.next()) != null) {96if (prev === '(' && next === '*') state.commentLevel++;97if (prev === '*' && next === ')') state.commentLevel--;98prev = next;99}100if (state.commentLevel <= 0) {101state.tokenize = tokenBase;102}103return 'comment';104}105106return {107startState: function() {return {tokenize: tokenBase, commentLevel: 0};},108token: function(stream, state) {109if (stream.eatSpace()) return null;110return state.tokenize(stream, state);111},112113blockCommentStart: "(*",114blockCommentEnd: "*)",115lineComment: parserConfig.slashComments ? "//" : null116};117});118119CodeMirror.defineMIME('text/x-ocaml', {120name: 'mllike',121extraWords: {122'succ': 'keyword',123'trace': 'builtin',124'exit': 'builtin',125'print_string': 'builtin',126'print_endline': 'builtin',127'true': 'atom',128'false': 'atom',129'raise': 'keyword'130}131});132133CodeMirror.defineMIME('text/x-fsharp', {134name: 'mllike',135extraWords: {136'abstract': 'keyword',137'as': 'keyword',138'assert': 'keyword',139'base': 'keyword',140'class': 'keyword',141'default': 'keyword',142'delegate': 'keyword',143'downcast': 'keyword',144'downto': 'keyword',145'elif': 'keyword',146'exception': 'keyword',147'extern': 'keyword',148'finally': 'keyword',149'global': 'keyword',150'inherit': 'keyword',151'inline': 'keyword',152'interface': 'keyword',153'internal': 'keyword',154'lazy': 'keyword',155'let!': 'keyword',156'member' : 'keyword',157'module': 'keyword',158'namespace': 'keyword',159'new': 'keyword',160'null': 'keyword',161'override': 'keyword',162'private': 'keyword',163'public': 'keyword',164'return': 'keyword',165'return!': 'keyword',166'select': 'keyword',167'static': 'keyword',168'struct': 'keyword',169'upcast': 'keyword',170'use': 'keyword',171'use!': 'keyword',172'val': 'keyword',173'when': 'keyword',174'yield': 'keyword',175'yield!': 'keyword',176177'List': 'builtin',178'Seq': 'builtin',179'Map': 'builtin',180'Set': 'builtin',181'int': 'builtin',182'string': 'builtin',183'raise': 'builtin',184'failwith': 'builtin',185'not': 'builtin',186'true': 'builtin',187'false': 'builtin'188},189slashComments: true190});191192193