{"version":3,"file":"mathematica-BeWz3n7v.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/mathematica.js"],"sourcesContent":["// used pattern building blocks\nvar Identifier = '[a-zA-Z\\\\$][a-zA-Z0-9\\\\$]*';\nvar pBase      = \"(?:\\\\d+)\";\nvar pFloat     = \"(?:\\\\.\\\\d+|\\\\d+\\\\.\\\\d*|\\\\d+)\";\nvar pFloatBase = \"(?:\\\\.\\\\w+|\\\\w+\\\\.\\\\w*|\\\\w+)\";\nvar pPrecision = \"(?:`(?:`?\"+pFloat+\")?)\";\n\n// regular expressions\nvar reBaseForm        = new RegExp('(?:'+pBase+'(?:\\\\^\\\\^'+pFloatBase+pPrecision+'?(?:\\\\*\\\\^[+-]?\\\\d+)?))');\nvar reFloatForm       = new RegExp('(?:' + pFloat + pPrecision + '?(?:\\\\*\\\\^[+-]?\\\\d+)?)');\nvar reIdInContext     = new RegExp('(?:`?)(?:' + Identifier + ')(?:`(?:' + Identifier + '))*(?:`?)');\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.commentLevel++;\n      state.tokenize = tokenComment;\n      return state.tokenize(stream, state);\n    }\n  }\n\n  // go back one character\n  stream.backUp(1);\n\n  // look for numbers\n  // Numbers in a baseform\n  if (stream.match(reBaseForm, true, false)) {\n    return 'number';\n  }\n\n  // Mathematica numbers. Floats (1.2, .2, 1.) can have optionally a precision (`float) or an accuracy definition\n  // (``float). Note: while 1.2` is possible 1.2`` is not. At the end an exponent (float*^+12) can follow.\n  if (stream.match(reFloatForm, true, false)) {\n    return 'number';\n  }\n\n  /* In[23] and Out[34] */\n  if (stream.match(/(?:In|Out)\\[[0-9]*\\]/, true, false)) {\n    return 'atom';\n  }\n\n  // usage\n  if (stream.match(/([a-zA-Z\\$][a-zA-Z0-9\\$]*(?:`[a-zA-Z0-9\\$]+)*::usage)/, true, false)) {\n    return 'meta';\n  }\n\n  // message\n  if (stream.match(/([a-zA-Z\\$][a-zA-Z0-9\\$]*(?:`[a-zA-Z0-9\\$]+)*::[a-zA-Z\\$][a-zA-Z0-9\\$]*):?/, true, false)) {\n    return 'string.special';\n  }\n\n  // this makes a look-ahead match for something like variable:{_Integer}\n  // the match is then forwarded to the mma-patterns tokenizer.\n  if (stream.match(/([a-zA-Z\\$][a-zA-Z0-9\\$]*\\s*:)(?:(?:[a-zA-Z\\$][a-zA-Z0-9\\$]*)|(?:[^:=>~@\\^\\&\\*\\)\\[\\]'\\?,\\|])).*/, true, false)) {\n    return 'variableName.special';\n  }\n\n  // catch variables which are used together with Blank (_), BlankSequence (__) or BlankNullSequence (___)\n  // Cannot start with a number, but can have numbers at any other position. Examples\n  // blub__Integer, a1_, b34_Integer32\n  if (stream.match(/[a-zA-Z\\$][a-zA-Z0-9\\$]*_+[a-zA-Z\\$][a-zA-Z0-9\\$]*/, true, false)) {\n    return 'variableName.special';\n  }\n  if (stream.match(/[a-zA-Z\\$][a-zA-Z0-9\\$]*_+/, true, false)) {\n    return 'variableName.special';\n  }\n  if (stream.match(/_+[a-zA-Z\\$][a-zA-Z0-9\\$]*/, true, false)) {\n    return 'variableName.special';\n  }\n\n  // Named characters in Mathematica, like \\[Gamma].\n  if (stream.match(/\\\\\\[[a-zA-Z\\$][a-zA-Z0-9\\$]*\\]/, true, false)) {\n    return 'character';\n  }\n\n  // Match all braces separately\n  if (stream.match(/(?:\\[|\\]|{|}|\\(|\\))/, true, false)) {\n    return 'bracket';\n  }\n\n  // Catch Slots (#, ##, #3, ##9 and the V10 named slots #name). I have never seen someone using more than one digit after #, so we match\n  // only one.\n  if (stream.match(/(?:#[a-zA-Z\\$][a-zA-Z0-9\\$]*|#+[0-9]?)/, true, false)) {\n    return 'variableName.constant';\n  }\n\n  // Literals like variables, keywords, functions\n  if (stream.match(reIdInContext, true, false)) {\n    return 'keyword';\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  stream.next(); // advance the stream.\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(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\nexport const mathematica = {\n  name: \"mathematica\",\n  startState: function() {return {tokenize: tokenBase, commentLevel: 0};},\n  token: function(stream, state) {\n    if (stream.eatSpace()) return null;\n    return state.tokenize(stream, state);\n  },\n  languageData: {\n    commentTokens: {block: {open: \"(*\", close: \"*)\"}}\n  }\n}\n\n"],"names":["Identifier","pFloat","pPrecision","reBaseForm","RegExp","reFloatForm","reIdInContext","tokenBase","stream","state","ch","next","tokenize","tokenString","eat","commentLevel","tokenComment","backUp","match","end","escaped","prev","mathematica","name","startState","token","eatSpace","languageData","commentTokens","block","open","close"],"mappings":"gFACA,IAAIA,EAAa,6BAEbC,EAAa,+BAEbC,EAAa,YAAYD,EAAO,MAGhCE,EAAoB,IAAIC,OAAO,mDAAmCF,EAAW,2BAC7EG,EAAoB,IAAID,OAAO,MAAQH,EAASC,EAAa,0BAC7DI,EAAoB,IAAIF,OAAO,YAAcJ,EAAa,WAAaA,EAAa,aAExF,SAASO,EAAUC,EAAQC,GACzB,IAAIC,EAMJ,MAAW,OAHXA,EAAKF,EAAOG,SAIVF,EAAMG,SAAWC,EACVJ,EAAMG,SAASJ,EAAQC,IAIrB,MAAPC,GACEF,EAAOM,IAAI,MACbL,EAAMM,eACNN,EAAMG,SAAWI,EACVP,EAAMG,SAASJ,EAAQC,KAKlCD,EAAOS,OAAO,GAIVT,EAAOU,MAAMf,GAAY,GAAM,IAM/BK,EAAOU,MAAMb,GAAa,GAAM,GAL3B,SAULG,EAAOU,MAAM,wBAAwB,GAAM,GACtC,OAILV,EAAOU,MAAM,yDAAyD,GAAM,GACvE,OAILV,EAAOU,MAAM,8EAA8E,GAAM,GAC5F,iBAKLV,EAAOU,MAAM,mGAAmG,GAAM,IAOtHV,EAAOU,MAAM,sDAAsD,GAAM,IAGzEV,EAAOU,MAAM,8BAA8B,GAAM,IAGjDV,EAAOU,MAAM,8BAA8B,GAAM,GAZ5C,uBAiBLV,EAAOU,MAAM,kCAAkC,GAAM,GAChD,YAILV,EAAOU,MAAM,uBAAuB,GAAM,GACrC,UAKLV,EAAOU,MAAM,0CAA0C,GAAM,GACxD,wBAILV,EAAOU,MAAMZ,GAAe,GAAM,GAC7B,UAILE,EAAOU,MAAM,8DAA8D,GAAM,GAC5E,YAITV,EAAOG,OACA,SACT,CAEA,SAASE,EAAYL,EAAQC,GAE3B,IADA,IAAIE,EAAMQ,GAAM,EAAOC,GAAU,EACA,OAAzBT,EAAOH,EAAOG,SAAiB,CACrC,GAAa,MAATA,IAAiBS,EAAS,CAC5BD,GAAM,EACN,KACF,CACAC,GAAWA,GAAoB,OAATT,CACxB,CAIA,OAHIQ,IAAQC,IACVX,EAAMG,SAAWL,GAEZ,QACT,CAEA,SAASS,EAAaR,EAAQC,GAE5B,IADA,IAAIY,EAAMV,EACJF,EAAMM,aAAe,GAA+B,OAAzBJ,EAAOH,EAAOG,SAChC,MAATU,GAAyB,MAATV,GAAcF,EAAMM,eAC3B,MAATM,GAAyB,MAATV,GAAcF,EAAMM,eACxCM,EAAOV,EAKT,OAHIF,EAAMM,cAAgB,IACxBN,EAAMG,SAAWL,GAEZ,SACT,CAEY,MAACe,EAAc,CACzBC,KAAM,cACNC,WAAY,WAAY,MAAO,CAACZ,SAAUL,EAAWQ,aAAc,EAAG,EACtEU,MAAO,SAASjB,EAAQC,GACtB,OAAID,EAAOkB,WAAmB,KACvBjB,EAAMG,SAASJ,EAAQC,EAChC,EACAkB,aAAc,CACZC,cAAe,CAACC,MAAO,CAACC,KAAM,KAAMC,MAAO","x_google_ignoreList":[0]}