KitsuneOffline/gstatic/external_hosted/expr_eval/dist/bundle.min.js

27 lines
20 KiB
JavaScript

/**
* @license
* The MIT License (MIT)
*
* Copyright (c) 2015 Matthew Crumley
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.exprEval=e()}(this,function(){"use strict";function t(t,e){this.type=t,this.value=void 0!==e&&null!==e?e:0}function e(e){return new t(Q,e)}function s(e){return new t(Y,e)}function r(e){return new t(Z,e)}function n(e,s,r,i,o){for(var a,h,p,u,c=[],l=[],f=0;f<e.length;f++){var v=e[f],x=v.type;if(x===K)c.push(v);else if(x===tt&&o.hasOwnProperty(v.value))v=new t(K,o[v.value]),c.push(v);else if(x===Y&&c.length>1)h=c.pop(),a=c.pop(),u=r[v.value],v=new t(K,u(a.value,h.value)),c.push(v);else if(x===Z&&c.length>2)p=c.pop(),h=c.pop(),a=c.pop(),"?"===v.value?c.push(a.value?h.value:p.value):(u=i[v.value],v=new t(K,u(a.value,h.value,p.value)),c.push(v));else if(x===Q&&c.length>0)a=c.pop(),u=s[v.value],v=new t(K,u(a.value)),c.push(v);else if(x===st){for(;c.length>0;)l.push(c.shift());l.push(new t(st,n(v.value,s,r,i,o)))}else if(x===rt&&c.length>0)a=c.pop(),c.push(new t(K,a.value[v.value]));else{for(;c.length>0;)l.push(c.shift());l.push(v)}}for(;c.length>0;)l.push(c.shift());return l}function i(n,o,a){for(var h=[],p=0;p<n.length;p++){var u=n[p],c=u.type;if(c===tt&&u.value===o)for(var l=0;l<a.tokens.length;l++){var f,v=a.tokens[l];f=v.type===Q?e(v.value):v.type===Y?s(v.value):v.type===Z?r(v.value):new t(v.type,v.value),h.push(f)}else c===st?h.push(new t(st,i(u.value,o,a))):h.push(u)}return h}function o(t,e,s){for(var r,n,i,a,h=[],p=0;p<t.length;p++){var u=t[p],c=u.type;if(c===K)h.push(u.value);else if(c===Y)n=h.pop(),r=h.pop(),a=e.binaryOps[u.value],h.push(a(r,n));else if(c===Z)i=h.pop(),n=h.pop(),r=h.pop(),"?"===u.value?h.push(o(r?n:i,e,s)):(a=e.ternaryOps[u.value],h.push(a(r,n,i)));else if(c===tt)if(u.value in e.functions)h.push(e.functions[u.value]);else{var l=s[u.value];if(void 0===l)throw new Error("undefined variable: "+u.value);h.push(l)}else if(c===Q)r=h.pop(),a=e.unaryOps[u.value],h.push(a(r));else if(c===et){for(var f=u.value,v=[];f-- >0;)v.unshift(h.pop());if(!(a=h.pop()).apply||!a.call)throw new Error(a+" is not a function");h.push(a.apply(void 0,v))}else if(c===st)h.push(u.value);else{if(c!==rt)throw new Error("invalid Expression");r=h.pop(),h.push(r[u.value])}}if(h.length>1)throw new Error("invalid Expression (parity)");return h[0]}function a(t,e){for(var s,r,n,i,o=[],p=0;p<t.length;p++){var u=t[p],c=u.type;if(c===K)"number"==typeof u.value&&u.value<0?o.push("("+u.value+")"):o.push(h(u.value));else if(c===Y)r=o.pop(),s=o.pop(),i=u.value,e?"^"===i?o.push("Math.pow("+s+", "+r+")"):"and"===i?o.push("(!!"+s+" && !!"+r+")"):"or"===i?o.push("(!!"+s+" || !!"+r+")"):"||"===i?o.push("(String("+s+") + String("+r+"))"):"=="===i?o.push("("+s+" === "+r+")"):"!="===i?o.push("("+s+" !== "+r+")"):o.push("("+s+" "+i+" "+r+")"):o.push("("+s+" "+i+" "+r+")");else if(c===Z){if(n=o.pop(),r=o.pop(),s=o.pop(),"?"!==(i=u.value))throw new Error("invalid Expression");o.push("("+s+" ? "+r+" : "+n+")")}else if(c===tt)o.push(u.value);else if(c===Q)s=o.pop(),"-"===(i=u.value)||"+"===i?o.push("("+i+s+")"):e?"not"===i?o.push("(!"+s+")"):"!"===i?o.push("fac("+s+")"):o.push(i+"("+s+")"):"!"===i?o.push("("+s+"!)"):o.push("("+i+" "+s+")");else if(c===et){for(var l=u.value,f=[];l-- >0;)f.unshift(o.pop());i=o.pop(),o.push(i+"("+f.join(", ")+")")}else if(c===rt)s=o.pop(),o.push(s+"."+u.value);else{if(c!==st)throw new Error("invalid Expression");o.push("("+a(u.value,e)+")")}}if(o.length>1)throw new Error("invalid Expression (parity)");return String(o[0])}function h(t){return"string"==typeof t?JSON.stringify(t).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029"):t}function p(t,e){for(var s=0;s<t.length;s++)if(t[s]===e)return!0;return!1}function u(t,e,s){for(var r=!!(s=s||{}).withMembers,n=null,i=0;i<t.length;i++){var o=t[i];o.type!==tt||p(e,o.value)?o.type===rt&&r&&null!==n?n+="."+o.value:o.type===st?u(o.value,e,s):null!==n&&(p(e,n)||e.push(n),n=null):r?null!==n?(p(e,n)||e.push(n),n=o.value):n=o.value:e.push(o.value)}null===n||p(e,n)||e.push(n)}function c(t,e){this.tokens=t,this.parser=e,this.unaryOps=e.unaryOps,this.binaryOps=e.binaryOps,this.ternaryOps=e.ternaryOps,this.functions=e.functions}function l(t,e,s){this.type=t,this.value=e,this.index=s}function f(t,e){this.pos=0,this.current=null,this.unaryOps=t.unaryOps,this.binaryOps=t.binaryOps,this.ternaryOps=t.ternaryOps,this.consts=t.consts,this.expression=e,this.savedPosition=0,this.savedCurrent=null,this.options=t.options}function v(t){return ot.hasOwnProperty(t)?ot[t]:t}function x(t,e,s){this.parser=t,this.tokens=e,this.current=null,this.nextToken=null,this.next(),this.savedCurrent=null,this.savedNextToken=null,this.allowMemberAccess=!1!==s.allowMemberAccess}function y(t,e){return Number(t)+Number(e)}function w(t,e){return t-e}function d(t,e){return t*e}function M(t,e){return t/e}function g(t,e){return t%e}function E(t,e){return""+t+e}function k(t,e){return t===e}function b(t,e){return t!==e}function m(t,e){return t>e}function T(t,e){return t<e}function A(t,e){return t>=e}function O(t,e){return t<=e}function N(t,e){return Boolean(t&&e)}function C(t,e){return Boolean(t||e)}function P(t,e){return p(e,t)}function I(t){return(Math.exp(t)-Math.exp(-t))/2}function S(t){return(Math.exp(t)+Math.exp(-t))/2}function R(t){return t===1/0?1:t===-1/0?-1:(Math.exp(t)-Math.exp(-t))/(Math.exp(t)+Math.exp(-t))}function F(t){return t===-1/0?t:Math.log(t+Math.sqrt(t*t+1))}function L(t){return Math.log(t+Math.sqrt(t*t-1))}function U(t){return Math.log((1+t)/(1-t))/2}function q(t){return Math.log(t)*Math.LOG10E}function B(t){return-t}function $(t){return!t}function G(t){return t<0?Math.ceil(t):Math.floor(t)}function _(t){return Math.random()*(t||1)}function j(t){return W(t+1)}function J(t){return isFinite(t)&&t===Math.round(t)}function W(t){var e,s;if(J(t)){if(t<=0)return isFinite(t)?1/0:NaN;if(t>171)return 1/0;for(var r=t-2,n=t-1;r>1;)n*=r,r--;return 0===n&&(n=1),n}if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*W(1-t));if(t>=171.35)return 1/0;if(t>85){var i=t*t,o=i*t,a=o*t,h=a*t;return Math.sqrt(2*Math.PI/t)*Math.pow(t/Math.E,t)*(1+1/(12*t)+1/(288*i)-139/(51840*o)-571/(2488320*a)+163879/(209018880*h)+5246819/(75246796800*h*t))}--t,s=ct[0];for(var p=1;p<ct.length;++p)s+=ct[p]/(t+p);return e=t+ut+.5,Math.sqrt(2*Math.PI)*Math.pow(e,t+.5)*Math.exp(-e)*s}function V(t){return String(t).length}function X(){for(var t=0,e=0,s=0;s<arguments.length;s++){var r,n=Math.abs(arguments[s]);e<n?(t=t*(r=e/n)*r+1,e=n):t+=n>0?(r=n/e)*r:n}return e===1/0?1/0:e*Math.sqrt(t)}function z(t,e,s){return t?e:s}function D(t,e){return void 0===e||0==+e?Math.round(t):(t=+t,e=-+e,isNaN(t)||"number"!=typeof e||e%1!=0?NaN:(t=t.toString().split("e"),t=Math.round(+(t[0]+"e"+(t[1]?+t[1]-e:-e))),+((t=t.toString().split("e"))[0]+"e"+(t[1]?+t[1]+e:e))))}function H(t){this.options=t||{},this.unaryOps={sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,sinh:Math.sinh||I,cosh:Math.cosh||S,tanh:Math.tanh||R,asinh:Math.asinh||F,acosh:Math.acosh||L,atanh:Math.atanh||U,sqrt:Math.sqrt,log:Math.log,ln:Math.log,lg:Math.log10||q,log10:Math.log10||q,abs:Math.abs,ceil:Math.ceil,floor:Math.floor,round:Math.round,trunc:Math.trunc||G,"-":B,"+":Number,exp:Math.exp,not:$,length:V,"!":j},this.binaryOps={"+":y,"-":w,"*":d,"/":M,"%":g,"^":Math.pow,"||":E,"==":k,"!=":b,">":m,"<":T,">=":A,"<=":O,and:N,or:C,in:P},this.ternaryOps={"?":z},this.functions={random:_,fac:j,min:Math.min,max:Math.max,hypot:Math.hypot||X,pyt:Math.hypot||X,pow:Math.pow,atan2:Math.atan2,if:z,gamma:W,roundTo:D},this.consts={E:Math.E,PI:Math.PI,true:!0,false:!1}}var K="INUMBER",Q="IOP1",Y="IOP2",Z="IOP3",tt="IVAR",et="IFUNCALL",st="IEXPR",rt="IMEMBER";t.prototype.toString=function(){switch(this.type){case K:case Q:case Y:case Z:case tt:return this.value;case et:return"CALL "+this.value;case rt:return"."+this.value;default:return"Invalid Instruction"}},c.prototype.simplify=function(t){return t=t||{},new c(n(this.tokens,this.unaryOps,this.binaryOps,this.ternaryOps,t),this.parser)},c.prototype.substitute=function(t,e){return e instanceof c||(e=this.parser.parse(String(e))),new c(i(this.tokens,t,e),this.parser)},c.prototype.evaluate=function(t){return t=t||{},o(this.tokens,this,t)},c.prototype.toString=function(){return a(this.tokens,!1)},c.prototype.symbols=function(t){t=t||{};var e=[];return u(this.tokens,e,t),e},c.prototype.variables=function(t){t=t||{};var e=[];u(this.tokens,e,t);var s=this.functions;return e.filter(function(t){return!(t in s)})},c.prototype.toJSFunction=function(t,e){var s=this,r=new Function(t,"with(this.functions) with (this.ternaryOps) with (this.binaryOps) with (this.unaryOps) { return "+a(this.simplify(e).tokens,!0)+"; }");return function(){return r.apply(s,arguments)}};var nt="TOP";l.prototype.toString=function(){return this.type+": "+this.value},f.prototype.newToken=function(t,e,s){return new l(t,e,null!=s?s:this.pos)},f.prototype.save=function(){this.savedPosition=this.pos,this.savedCurrent=this.current},f.prototype.restore=function(){this.pos=this.savedPosition,this.current=this.savedCurrent},f.prototype.next=function(){return this.pos>=this.expression.length?this.newToken("TEOF","EOF"):this.isWhitespace()||this.isComment()?this.next():this.isRadixInteger()||this.isNumber()||this.isOperator()||this.isString()||this.isParen()||this.isComma()||this.isNamedOp()||this.isConst()||this.isName()?this.current:void this.parseError('Unknown character "'+this.expression.charAt(this.pos)+'"')},f.prototype.isString=function(){var t=!1,e=this.pos,s=this.expression.charAt(e);if("'"===s||'"'===s)for(var r=this.expression.indexOf(s,e+1);r>=0&&this.pos<this.expression.length;){if(this.pos=r+1,"\\"!==this.expression.charAt(r-1)){var n=this.expression.substring(e+1,r);this.current=this.newToken("TSTRING",this.unescape(n),e),t=!0;break}r=this.expression.indexOf(s,r+1)}return t},f.prototype.isParen=function(){var t=this.expression.charAt(this.pos);return("("===t||")"===t)&&(this.current=this.newToken("TPAREN",t),this.pos++,!0)},f.prototype.isComma=function(){return","===this.expression.charAt(this.pos)&&(this.current=this.newToken("TCOMMA",","),this.pos++,!0)},f.prototype.isConst=function(){for(var t=this.pos,e=t;e<this.expression.length;e++){var s=this.expression.charAt(e);if(s.toUpperCase()===s.toLowerCase()&&(e===this.pos||"_"!==s&&"."!==s&&(s<"0"||s>"9")))break}if(e>t){var r=this.expression.substring(t,e);if(r in this.consts)return this.current=this.newToken("TNUMBER",this.consts[r]),this.pos+=r.length,!0}return!1},f.prototype.isNamedOp=function(){for(var t=this.pos,e=t;e<this.expression.length;e++){var s=this.expression.charAt(e);if(s.toUpperCase()===s.toLowerCase()&&(e===this.pos||"_"!==s&&(s<"0"||s>"9")))break}if(e>t){var r=this.expression.substring(t,e);if(this.isOperatorEnabled(r)&&(r in this.binaryOps||r in this.unaryOps||r in this.ternaryOps))return this.current=this.newToken(nt,r),this.pos+=r.length,!0}return!1},f.prototype.isName=function(){for(var t=this.pos,e=t,s=!1;e<this.expression.length;e++){var r=this.expression.charAt(e);if(r.toUpperCase()===r.toLowerCase()){if(e===this.pos&&"$"===r)continue;if(e===this.pos||!s||"_"!==r&&(r<"0"||r>"9"))break}else s=!0}if(s){var n=this.expression.substring(t,e);return this.current=this.newToken("TNAME",n),this.pos+=n.length,!0}return!1},f.prototype.isWhitespace=function(){for(var t=!1,e=this.expression.charAt(this.pos);!(" "!==e&&"\t"!==e&&"\n"!==e&&"\r"!==e||(t=!0,++this.pos>=this.expression.length));)e=this.expression.charAt(this.pos);return t};var it=/^[0-9a-f]{4}$/i;f.prototype.unescape=function(t){var e=t.indexOf("\\");if(e<0)return t;for(var s=t.substring(0,e);e>=0;){var r=t.charAt(++e);switch(r){case"'":s+="'";break;case'"':s+='"';break;case"\\":s+="\\";break;case"/":s+="/";break;case"b":s+="\b";break;case"f":s+="\f";break;case"n":s+="\n";break;case"r":s+="\r";break;case"t":s+="\t";break;case"u":var n=t.substring(e+1,e+5);it.test(n)||this.parseError("Illegal escape sequence: \\u"+n),s+=String.fromCharCode(parseInt(n,16)),e+=4;break;default:throw this.parseError('Illegal escape sequence: "\\'+r+'"')}++e;var i=t.indexOf("\\",e);s+=t.substring(e,i<0?t.length:i),e=i}return s},f.prototype.isComment=function(){return"/"===this.expression.charAt(this.pos)&&"*"===this.expression.charAt(this.pos+1)&&(this.pos=this.expression.indexOf("*/",this.pos)+2,1===this.pos&&(this.pos=this.expression.length),!0)},f.prototype.isRadixInteger=function(){var t=this.pos;if(t>=this.expression.length-2||"0"!==this.expression.charAt(t))return!1;++t;var e,s;if("x"===this.expression.charAt(t))e=16,s=/^[0-9a-f]$/i,++t;else{if("b"!==this.expression.charAt(t))return!1;e=2,s=/^[01]$/i,++t}for(var r=!1,n=t;t<this.expression.length;){var i=this.expression.charAt(t);if(!s.test(i))break;t++,r=!0}return r&&(this.current=this.newToken("TNUMBER",parseInt(this.expression.substring(n,t),e)),this.pos=t),r},f.prototype.isNumber=function(){for(var t,e=!1,s=this.pos,r=s,n=s,i=!1,o=!1;s<this.expression.length&&((t=this.expression.charAt(s))>="0"&&t<="9"||!i&&"."===t);)"."===t?i=!0:o=!0,s++,e=o;if(e&&(n=s),"e"===t||"E"===t){s++;for(var a=!0,h=!1;s<this.expression.length;){if(t=this.expression.charAt(s),!a||"+"!==t&&"-"!==t){if(!(t>="0"&&t<="9"))break;h=!0,a=!1}else a=!1;s++}h||(s=n)}return e?(this.current=this.newToken("TNUMBER",parseFloat(this.expression.substring(r,s))),this.pos=s):this.pos=n,e},f.prototype.isOperator=function(){var t=this.pos,e=this.expression.charAt(this.pos);if("+"===e||"-"===e||"*"===e||"/"===e||"%"===e||"^"===e||"?"===e||":"===e||"."===e)this.current=this.newToken(nt,e);else if("∙"===e||"•"===e)this.current=this.newToken(nt,"*");else if(">"===e)"="===this.expression.charAt(this.pos+1)?(this.current=this.newToken(nt,">="),this.pos++):this.current=this.newToken(nt,">");else if("<"===e)"="===this.expression.charAt(this.pos+1)?(this.current=this.newToken(nt,"<="),this.pos++):this.current=this.newToken(nt,"<");else if("|"===e){if("|"!==this.expression.charAt(this.pos+1))return!1;this.current=this.newToken(nt,"||"),this.pos++}else if("="===e){if("="!==this.expression.charAt(this.pos+1))return!1;this.current=this.newToken(nt,"=="),this.pos++}else{if("!"!==e)return!1;"="===this.expression.charAt(this.pos+1)?(this.current=this.newToken(nt,"!="),this.pos++):this.current=this.newToken(nt,e)}return this.pos++,!!this.isOperatorEnabled(this.current.value)||(this.pos=t,!1)};var ot={"+":"add","-":"subtract","*":"multiply","/":"divide","%":"remainder","^":"power","!":"factorial","<":"comparison",">":"comparison","<=":"comparison",">=":"comparison","==":"comparison","!=":"comparison","||":"concatenate",and:"logical",or:"logical",not:"logical","?":"conditional",":":"conditional"};f.prototype.isOperatorEnabled=function(t){var e=v(t),s=this.options.operators||{};return"in"===e?!!s.in:!(e in s&&!s[e])},f.prototype.getCoordinates=function(){var t,e=0,s=-1;do{e++,t=this.pos-s,s=this.expression.indexOf("\n",s+1)}while(s>=0&&s<this.pos);return{line:e,column:t}},f.prototype.parseError=function(t){var e=this.getCoordinates();throw new Error("parse error ["+e.line+":"+e.column+"]: "+t)},x.prototype.next=function(){return this.current=this.nextToken,this.nextToken=this.tokens.next()},x.prototype.tokenMatches=function(t,e){return void 0===e||(Array.isArray(e)?p(e,t.value):"function"==typeof e?e(t):t.value===e)},x.prototype.save=function(){this.savedCurrent=this.current,this.savedNextToken=this.nextToken,this.tokens.save()},x.prototype.restore=function(){this.tokens.restore(),this.current=this.savedCurrent,this.nextToken=this.savedNextToken},x.prototype.accept=function(t,e){return!(this.nextToken.type!==t||!this.tokenMatches(this.nextToken,e))&&(this.next(),!0)},x.prototype.expect=function(t,e){if(!this.accept(t,e)){var s=this.tokens.getCoordinates();throw new Error("parse error ["+s.line+":"+s.column+"]: Expected "+(e||t))}},x.prototype.parseAtom=function(e){if(this.accept("TNAME"))e.push(new t(tt,this.current.value));else if(this.accept("TNUMBER"))e.push(new t(K,this.current.value));else if(this.accept("TSTRING"))e.push(new t(K,this.current.value));else{if(!this.accept("TPAREN","("))throw new Error("unexpected "+this.nextToken);this.parseExpression(e),this.expect("TPAREN",")")}},x.prototype.parseExpression=function(t){this.parseConditionalExpression(t)},x.prototype.parseConditionalExpression=function(e){for(this.parseOrExpression(e);this.accept(nt,"?");){var s=[],n=[];this.parseConditionalExpression(s),this.expect(nt,":"),this.parseConditionalExpression(n),e.push(new t(st,s)),e.push(new t(st,n)),e.push(r("?"))}},x.prototype.parseOrExpression=function(t){for(this.parseAndExpression(t);this.accept(nt,"or");)this.parseAndExpression(t),t.push(s("or"))},x.prototype.parseAndExpression=function(t){for(this.parseComparison(t);this.accept(nt,"and");)this.parseComparison(t),t.push(s("and"))};var at=["==","!=","<","<=",">=",">","in"];x.prototype.parseComparison=function(t){for(this.parseAddSub(t);this.accept(nt,at);){var e=this.current;this.parseAddSub(t),t.push(s(e.value))}};var ht=["+","-","||"];x.prototype.parseAddSub=function(t){for(this.parseTerm(t);this.accept(nt,ht);){var e=this.current;this.parseTerm(t),t.push(s(e.value))}};var pt=["*","/","%"];x.prototype.parseTerm=function(t){for(this.parseFactor(t);this.accept(nt,pt);){var e=this.current;this.parseFactor(t),t.push(s(e.value))}},x.prototype.parseFactor=function(t){var s=this.tokens.unaryOps;if(this.save(),this.accept(nt,function(t){return t.value in s}))if("-"!==this.current.value&&"+"!==this.current.value&&"TPAREN"===this.nextToken.type&&"("===this.nextToken.value)this.restore(),this.parseExponential(t);else{var r=this.current;this.parseFactor(t),t.push(e(r.value))}else this.parseExponential(t)},x.prototype.parseExponential=function(t){for(this.parsePostfixExpression(t);this.accept(nt,"^");)this.parseFactor(t),t.push(s("^"))},x.prototype.parsePostfixExpression=function(t){for(this.parseFunctionCall(t);this.accept(nt,"!");)t.push(e("!"))},x.prototype.parseFunctionCall=function(s){var r=this.tokens.unaryOps;if(this.accept(nt,function(t){return t.value in r})){var n=this.current;this.parseAtom(s),s.push(e(n.value))}else for(this.parseMemberExpression(s);this.accept("TPAREN","(");)if(this.accept("TPAREN",")"))s.push(new t(et,0));else{var i=this.parseArgumentList(s);s.push(new t(et,i))}},x.prototype.parseArgumentList=function(t){for(var e=0;!this.accept("TPAREN",")");)for(this.parseExpression(t),++e;this.accept("TCOMMA");)this.parseExpression(t),++e;return e},x.prototype.parseMemberExpression=function(e){for(this.parseAtom(e);this.accept(nt,".");){if(!this.allowMemberAccess)throw new Error('unexpected ".", member access is not permitted');this.expect("TNAME"),e.push(new t(rt,this.current.value))}};var ut=4.7421875,ct=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];H.prototype.parse=function(t){var e=[],s=new x(this,new f(this,t),{allowMemberAccess:this.options.allowMemberAccess});return s.parseExpression(e),s.expect("TEOF","EOF"),new c(e,this)},H.prototype.evaluate=function(t,e){return this.parse(t).evaluate(e)};var lt=new H;return H.parse=function(t){return lt.parse(t)},H.evaluate=function(t,e){return lt.parse(t).evaluate(e)},{Parser:H,Expression:c}});