You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			197 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			197 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			JavaScript
		
	
"use strict";
 | 
						|
(self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] = self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] || []).push([[4038],{
 | 
						|
 | 
						|
/***/ 44038:
 | 
						|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
 | 
						|
 | 
						|
__webpack_require__.r(__webpack_exports__);
 | 
						|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
 | 
						|
/* harmony export */   yacas: () => (/* binding */ yacas)
 | 
						|
/* harmony export */ });
 | 
						|
function words(str) {
 | 
						|
  var obj = {}, words = str.split(" ");
 | 
						|
  for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
 | 
						|
  return obj;
 | 
						|
}
 | 
						|
 | 
						|
var bodiedOps = words("Assert BackQuote D Defun Deriv For ForEach FromFile " +
 | 
						|
                      "FromString Function Integrate InverseTaylor Limit " +
 | 
						|
                      "LocalSymbols Macro MacroRule MacroRulePattern " +
 | 
						|
                      "NIntegrate Rule RulePattern Subst TD TExplicitSum " +
 | 
						|
                      "TSum Taylor Taylor1 Taylor2 Taylor3 ToFile " +
 | 
						|
                      "ToStdout ToString TraceRule Until While");
 | 
						|
 | 
						|
// patterns
 | 
						|
var pFloatForm  = "(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)";
 | 
						|
var pIdentifier = "(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)";
 | 
						|
 | 
						|
// regular expressions
 | 
						|
var reFloatForm    = new RegExp(pFloatForm);
 | 
						|
var reIdentifier   = new RegExp(pIdentifier);
 | 
						|
var rePattern      = new RegExp(pIdentifier + "?_" + pIdentifier);
 | 
						|
var reFunctionLike = new RegExp(pIdentifier + "\\s*\\(");
 | 
						|
 | 
						|
function tokenBase(stream, state) {
 | 
						|
  var ch;
 | 
						|
 | 
						|
  // get next character
 | 
						|
  ch = stream.next();
 | 
						|
 | 
						|
  // string
 | 
						|
  if (ch === '"') {
 | 
						|
    state.tokenize = tokenString;
 | 
						|
    return state.tokenize(stream, state);
 | 
						|
  }
 | 
						|
 | 
						|
  // comment
 | 
						|
  if (ch === '/') {
 | 
						|
    if (stream.eat('*')) {
 | 
						|
      state.tokenize = tokenComment;
 | 
						|
      return state.tokenize(stream, state);
 | 
						|
    }
 | 
						|
    if (stream.eat("/")) {
 | 
						|
      stream.skipToEnd();
 | 
						|
      return "comment";
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  // go back one character
 | 
						|
  stream.backUp(1);
 | 
						|
 | 
						|
  // update scope info
 | 
						|
  var m = stream.match(/^(\w+)\s*\(/, false);
 | 
						|
  if (m !== null && bodiedOps.hasOwnProperty(m[1]))
 | 
						|
    state.scopes.push('bodied');
 | 
						|
 | 
						|
  var scope = currentScope(state);
 | 
						|
 | 
						|
  if (scope === 'bodied' && ch === '[')
 | 
						|
    state.scopes.pop();
 | 
						|
 | 
						|
  if (ch === '[' || ch === '{' || ch === '(')
 | 
						|
    state.scopes.push(ch);
 | 
						|
 | 
						|
  scope = currentScope(state);
 | 
						|
 | 
						|
  if (scope === '[' && ch === ']' ||
 | 
						|
      scope === '{' && ch === '}' ||
 | 
						|
      scope === '(' && ch === ')')
 | 
						|
    state.scopes.pop();
 | 
						|
 | 
						|
  if (ch === ';') {
 | 
						|
    while (scope === 'bodied') {
 | 
						|
      state.scopes.pop();
 | 
						|
      scope = currentScope(state);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  // look for ordered rules
 | 
						|
  if (stream.match(/\d+ *#/, true, false)) {
 | 
						|
    return 'qualifier';
 | 
						|
  }
 | 
						|
 | 
						|
  // look for numbers
 | 
						|
  if (stream.match(reFloatForm, true, false)) {
 | 
						|
    return 'number';
 | 
						|
  }
 | 
						|
 | 
						|
  // look for placeholders
 | 
						|
  if (stream.match(rePattern, true, false)) {
 | 
						|
    return 'variableName.special';
 | 
						|
  }
 | 
						|
 | 
						|
  // match all braces separately
 | 
						|
  if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) {
 | 
						|
    return 'bracket';
 | 
						|
  }
 | 
						|
 | 
						|
  // literals looking like function calls
 | 
						|
  if (stream.match(reFunctionLike, true, false)) {
 | 
						|
    stream.backUp(1);
 | 
						|
    return 'variableName.function';
 | 
						|
  }
 | 
						|
 | 
						|
  // all other identifiers
 | 
						|
  if (stream.match(reIdentifier, true, false)) {
 | 
						|
    return 'variable';
 | 
						|
  }
 | 
						|
 | 
						|
  // operators; note that operators like @@ or /; are matched separately for each symbol.
 | 
						|
  if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%|#)/, true, false)) {
 | 
						|
    return 'operator';
 | 
						|
  }
 | 
						|
 | 
						|
  // everything else is an error
 | 
						|
  return 'error';
 | 
						|
}
 | 
						|
 | 
						|
function tokenString(stream, state) {
 | 
						|
  var next, end = false, escaped = false;
 | 
						|
  while ((next = stream.next()) != null) {
 | 
						|
    if (next === '"' && !escaped) {
 | 
						|
      end = true;
 | 
						|
      break;
 | 
						|
    }
 | 
						|
    escaped = !escaped && next === '\\';
 | 
						|
  }
 | 
						|
  if (end && !escaped) {
 | 
						|
    state.tokenize = tokenBase;
 | 
						|
  }
 | 
						|
  return 'string';
 | 
						|
};
 | 
						|
 | 
						|
function tokenComment(stream, state) {
 | 
						|
  var prev, next;
 | 
						|
  while((next = stream.next()) != null) {
 | 
						|
    if (prev === '*' && next === '/') {
 | 
						|
      state.tokenize = tokenBase;
 | 
						|
      break;
 | 
						|
    }
 | 
						|
    prev = next;
 | 
						|
  }
 | 
						|
  return 'comment';
 | 
						|
}
 | 
						|
 | 
						|
function currentScope(state) {
 | 
						|
  var scope = null;
 | 
						|
  if (state.scopes.length > 0)
 | 
						|
    scope = state.scopes[state.scopes.length - 1];
 | 
						|
  return scope;
 | 
						|
}
 | 
						|
 | 
						|
const yacas = {
 | 
						|
  name: "yacas",
 | 
						|
  startState: function() {
 | 
						|
    return {
 | 
						|
      tokenize: tokenBase,
 | 
						|
      scopes: []
 | 
						|
    };
 | 
						|
  },
 | 
						|
  token: function(stream, state) {
 | 
						|
    if (stream.eatSpace()) return null;
 | 
						|
    return state.tokenize(stream, state);
 | 
						|
  },
 | 
						|
  indent: function(state, textAfter, cx) {
 | 
						|
    if (state.tokenize !== tokenBase && state.tokenize !== null)
 | 
						|
      return null;
 | 
						|
 | 
						|
    var delta = 0;
 | 
						|
    if (textAfter === ']' || textAfter === '];' ||
 | 
						|
        textAfter === '}' || textAfter === '};' ||
 | 
						|
        textAfter === ');')
 | 
						|
      delta = -1;
 | 
						|
 | 
						|
    return (state.scopes.length + delta) * cx.unit;
 | 
						|
  },
 | 
						|
 | 
						|
  languageData: {
 | 
						|
    electricInput: /[{}\[\]()\;]/,
 | 
						|
    commentTokens: {line: "//", block: {open: "/*", close: "*/"}}
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
/***/ })
 | 
						|
 | 
						|
}]);
 | 
						|
//# sourceMappingURL=4038.edb04f3d9d68204491ba.js.map?v=edb04f3d9d68204491ba
 |