{"version":3,"file":"yacas-cn_NTwBk.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/yacas.js"],"sourcesContent":["function words(str) {\n  var obj = {}, words = str.split(\" \");\n  for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n  return obj;\n}\n\nvar bodiedOps = words(\"Assert BackQuote D Defun Deriv For ForEach FromFile \" +\n                      \"FromString Function Integrate InverseTaylor Limit \" +\n                      \"LocalSymbols Macro MacroRule MacroRulePattern \" +\n                      \"NIntegrate Rule RulePattern Subst TD TExplicitSum \" +\n                      \"TSum Taylor Taylor1 Taylor2 Taylor3 ToFile \" +\n                      \"ToStdout ToString TraceRule Until While\");\n\n// patterns\nvar pFloatForm  = \"(?:(?:\\\\.\\\\d+|\\\\d+\\\\.\\\\d*|\\\\d+)(?:[eE][+-]?\\\\d+)?)\";\nvar pIdentifier = \"(?:[a-zA-Z\\\\$'][a-zA-Z0-9\\\\$']*)\";\n\n// regular expressions\nvar reFloatForm    = new RegExp(pFloatForm);\nvar reIdentifier   = new RegExp(pIdentifier);\nvar rePattern      = new RegExp(pIdentifier + \"?_\" + pIdentifier);\nvar reFunctionLike = new RegExp(pIdentifier + \"\\\\s*\\\\(\");\n\nfunction tokenBase(stream, state) {\n  var ch;\n\n  // get next character\n  ch = stream.next();\n\n  // string\n  if (ch === '\"') {\n    state.tokenize = tokenString;\n    return state.tokenize(stream, state);\n  }\n\n  // comment\n  if (ch === '/') {\n    if (stream.eat('*')) {\n      state.tokenize = tokenComment;\n      return state.tokenize(stream, state);\n    }\n    if (stream.eat(\"/\")) {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n  }\n\n  // go back one character\n  stream.backUp(1);\n\n  // update scope info\n  var m = stream.match(/^(\\w+)\\s*\\(/, false);\n  if (m !== null && bodiedOps.hasOwnProperty(m[1]))\n    state.scopes.push('bodied');\n\n  var scope = currentScope(state);\n\n  if (scope === 'bodied' && ch === '[')\n    state.scopes.pop();\n\n  if (ch === '[' || ch === '{' || ch === '(')\n    state.scopes.push(ch);\n\n  scope = currentScope(state);\n\n  if (scope === '[' && ch === ']' ||\n      scope === '{' && ch === '}' ||\n      scope === '(' && ch === ')')\n    state.scopes.pop();\n\n  if (ch === ';') {\n    while (scope === 'bodied') {\n      state.scopes.pop();\n      scope = currentScope(state);\n    }\n  }\n\n  // look for ordered rules\n  if (stream.match(/\\d+ *#/, true, false)) {\n    return 'qualifier';\n  }\n\n  // look for numbers\n  if (stream.match(reFloatForm, true, false)) {\n    return 'number';\n  }\n\n  // look for placeholders\n  if (stream.match(rePattern, true, false)) {\n    return 'variableName.special';\n  }\n\n  // match all braces separately\n  if (stream.match(/(?:\\[|\\]|{|}|\\(|\\))/, true, false)) {\n    return 'bracket';\n  }\n\n  // literals looking like function calls\n  if (stream.match(reFunctionLike, true, false)) {\n    stream.backUp(1);\n    return 'variableName.function';\n  }\n\n  // all other identifiers\n  if (stream.match(reIdentifier, true, false)) {\n    return 'variable';\n  }\n\n  // operators; note that operators like @@ or /; are matched separately for each symbol.\n  if (stream.match(/(?:\\\\|\\+|\\-|\\*|\\/|,|;|\\.|:|@|~|=|>|<|&|\\||_|`|'|\\^|\\?|!|%|#)/, true, false)) {\n    return 'operator';\n  }\n\n  // everything else is an error\n  return 'error';\n}\n\nfunction 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\nfunction tokenComment(stream, state) {\n  var prev, next;\n  while((next = stream.next()) != null) {\n    if (prev === '*' && next === '/') {\n      state.tokenize = tokenBase;\n      break;\n    }\n    prev = next;\n  }\n  return 'comment';\n}\n\nfunction currentScope(state) {\n  var scope = null;\n  if (state.scopes.length > 0)\n    scope = state.scopes[state.scopes.length - 1];\n  return scope;\n}\n\nexport const yacas = {\n  name: \"yacas\",\n  startState: function() {\n    return {\n      tokenize: tokenBase,\n      scopes: []\n    };\n  },\n  token: function(stream, state) {\n    if (stream.eatSpace()) return null;\n    return state.tokenize(stream, state);\n  },\n  indent: function(state, textAfter, cx) {\n    if (state.tokenize !== tokenBase && state.tokenize !== null)\n      return null;\n\n    var delta = 0;\n    if (textAfter === ']' || textAfter === '];' ||\n        textAfter === '}' || textAfter === '};' ||\n        textAfter === ');')\n      delta = -1;\n\n    return (state.scopes.length + delta) * cx.unit;\n  },\n\n  languageData: {\n    electricInput: /[{}\\[\\]()\\;]/,\n    commentTokens: {line: \"//\", block: {open: \"/*\", close: \"*/\"}}\n  }\n};\n"],"names":["bodiedOps","str","obj","words","split","i","length","pIdentifier","reFloatForm","RegExp","reIdentifier","rePattern","reFunctionLike","tokenBase","stream","state","ch","next","tokenize","tokenString","eat","tokenComment","skipToEnd","backUp","m","match","hasOwnProperty","scopes","push","scope","currentScope","pop","end","escaped","prev","yacas","name","startState","token","eatSpace","indent","textAfter","cx","delta","unit","languageData","electricInput","commentTokens","line","block","open","close"],"mappings":"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","x_google_ignoreList":[0]}