{"version":3,"file":"mllike-QUjwI6zq.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","extraWords","prop","hintWords","k","tokenBase","stream","state","ch","tokenString","tokenLongString","tokenComment","cur","next","end","escaped","prev","oCaml","fSharp","sml"],"mappings":"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","x_google_ignoreList":[0]}