{"version":3,"file":"haskell-D7NTJ5RY.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/haskell.js"],"sourcesContent":["function switchState(source, setState, f) {\n  setState(f);\n  return f(source, setState);\n}\n\n// These should all be Unicode extended, as per the Haskell 2010 report\nvar smallRE = /[a-z_]/;\nvar largeRE = /[A-Z]/;\nvar digitRE = /\\d/;\nvar hexitRE = /[0-9A-Fa-f]/;\nvar octitRE = /[0-7]/;\nvar idRE = /[a-z_A-Z0-9'\\xa1-\\uffff]/;\nvar symbolRE = /[-!#$%&*+.\\/<=>?@\\\\^|~:]/;\nvar specialRE = /[(),;[\\]`{}]/;\nvar whiteCharRE = /[ \\t\\v\\f]/; // newlines are handled in tokenizer\n\nfunction normal(source, setState) {\n  if (source.eatWhile(whiteCharRE)) {\n    return null;\n  }\n\n  var ch = source.next();\n  if (specialRE.test(ch)) {\n    if (ch == '{' && source.eat('-')) {\n      var t = \"comment\";\n      if (source.eat('#')) {\n        t = \"meta\";\n      }\n      return switchState(source, setState, ncomment(t, 1));\n    }\n    return null;\n  }\n\n  if (ch == '\\'') {\n    if (source.eat('\\\\')) {\n      source.next();  // should handle other escapes here\n    }\n    else {\n      source.next();\n    }\n    if (source.eat('\\'')) {\n      return \"string\";\n    }\n    return \"error\";\n  }\n\n  if (ch == '\"') {\n    return switchState(source, setState, stringLiteral);\n  }\n\n  if (largeRE.test(ch)) {\n    source.eatWhile(idRE);\n    if (source.eat('.')) {\n      return \"qualifier\";\n    }\n    return \"type\";\n  }\n\n  if (smallRE.test(ch)) {\n    source.eatWhile(idRE);\n    return \"variable\";\n  }\n\n  if (digitRE.test(ch)) {\n    if (ch == '0') {\n      if (source.eat(/[xX]/)) {\n        source.eatWhile(hexitRE); // should require at least 1\n        return \"integer\";\n      }\n      if (source.eat(/[oO]/)) {\n        source.eatWhile(octitRE); // should require at least 1\n        return \"number\";\n      }\n    }\n    source.eatWhile(digitRE);\n    var t = \"number\";\n    if (source.match(/^\\.\\d+/)) {\n      t = \"number\";\n    }\n    if (source.eat(/[eE]/)) {\n      t = \"number\";\n      source.eat(/[-+]/);\n      source.eatWhile(digitRE); // should require at least 1\n    }\n    return t;\n  }\n\n  if (ch == \".\" && source.eat(\".\"))\n    return \"keyword\";\n\n  if (symbolRE.test(ch)) {\n    if (ch == '-' && source.eat(/-/)) {\n      source.eatWhile(/-/);\n      if (!source.eat(symbolRE)) {\n        source.skipToEnd();\n        return \"comment\";\n      }\n    }\n    source.eatWhile(symbolRE);\n    return \"variable\"\n  }\n\n  return \"error\";\n}\n\nfunction ncomment(type, nest) {\n  if (nest == 0) {\n    return normal;\n  }\n  return function(source, setState) {\n    var currNest = nest;\n    while (!source.eol()) {\n      var ch = source.next();\n      if (ch == '{' && source.eat('-')) {\n        ++currNest;\n      }\n      else if (ch == '-' && source.eat('}')) {\n        --currNest;\n        if (currNest == 0) {\n          setState(normal);\n          return type;\n        }\n      }\n    }\n    setState(ncomment(type, currNest));\n    return type;\n  };\n}\n\nfunction stringLiteral(source, setState) {\n  while (!source.eol()) {\n    var ch = source.next();\n    if (ch == '\"') {\n      setState(normal);\n      return \"string\";\n    }\n    if (ch == '\\\\') {\n      if (source.eol() || source.eat(whiteCharRE)) {\n        setState(stringGap);\n        return \"string\";\n      }\n      if (source.eat('&')) {\n      }\n      else {\n        source.next(); // should handle other escapes here\n      }\n    }\n  }\n  setState(normal);\n  return \"error\";\n}\n\nfunction stringGap(source, setState) {\n  if (source.eat('\\\\')) {\n    return switchState(source, setState, stringLiteral);\n  }\n  source.next();\n  setState(normal);\n  return \"error\";\n}\n\n\nvar wellKnownWords = (function() {\n  var wkw = {};\n  function setType(t) {\n    return function () {\n      for (var i = 0; i < arguments.length; i++)\n        wkw[arguments[i]] = t;\n    };\n  }\n\n  setType(\"keyword\")(\n    \"case\", \"class\", \"data\", \"default\", \"deriving\", \"do\", \"else\", \"foreign\",\n    \"if\", \"import\", \"in\", \"infix\", \"infixl\", \"infixr\", \"instance\", \"let\",\n    \"module\", \"newtype\", \"of\", \"then\", \"type\", \"where\", \"_\");\n\n  setType(\"keyword\")(\n    \"\\.\\.\", \":\", \"::\", \"=\", \"\\\\\", \"<-\", \"->\", \"@\", \"~\", \"=>\");\n\n  setType(\"builtin\")(\n    \"!!\", \"$!\", \"$\", \"&&\", \"+\", \"++\", \"-\", \".\", \"/\", \"/=\", \"<\", \"<*\", \"<=\",\n    \"<$>\", \"<*>\", \"=<<\", \"==\", \">\", \">=\", \">>\", \">>=\", \"^\", \"^^\", \"||\", \"*\",\n    \"*>\", \"**\");\n\n  setType(\"builtin\")(\n    \"Applicative\", \"Bool\", \"Bounded\", \"Char\", \"Double\", \"EQ\", \"Either\", \"Enum\",\n    \"Eq\", \"False\", \"FilePath\", \"Float\", \"Floating\", \"Fractional\", \"Functor\",\n    \"GT\", \"IO\", \"IOError\", \"Int\", \"Integer\", \"Integral\", \"Just\", \"LT\", \"Left\",\n    \"Maybe\", \"Monad\", \"Nothing\", \"Num\", \"Ord\", \"Ordering\", \"Rational\", \"Read\",\n    \"ReadS\", \"Real\", \"RealFloat\", \"RealFrac\", \"Right\", \"Show\", \"ShowS\",\n    \"String\", \"True\");\n\n  setType(\"builtin\")(\n    \"abs\", \"acos\", \"acosh\", \"all\", \"and\", \"any\", \"appendFile\", \"asTypeOf\",\n    \"asin\", \"asinh\", \"atan\", \"atan2\", \"atanh\", \"break\", \"catch\", \"ceiling\",\n    \"compare\", \"concat\", \"concatMap\", \"const\", \"cos\", \"cosh\", \"curry\",\n    \"cycle\", \"decodeFloat\", \"div\", \"divMod\", \"drop\", \"dropWhile\", \"either\",\n    \"elem\", \"encodeFloat\", \"enumFrom\", \"enumFromThen\", \"enumFromThenTo\",\n    \"enumFromTo\", \"error\", \"even\", \"exp\", \"exponent\", \"fail\", \"filter\",\n    \"flip\", \"floatDigits\", \"floatRadix\", \"floatRange\", \"floor\", \"fmap\",\n    \"foldl\", \"foldl1\", \"foldr\", \"foldr1\", \"fromEnum\", \"fromInteger\",\n    \"fromIntegral\", \"fromRational\", \"fst\", \"gcd\", \"getChar\", \"getContents\",\n    \"getLine\", \"head\", \"id\", \"init\", \"interact\", \"ioError\", \"isDenormalized\",\n    \"isIEEE\", \"isInfinite\", \"isNaN\", \"isNegativeZero\", \"iterate\", \"last\",\n    \"lcm\", \"length\", \"lex\", \"lines\", \"log\", \"logBase\", \"lookup\", \"map\",\n    \"mapM\", \"mapM_\", \"max\", \"maxBound\", \"maximum\", \"maybe\", \"min\", \"minBound\",\n    \"minimum\", \"mod\", \"negate\", \"not\", \"notElem\", \"null\", \"odd\", \"or\",\n    \"otherwise\", \"pi\", \"pred\", \"print\", \"product\", \"properFraction\", \"pure\",\n    \"putChar\", \"putStr\", \"putStrLn\", \"quot\", \"quotRem\", \"read\", \"readFile\",\n    \"readIO\", \"readList\", \"readLn\", \"readParen\", \"reads\", \"readsPrec\",\n    \"realToFrac\", \"recip\", \"rem\", \"repeat\", \"replicate\", \"return\", \"reverse\",\n    \"round\", \"scaleFloat\", \"scanl\", \"scanl1\", \"scanr\", \"scanr1\", \"seq\",\n    \"sequence\", \"sequence_\", \"show\", \"showChar\", \"showList\", \"showParen\",\n    \"showString\", \"shows\", \"showsPrec\", \"significand\", \"signum\", \"sin\",\n    \"sinh\", \"snd\", \"span\", \"splitAt\", \"sqrt\", \"subtract\", \"succ\", \"sum\",\n    \"tail\", \"take\", \"takeWhile\", \"tan\", \"tanh\", \"toEnum\", \"toInteger\",\n    \"toRational\", \"truncate\", \"uncurry\", \"undefined\", \"unlines\", \"until\",\n    \"unwords\", \"unzip\", \"unzip3\", \"userError\", \"words\", \"writeFile\", \"zip\",\n    \"zip3\", \"zipWith\", \"zipWith3\");\n\n  return wkw;\n})();\n\nexport const haskell = {\n  name: \"haskell\",\n  startState: function ()  { return { f: normal }; },\n  copyState:  function (s) { return { f: s.f }; },\n\n  token: function(stream, state) {\n    var t = state.f(stream, function(s) { state.f = s; });\n    var w = stream.current();\n    return wellKnownWords.hasOwnProperty(w) ? wellKnownWords[w] : t;\n  },\n\n  languageData: {\n    commentTokens: {line: \"--\", block: {open: \"{-\", close: \"-}\"}}\n  }\n};\n"],"names":["switchState","source","setState","f","smallRE","largeRE","digitRE","hexitRE","octitRE","idRE","symbolRE","specialRE","whiteCharRE","normal","eatWhile","ch","next","test","eat","t","ncomment","stringLiteral","match","skipToEnd","type","nest","currNest","eol","stringGap","wellKnownWords","wkw","setType","i","arguments","length","haskell","name","startState","copyState","s","token","stream","state","w","current","hasOwnProperty","languageData","commentTokens","line","block","open","close"],"mappings":"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","x_google_ignoreList":[0]}