{"version":3,"file":"dylan-BmN4EGo8.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/dylan.js"],"sourcesContent":["function forEach(arr, f) {\n  for (var i = 0; i < arr.length; i++) f(arr[i], i)\n}\nfunction some(arr, f) {\n  for (var i = 0; i < arr.length; i++) if (f(arr[i], i)) return true\n  return false\n}\n\n// Words\nvar words = {\n  // Words that introduce unnamed definitions like \"define interface\"\n  unnamedDefinition: [\"interface\"],\n\n  // Words that introduce simple named definitions like \"define library\"\n  namedDefinition: [\"module\", \"library\", \"macro\",\n                    \"C-struct\", \"C-union\",\n                    \"C-function\", \"C-callable-wrapper\"\n                   ],\n\n  // Words that introduce type definitions like \"define class\".\n  // These are also parameterized like \"define method\" and are\n  // appended to otherParameterizedDefinitionWords\n  typeParameterizedDefinition: [\"class\", \"C-subtype\", \"C-mapped-subtype\"],\n\n  // Words that introduce trickier definitions like \"define method\".\n  // These require special definitions to be added to startExpressions\n  otherParameterizedDefinition: [\"method\", \"function\",\n                                 \"C-variable\", \"C-address\"\n                                ],\n\n  // Words that introduce module constant definitions.\n  // These must also be simple definitions and are\n  // appended to otherSimpleDefinitionWords\n  constantSimpleDefinition: [\"constant\"],\n\n  // Words that introduce module variable definitions.\n  // These must also be simple definitions and are\n  // appended to otherSimpleDefinitionWords\n  variableSimpleDefinition: [\"variable\"],\n\n  // Other words that introduce simple definitions\n  // (without implicit bodies).\n  otherSimpleDefinition: [\"generic\", \"domain\",\n                          \"C-pointer-type\",\n                          \"table\"\n                         ],\n\n  // Words that begin statements with implicit bodies.\n  statement: [\"if\", \"block\", \"begin\", \"method\", \"case\",\n              \"for\", \"select\", \"when\", \"unless\", \"until\",\n              \"while\", \"iterate\", \"profiling\", \"dynamic-bind\"\n             ],\n\n  // Patterns that act as separators in compound statements.\n  // This may include any general pattern that must be indented\n  // specially.\n  separator: [\"finally\", \"exception\", \"cleanup\", \"else\",\n              \"elseif\", \"afterwards\"\n             ],\n\n  // Keywords that do not require special indentation handling,\n  // but which should be highlighted\n  other: [\"above\", \"below\", \"by\", \"from\", \"handler\", \"in\",\n          \"instance\", \"let\", \"local\", \"otherwise\", \"slot\",\n          \"subclass\", \"then\", \"to\", \"keyed-by\", \"virtual\"\n         ],\n\n  // Condition signaling function calls\n  signalingCalls: [\"signal\", \"error\", \"cerror\",\n                   \"break\", \"check-type\", \"abort\"\n                  ]\n};\n\nwords[\"otherDefinition\"] =\n  words[\"unnamedDefinition\"]\n  .concat(words[\"namedDefinition\"])\n  .concat(words[\"otherParameterizedDefinition\"]);\n\nwords[\"definition\"] =\n  words[\"typeParameterizedDefinition\"]\n  .concat(words[\"otherDefinition\"]);\n\nwords[\"parameterizedDefinition\"] =\n  words[\"typeParameterizedDefinition\"]\n  .concat(words[\"otherParameterizedDefinition\"]);\n\nwords[\"simpleDefinition\"] =\n  words[\"constantSimpleDefinition\"]\n  .concat(words[\"variableSimpleDefinition\"])\n  .concat(words[\"otherSimpleDefinition\"]);\n\nwords[\"keyword\"] =\n  words[\"statement\"]\n  .concat(words[\"separator\"])\n  .concat(words[\"other\"]);\n\n// Patterns\nvar symbolPattern = \"[-_a-zA-Z?!*@<>$%]+\";\nvar symbol = new RegExp(\"^\" + symbolPattern);\nvar patterns = {\n  // Symbols with special syntax\n  symbolKeyword: symbolPattern + \":\",\n  symbolClass: \"<\" + symbolPattern + \">\",\n  symbolGlobal: \"\\\\*\" + symbolPattern + \"\\\\*\",\n  symbolConstant: \"\\\\$\" + symbolPattern\n};\nvar patternStyles = {\n  symbolKeyword: \"atom\",\n  symbolClass: \"tag\",\n  symbolGlobal: \"variableName.standard\",\n  symbolConstant: \"variableName.constant\"\n};\n\n// Compile all patterns to regular expressions\nfor (var patternName in patterns)\n  if (patterns.hasOwnProperty(patternName))\n    patterns[patternName] = new RegExp(\"^\" + patterns[patternName]);\n\n// Names beginning \"with-\" and \"without-\" are commonly\n// used as statement macro\npatterns[\"keyword\"] = [/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];\n\nvar styles = {};\nstyles[\"keyword\"] = \"keyword\";\nstyles[\"definition\"] = \"def\";\nstyles[\"simpleDefinition\"] = \"def\";\nstyles[\"signalingCalls\"] = \"builtin\";\n\n// protected words lookup table\nvar wordLookup = {};\nvar styleLookup = {};\n\nforEach([\n  \"keyword\",\n  \"definition\",\n  \"simpleDefinition\",\n  \"signalingCalls\"\n], function(type) {\n  forEach(words[type], function(word) {\n    wordLookup[word] = type;\n    styleLookup[word] = styles[type];\n  });\n});\n\n\nfunction chain(stream, state, f) {\n  state.tokenize = f;\n  return f(stream, state);\n}\n\nfunction tokenBase(stream, state) {\n  // String\n  var ch = stream.peek();\n  if (ch == \"'\" || ch == '\"') {\n    stream.next();\n    return chain(stream, state, tokenString(ch, \"string\"));\n  }\n  // Comment\n  else if (ch == \"/\") {\n    stream.next();\n    if (stream.eat(\"*\")) {\n      return chain(stream, state, tokenComment);\n    } else if (stream.eat(\"/\")) {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n    stream.backUp(1);\n  }\n  // Decimal\n  else if (/[+\\-\\d\\.]/.test(ch)) {\n    if (stream.match(/^[+-]?[0-9]*\\.[0-9]*([esdx][+-]?[0-9]+)?/i) ||\n        stream.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i) ||\n        stream.match(/^[+-]?\\d+/)) {\n      return \"number\";\n    }\n  }\n  // Hash\n  else if (ch == \"#\") {\n    stream.next();\n    // Symbol with string syntax\n    ch = stream.peek();\n    if (ch == '\"') {\n      stream.next();\n      return chain(stream, state, tokenString('\"', \"string\"));\n    }\n    // Binary number\n    else if (ch == \"b\") {\n      stream.next();\n      stream.eatWhile(/[01]/);\n      return \"number\";\n    }\n    // Hex number\n    else if (ch == \"x\") {\n      stream.next();\n      stream.eatWhile(/[\\da-f]/i);\n      return \"number\";\n    }\n    // Octal number\n    else if (ch == \"o\") {\n      stream.next();\n      stream.eatWhile(/[0-7]/);\n      return \"number\";\n    }\n    // Token concatenation in macros\n    else if (ch == '#') {\n      stream.next();\n      return \"punctuation\";\n    }\n    // Sequence literals\n    else if ((ch == '[') || (ch == '(')) {\n      stream.next();\n      return \"bracket\";\n      // Hash symbol\n    } else if (stream.match(/f|t|all-keys|include|key|next|rest/i)) {\n      return \"atom\";\n    } else {\n      stream.eatWhile(/[-a-zA-Z]/);\n      return \"error\";\n    }\n  } else if (ch == \"~\") {\n    stream.next();\n    ch = stream.peek();\n    if (ch == \"=\") {\n      stream.next();\n      ch = stream.peek();\n      if (ch == \"=\") {\n        stream.next();\n        return \"operator\";\n      }\n      return \"operator\";\n    }\n    return \"operator\";\n  } else if (ch == \":\") {\n    stream.next();\n    ch = stream.peek();\n    if (ch == \"=\") {\n      stream.next();\n      return \"operator\";\n    } else if (ch == \":\") {\n      stream.next();\n      return \"punctuation\";\n    }\n  } else if (\"[](){}\".indexOf(ch) != -1) {\n    stream.next();\n    return \"bracket\";\n  } else if (\".,\".indexOf(ch) != -1) {\n    stream.next();\n    return \"punctuation\";\n  } else if (stream.match(\"end\")) {\n    return \"keyword\";\n  }\n  for (var name in patterns) {\n    if (patterns.hasOwnProperty(name)) {\n      var pattern = patterns[name];\n      if ((pattern instanceof Array && some(pattern, function(p) {\n        return stream.match(p);\n      })) || stream.match(pattern))\n        return patternStyles[name];\n    }\n  }\n  if (/[+\\-*\\/^=<>&|]/.test(ch)) {\n    stream.next();\n    return \"operator\";\n  }\n  if (stream.match(\"define\")) {\n    return \"def\";\n  } else {\n    stream.eatWhile(/[\\w\\-]/);\n    // Keyword\n    if (wordLookup.hasOwnProperty(stream.current())) {\n      return styleLookup[stream.current()];\n    } else if (stream.current().match(symbol)) {\n      return \"variable\";\n    } else {\n      stream.next();\n      return \"variableName.standard\";\n    }\n  }\n}\n\nfunction tokenComment(stream, state) {\n  var maybeEnd = false, maybeNested = false, nestedCount = 0, ch;\n  while ((ch = stream.next())) {\n    if (ch == \"/\" && maybeEnd) {\n      if (nestedCount > 0) {\n        nestedCount--;\n      } else {\n        state.tokenize = tokenBase;\n        break;\n      }\n    } else if (ch == \"*\" && maybeNested) {\n      nestedCount++;\n    }\n    maybeEnd = (ch == \"*\");\n    maybeNested = (ch == \"/\");\n  }\n  return \"comment\";\n}\n\nfunction tokenString(quote, style) {\n  return function(stream, state) {\n    var escaped = false, next, end = false;\n    while ((next = stream.next()) != null) {\n      if (next == quote && !escaped) {\n        end = true;\n        break;\n      }\n      escaped = !escaped && next == \"\\\\\";\n    }\n    if (end || !escaped) {\n      state.tokenize = tokenBase;\n    }\n    return style;\n  };\n}\n\n// Interface\nexport const dylan = {\n  name: \"dylan\",\n  startState: function() {\n    return {\n      tokenize: tokenBase,\n      currentIndent: 0\n    };\n  },\n  token: function(stream, state) {\n    if (stream.eatSpace())\n      return null;\n    var style = state.tokenize(stream, state);\n    return style;\n  },\n  languageData: {\n    commentTokens: {block: {open: \"/*\", close: \"*/\"}}\n  }\n};\n\n"],"names":["forEach","arr","f","i","length","some","words","unnamedDefinition","namedDefinition","typeParameterizedDefinition","otherParameterizedDefinition","constantSimpleDefinition","variableSimpleDefinition","otherSimpleDefinition","statement","separator","other","signalingCalls","concat","symbolPattern","symbol","RegExp","patterns","symbolKeyword","symbolClass","symbolGlobal","symbolConstant","patternStyles","patternName","hasOwnProperty","styles","wordLookup","styleLookup","chain","stream","state","tokenize","tokenBase","ch","peek","next","tokenString","eat","tokenComment","skipToEnd","backUp","test","match","eatWhile","indexOf","name","pattern","Array","p","current","maybeEnd","maybeNested","nestedCount","quote","style","escaped","end","type","word","dylan","startState","currentIndent","token","eatSpace","languageData","commentTokens","block","open","close"],"mappings":"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","x_google_ignoreList":[0]}