{"version":3,"file":"mllike-DNBMjfDT.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/mllike.js"],"sourcesContent":["function mlLike(parserConfig) {\n  var words = {\n    'as': 'keyword',\n    'do': 'keyword',\n    'else': 'keyword',\n    'end': 'keyword',\n    'exception': 'keyword',\n    'fun': 'keyword',\n    'functor': 'keyword',\n    'if': 'keyword',\n    'in': 'keyword',\n    'include': 'keyword',\n    'let': 'keyword',\n    'of': 'keyword',\n    'open': 'keyword',\n    'rec': 'keyword',\n    'struct': 'keyword',\n    'then': 'keyword',\n    'type': 'keyword',\n    'val': 'keyword',\n    'while': 'keyword',\n    'with': 'keyword'\n  };\n\n  var extraWords = parserConfig.extraWords || {};\n  for (var prop in extraWords) {\n    if (extraWords.hasOwnProperty(prop)) {\n      words[prop] = parserConfig.extraWords[prop];\n    }\n  }\n  var hintWords = [];\n  for (var k in words) { hintWords.push(k); }\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n\n    if (ch === '\"') {\n      state.tokenize = tokenString;\n      return state.tokenize(stream, state);\n    }\n    if (ch === '{') {\n      if (stream.eat('|')) {\n        state.longString = true;\n        state.tokenize = tokenLongString;\n        return state.tokenize(stream, state);\n      }\n    }\n    if (ch === '(') {\n      if (stream.match(/^\\*(?!\\))/)) {\n        state.commentLevel++;\n        state.tokenize = tokenComment;\n        return state.tokenize(stream, state);\n      }\n    }\n    if (ch === '~' || ch === '?') {\n      stream.eatWhile(/\\w/);\n      return 'variableName.special';\n    }\n    if (ch === '`') {\n      stream.eatWhile(/\\w/);\n      return 'quote';\n    }\n    if (ch === '/' && parserConfig.slashComments && stream.eat('/')) {\n      stream.skipToEnd();\n      return 'comment';\n    }\n    if (/\\d/.test(ch)) {\n      if (ch === '0' && stream.eat(/[bB]/)) {\n        stream.eatWhile(/[01]/);\n      } if (ch === '0' && stream.eat(/[xX]/)) {\n        stream.eatWhile(/[0-9a-fA-F]/)\n      } if (ch === '0' && stream.eat(/[oO]/)) {\n        stream.eatWhile(/[0-7]/);\n      } else {\n        stream.eatWhile(/[\\d_]/);\n        if (stream.eat('.')) {\n          stream.eatWhile(/[\\d]/);\n        }\n        if (stream.eat(/[eE]/)) {\n          stream.eatWhile(/[\\d\\-+]/);\n        }\n      }\n      return 'number';\n    }\n    if ( /[+\\-*&%=<>!?|@\\.~:]/.test(ch)) {\n      return 'operator';\n    }\n    if (/[\\w\\xa1-\\uffff]/.test(ch)) {\n      stream.eatWhile(/[\\w\\xa1-\\uffff]/);\n      var cur = stream.current();\n      return words.hasOwnProperty(cur) ? words[cur] : 'variable';\n    }\n    return null\n  }\n\n  function tokenString(stream, state) {\n    var next, end = false, escaped = false;\n    while ((next = stream.next()) != null) {\n      if (next === '\"' && !escaped) {\n        end = true;\n        break;\n      }\n      escaped = !escaped && next === '\\\\';\n    }\n    if (end && !escaped) {\n      state.tokenize = tokenBase;\n    }\n    return 'string';\n  };\n\n  function tokenComment(stream, state) {\n    var prev, next;\n    while(state.commentLevel > 0 && (next = stream.next()) != null) {\n      if (prev === '(' && next === '*') state.commentLevel++;\n      if (prev === '*' && next === ')') state.commentLevel--;\n      prev = next;\n    }\n    if (state.commentLevel <= 0) {\n      state.tokenize = tokenBase;\n    }\n    return 'comment';\n  }\n\n  function tokenLongString(stream, state) {\n    var prev, next;\n    while (state.longString && (next = stream.next()) != null) {\n      if (prev === '|' && next === '}') state.longString = false;\n      prev = next;\n    }\n    if (!state.longString) {\n      state.tokenize = tokenBase;\n    }\n    return 'string';\n  }\n\n  return {\n    startState: function() {return {tokenize: tokenBase, commentLevel: 0, longString: false};},\n    token: function(stream, state) {\n      if (stream.eatSpace()) return null;\n      return state.tokenize(stream, state);\n    },\n\n    languageData: {\n      autocomplete: hintWords,\n      commentTokens: {\n        line: parserConfig.slashComments ? \"//\" : undefined,\n        block: {open: \"(*\", close: \"*)\"}\n      }\n    }\n  };\n};\n\nexport const oCaml = mlLike({\n  name: \"ocaml\",\n  extraWords: {\n    'and': 'keyword',\n    'assert': 'keyword',\n    'begin': 'keyword',\n    'class': 'keyword',\n    'constraint': 'keyword',\n    'done': 'keyword',\n    'downto': 'keyword',\n    'external': 'keyword',\n    'function': 'keyword',\n    'initializer': 'keyword',\n    'lazy': 'keyword',\n    'match': 'keyword',\n    'method': 'keyword',\n    'module': 'keyword',\n    'mutable': 'keyword',\n    'new': 'keyword',\n    'nonrec': 'keyword',\n    'object': 'keyword',\n    'private': 'keyword',\n    'sig': 'keyword',\n    'to': 'keyword',\n    'try': 'keyword',\n    'value': 'keyword',\n    'virtual': 'keyword',\n    'when': 'keyword',\n\n    // builtins\n    'raise': 'builtin',\n    'failwith': 'builtin',\n    'true': 'builtin',\n    'false': 'builtin',\n\n    // Pervasives builtins\n    'asr': 'builtin',\n    'land': 'builtin',\n    'lor': 'builtin',\n    'lsl': 'builtin',\n    'lsr': 'builtin',\n    'lxor': 'builtin',\n    'mod': 'builtin',\n    'or': 'builtin',\n\n    // More Pervasives\n    'raise_notrace': 'builtin',\n    'trace': 'builtin',\n    'exit': 'builtin',\n    'print_string': 'builtin',\n    'print_endline': 'builtin',\n\n     'int': 'type',\n     'float': 'type',\n     'bool': 'type',\n     'char': 'type',\n     'string': 'type',\n     'unit': 'type',\n\n     // Modules\n     'List': 'builtin'\n  }\n});\n\nexport const fSharp = mlLike({\n  name: \"fsharp\",\n  extraWords: {\n    'abstract': 'keyword',\n    'assert': 'keyword',\n    'base': 'keyword',\n    'begin': 'keyword',\n    'class': 'keyword',\n    'default': 'keyword',\n    'delegate': 'keyword',\n    'do!': 'keyword',\n    'done': 'keyword',\n    'downcast': 'keyword',\n    'downto': 'keyword',\n    'elif': 'keyword',\n    'extern': 'keyword',\n    'finally': 'keyword',\n    'for': 'keyword',\n    'function': 'keyword',\n    'global': 'keyword',\n    'inherit': 'keyword',\n    'inline': 'keyword',\n    'interface': 'keyword',\n    'internal': 'keyword',\n    'lazy': 'keyword',\n    'let!': 'keyword',\n    'match': 'keyword',\n    'member': 'keyword',\n    'module': 'keyword',\n    'mutable': 'keyword',\n    'namespace': 'keyword',\n    'new': 'keyword',\n    'null': 'keyword',\n    'override': 'keyword',\n    'private': 'keyword',\n    'public': 'keyword',\n    'return!': 'keyword',\n    'return': 'keyword',\n    'select': 'keyword',\n    'static': 'keyword',\n    'to': 'keyword',\n    'try': 'keyword',\n    'upcast': 'keyword',\n    'use!': 'keyword',\n    'use': 'keyword',\n    'void': 'keyword',\n    'when': 'keyword',\n    'yield!': 'keyword',\n    'yield': 'keyword',\n\n    // Reserved words\n    'atomic': 'keyword',\n    'break': 'keyword',\n    'checked': 'keyword',\n    'component': 'keyword',\n    'const': 'keyword',\n    'constraint': 'keyword',\n    'constructor': 'keyword',\n    'continue': 'keyword',\n    'eager': 'keyword',\n    'event': 'keyword',\n    'external': 'keyword',\n    'fixed': 'keyword',\n    'method': 'keyword',\n    'mixin': 'keyword',\n    'object': 'keyword',\n    'parallel': 'keyword',\n    'process': 'keyword',\n    'protected': 'keyword',\n    'pure': 'keyword',\n    'sealed': 'keyword',\n    'tailcall': 'keyword',\n    'trait': 'keyword',\n    'virtual': 'keyword',\n    'volatile': 'keyword',\n\n    // builtins\n    'List': 'builtin',\n    'Seq': 'builtin',\n    'Map': 'builtin',\n    'Set': 'builtin',\n    'Option': 'builtin',\n    'int': 'builtin',\n    'string': 'builtin',\n    'not': 'builtin',\n    'true': 'builtin',\n    'false': 'builtin',\n\n    'raise': 'builtin',\n    'failwith': 'builtin'\n  },\n  slashComments: true\n});\n\nexport const sml = mlLike({\n  name: \"sml\",\n  extraWords: {\n    'abstype': 'keyword',\n    'and': 'keyword',\n    'andalso': 'keyword',\n    'case': 'keyword',\n    'datatype': 'keyword',\n    'fn': 'keyword',\n    'handle': 'keyword',\n    'infix': 'keyword',\n    'infixr': 'keyword',\n    'local': 'keyword',\n    'nonfix': 'keyword',\n    'op': 'keyword',\n    'orelse': 'keyword',\n    'raise': 'keyword',\n    'withtype': 'keyword',\n    'eqtype': 'keyword',\n    'sharing': 'keyword',\n    'sig': 'keyword',\n    'signature': 'keyword',\n    'structure': 'keyword',\n    'where': 'keyword',\n    'true': 'keyword',\n    'false': 'keyword',\n\n    // types\n    'int': 'builtin',\n    'real': 'builtin',\n    'string': 'builtin',\n    'char': 'builtin',\n    'bool': 'builtin'\n  },\n  slashComments: true\n});\n"],"names":["mlLike","parserConfig","words","as","do","else","end","exception","fun","functor","if","in","include","let","of","open","rec","struct","then","type","val","while","with","extraWords","prop","hasOwnProperty","hintWords","k","push","tokenBase","stream","state","ch","next","tokenize","tokenString","eat","longString","tokenLongString","match","commentLevel","tokenComment","eatWhile","slashComments","skipToEnd","test","cur","current","escaped","prev","startState","token","eatSpace","languageData","autocomplete","commentTokens","line","undefined","block","close","oCaml","and","assert","begin","class","constraint","done","downto","external","function","initializer","lazy","method","module","mutable","new","nonrec","object","private","sig","to","try","value","virtual","when","raise","failwith","true","false","asr","land","lor","lsl","lsr","lxor","mod","or","raise_notrace","trace","exit","print_string","print_endline","int","float","bool","char","string","unit","List","fSharp","abstract","base","default","delegate","downcast","elif","extern","finally","for","global","inherit","inline","interface","internal","member","namespace","null","override","public","return","select","static","upcast","use","void","yield","atomic","break","checked","component","const","constructor","continue","eager","event","fixed","mixin","parallel","process","protected","pure","sealed","tailcall","trait","volatile","Seq","Map","Set","Option","not","sml","abstype","andalso","case","datatype","fn","handle","infix","infixr","local","nonfix","op","orelse","withtype","eqtype","sharing","signature","structure","where","real"],"mappings":"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","x_google_ignoreList":[0]}