From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- .../src/formula_evaluator.js | 41 +++ .../math-expression-evaluator/src/lexer.js | 309 +++++++++++++++++++++ .../math-expression-evaluator/src/math_function.js | 120 ++++++++ .../math-expression-evaluator/src/postfix.js | 50 ++++ .../src/postfix_evaluator.js | 105 +++++++ 5 files changed, 625 insertions(+) create mode 100755 node_modules/math-expression-evaluator/src/formula_evaluator.js create mode 100755 node_modules/math-expression-evaluator/src/lexer.js create mode 100755 node_modules/math-expression-evaluator/src/math_function.js create mode 100755 node_modules/math-expression-evaluator/src/postfix.js create mode 100755 node_modules/math-expression-evaluator/src/postfix_evaluator.js (limited to 'node_modules/math-expression-evaluator/src') diff --git a/node_modules/math-expression-evaluator/src/formula_evaluator.js b/node_modules/math-expression-evaluator/src/formula_evaluator.js new file mode 100755 index 00000000..72db4eb5 --- /dev/null +++ b/node_modules/math-expression-evaluator/src/formula_evaluator.js @@ -0,0 +1,41 @@ +var Mexp=require('./postfix_evaluator.js'); +Mexp.prototype.formulaEval = function () { + "use strict"; + var stack=[],pop1,pop2,pop3; + var disp=[]; + var temp=''; + var arr=this.value; + for(var i=0;i"+pop2.value+""+arr[i].show+""+pop1.value+"",type:10}); + else disp.push({value:(pop2.type!=1?"(":"")+pop2.value+(pop2.type!=1?")":"")+""+pop1.value+"",type:1}); + } + else if(arr[i].type===2||arr[i].type===9){ + pop1=disp.pop(); + pop2=disp.pop(); + disp.push({value:(pop2.type!=1?"(":"")+pop2.value+(pop2.type!=1?")":"")+arr[i].show+(pop1.type!=1?"(":"")+pop1.value+(pop1.type!=1?")":""),type:arr[i].type}); + } + else if(arr[i].type===12){ + pop1=disp.pop(); + pop2=disp.pop(); + pop3=disp.pop(); + disp.push({value:arr[i].show+"("+pop3.value+","+pop2.value+","+pop1.value+")",type:12}); + } + } + return disp[0].value; +}; +module.exports=Mexp; \ No newline at end of file diff --git a/node_modules/math-expression-evaluator/src/lexer.js b/node_modules/math-expression-evaluator/src/lexer.js new file mode 100755 index 00000000..14755671 --- /dev/null +++ b/node_modules/math-expression-evaluator/src/lexer.js @@ -0,0 +1,309 @@ +var Mexp=require('./math_function.js'); + function inc(arr,val){ + for(var i=0;i(newAr.length-2)?newAr.length-1:inpStr.length-i);x>0;x--){ + for(y=0;yprep)stack.push(elem); + else { + while(prep>=pre&&!flag||flag&&pre1) { + throw(new Mexp.exception("Uncaught Syntax error")); + } + return stack[0].value>1000000000000000?"Infinity":parseFloat(stack[0].value.toFixed(15)); +}; +Mexp.eval=function(str,tokens,obj){ + if (typeof tokens==="undefined") { + return this.lex(str).toPostfix().postfixEval(); + } + else if (typeof obj==="undefined") { + if (typeof tokens.length!=="undefined") + return this.lex(str,tokens).toPostfix().postfixEval(); + else + return this.lex(str).toPostfix().postfixEval(tokens); + } + else + return this.lex(str,tokens).toPostfix().postfixEval(obj); +}; +module.exports=Mexp; \ No newline at end of file -- cgit v1.2.3