From 6e168bfc07c7362100b3ea08f45d0d1016bdf7ec Mon Sep 17 00:00:00 2001 From: Michal Grno Date: Wed, 23 Jun 2021 02:40:07 +0200 Subject: [PATCH] fixed unary minus vs exp precedence, see #41 --- dist/browser/filtrex.js | 8 ++++---- dist/browser/filtrex.min.js | 2 +- dist/cjs/filtrex.js | 8 ++++---- dist/esm/generateParser.mjs | 3 +-- dist/esm/parser.mjs | 8 ++++---- src/generateParser.mjs | 3 +-- test/arithmetics.js | 5 +++++ 7 files changed, 20 insertions(+), 17 deletions(-) diff --git a/dist/browser/filtrex.js b/dist/browser/filtrex.js index 99e9c61..9c77204 100644 --- a/dist/browser/filtrex.js +++ b/dist/browser/filtrex.js @@ -552,7 +552,7 @@ var filtrex = (function (exports) { 8: [2, 2], 9: [2, 2], 10: [2, 2], - 11: [2, 2], + 11: [1, 17], 12: [2, 2], 13: [2, 2], 14: [2, 2], @@ -576,7 +576,7 @@ var filtrex = (function (exports) { 8: [2, 11], 9: [2, 11], 10: [2, 11], - 11: [2, 11], + 11: [1, 17], 12: [2, 11], 13: [2, 11], 14: [2, 11], @@ -788,7 +788,7 @@ var filtrex = (function (exports) { 11: [2, 8], 12: [2, 8], 13: [2, 8], - 14: [1, 21], + 14: [2, 8], 16: [2, 8], 17: [2, 8], 18: [2, 8], @@ -1052,7 +1052,7 @@ var filtrex = (function (exports) { 8: [2, 14], 9: [2, 14], 10: [2, 14], - 11: [2, 14], + 11: [1, 17], 12: [2, 14], 13: [2, 14], 14: [2, 14], diff --git a/dist/browser/filtrex.min.js b/dist/browser/filtrex.min.js index 7d798c9..5724266 100644 --- a/dist/browser/filtrex.min.js +++ b/dist/browser/filtrex.min.js @@ -1 +1 @@ -var filtrex=function(t){"use strict";var e=function(){var t={trace:function(){},yy:{},symbols_:{error:2,expressions:3,e:4,EOF:5,"-":6,"+":7,"*":8,"/":9,"%":10,"^":11,and:12,or:13,not:14,if:15,then:16,else:17,in:18,"(":19,")":20,Arguments:21,",":22,Number:23,Symbol:24,String:25,of:26,Relation:27,RelationalOperator:28,"==":29,"!=":30,"~=":31,"<":32,"<=":33,">=":34,">":35,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",6:"-",7:"+",8:"*",9:"/",10:"%",11:"^",12:"and",13:"or",14:"not",15:"if",16:"then",17:"else",18:"in",19:"(",20:")",22:",",23:"Number",24:"Symbol",25:"String",26:"of",29:"==",30:"!=",31:"~=",32:"<",33:"<=",34:">=",35:">"},productions_:[0,[3,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,2],[4,6],[4,3],[4,4],[4,3],[4,5],[4,1],[4,1],[4,1],[4,3],[4,3],[4,4],[4,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1],[27,3],[27,3],[21,1],[21,3]],performAction:function(t,e,n,r,i,s,o){var h=s.length-1;switch(i){case 1:return s[h-1];case 2:this.$=["(","ops['-'](",s[h],")",")"];break;case 3:case 4:case 5:case 6:case 7:case 8:this.$=["(","ops['",s[h-1],"'](",s[h-2],", ",s[h],")",")"];break;case 9:this.$=["(","","std.coerceBoolean","(",s[h-2],") && ","std.coerceBoolean","(",s[h],")",")"];break;case 10:this.$=["(","","std.coerceBoolean","(",s[h-2],") || ","std.coerceBoolean","(",s[h],")",")"];break;case 11:this.$=["(","! ","std.coerceBoolean","(",s[h],")",")"];break;case 12:this.$=["(","","std.coerceBoolean","(",s[h-4],") ? ",s[h-2]," : ",s[h],"",")"];break;case 13:this.$=["(","std.isSubset(",s[h-2],", ",s[h],")",")"];break;case 14:this.$=["(","!std.isSubset(",s[h-3],", ",s[h],")",")"];break;case 15:this.$=["(","",s[h-1],"",")"];break;case 16:this.$=["(","[ ",s[h-3],", ",s[h-1]," ]",")"];break;case 17:this.$=["",s[h],""];break;case 18:this.$=["prop(",s[h],", data)"];break;case 19:this.$=["",s[h],""];break;case 20:this.$=["prop(",s[h-2],", ",s[h],")"];break;case 21:this.$=["call(",s[h-2],")"];break;case 22:this.$=["call(",s[h-3],", ",s[h-1],")"];break;case 23:this.$=r.reduceRelation(s[h]);break;case 24:this.$=["=="];break;case 25:this.$=["!="];break;case 26:this.$=["~="];break;case 27:this.$=["<"];break;case 28:this.$=["<="];break;case 29:this.$=[">="];break;case 30:this.$=[">"];break;case 31:this.$=[s[h-2],s[h-1],...s[h]];break;case 32:this.$=[s[h-2],s[h-1],s[h]];break;case 33:this.$=["",s[h],""];break;case 34:this.$=["",s[h-2],", ",s[h],""]}},table:[{3:1,4:2,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{1:[3]},{5:[1,11],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],18:[1,20],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{4:30,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:31,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:32,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:33,6:[1,3],14:[1,4],15:[1,5],19:[1,6],21:34,23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,17],6:[2,17],7:[2,17],8:[2,17],9:[2,17],10:[2,17],11:[2,17],12:[2,17],13:[2,17],14:[2,17],16:[2,17],17:[2,17],18:[2,17],20:[2,17],22:[2,17],29:[2,17],30:[2,17],31:[2,17],32:[2,17],33:[2,17],34:[2,17],35:[2,17]},{5:[2,18],6:[2,18],7:[2,18],8:[2,18],9:[2,18],10:[2,18],11:[2,18],12:[2,18],13:[2,18],14:[2,18],16:[2,18],17:[2,18],18:[2,18],19:[1,36],20:[2,18],22:[2,18],26:[1,35],29:[2,18],30:[2,18],31:[2,18],32:[2,18],33:[2,18],34:[2,18],35:[2,18]},{5:[2,19],6:[2,19],7:[2,19],8:[2,19],9:[2,19],10:[2,19],11:[2,19],12:[2,19],13:[2,19],14:[2,19],16:[2,19],17:[2,19],18:[2,19],20:[2,19],22:[2,19],29:[2,19],30:[2,19],31:[2,19],32:[2,19],33:[2,19],34:[2,19],35:[2,19]},{5:[2,23],6:[2,23],7:[2,23],8:[2,23],9:[2,23],10:[2,23],11:[2,23],12:[2,23],13:[2,23],14:[2,23],16:[2,23],17:[2,23],18:[2,23],20:[2,23],22:[2,23],29:[2,23],30:[2,23],31:[2,23],32:[2,23],33:[2,23],34:[2,23],35:[2,23]},{1:[2,1]},{4:37,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:38,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:39,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:40,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:41,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:42,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:43,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:44,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:45,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{18:[1,46]},{4:48,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:47},{6:[2,24],14:[2,24],15:[2,24],19:[2,24],23:[2,24],24:[2,24],25:[2,24]},{6:[2,25],14:[2,25],15:[2,25],19:[2,25],23:[2,25],24:[2,25],25:[2,25]},{6:[2,26],14:[2,26],15:[2,26],19:[2,26],23:[2,26],24:[2,26],25:[2,26]},{6:[2,27],14:[2,27],15:[2,27],19:[2,27],23:[2,27],24:[2,27],25:[2,27]},{6:[2,28],14:[2,28],15:[2,28],19:[2,28],23:[2,28],24:[2,28],25:[2,28]},{6:[2,29],14:[2,29],15:[2,29],19:[2,29],23:[2,29],24:[2,29],25:[2,29]},{6:[2,30],14:[2,30],15:[2,30],19:[2,30],23:[2,30],24:[2,30],25:[2,30]},{5:[2,2],6:[2,2],7:[2,2],8:[2,2],9:[2,2],10:[2,2],11:[2,2],12:[2,2],13:[2,2],14:[2,2],16:[2,2],17:[2,2],18:[2,2],20:[2,2],22:[2,2],28:22,29:[2,2],30:[2,2],31:[2,2],32:[2,2],33:[2,2],34:[2,2],35:[2,2]},{5:[2,11],6:[2,11],7:[2,11],8:[2,11],9:[2,11],10:[2,11],11:[2,11],12:[2,11],13:[2,11],14:[2,11],16:[2,11],17:[2,11],18:[2,11],20:[2,11],22:[2,11],28:22,29:[2,11],30:[2,11],31:[2,11],32:[2,11],33:[2,11],34:[2,11],35:[2,11]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],16:[1,49],18:[1,20],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],18:[1,20],20:[1,50],22:[2,33],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{22:[1,51]},{4:52,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:55,6:[1,3],14:[1,4],15:[1,5],19:[1,6],20:[1,53],21:54,23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,3],6:[2,3],7:[2,3],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[2,3],13:[2,3],14:[1,21],16:[2,3],17:[2,3],18:[2,3],20:[2,3],22:[2,3],28:22,29:[2,3],30:[2,3],31:[2,3],32:[2,3],33:[2,3],34:[2,3],35:[2,3]},{5:[2,4],6:[2,4],7:[2,4],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[2,4],13:[2,4],14:[1,21],16:[2,4],17:[2,4],18:[2,4],20:[2,4],22:[2,4],28:22,29:[2,4],30:[2,4],31:[2,4],32:[2,4],33:[2,4],34:[2,4],35:[2,4]},{5:[2,5],6:[2,5],7:[2,5],8:[2,5],9:[2,5],10:[2,5],11:[1,17],12:[2,5],13:[2,5],14:[1,21],16:[2,5],17:[2,5],18:[2,5],20:[2,5],22:[2,5],28:22,29:[2,5],30:[2,5],31:[2,5],32:[2,5],33:[2,5],34:[2,5],35:[2,5]},{5:[2,6],6:[2,6],7:[2,6],8:[2,6],9:[2,6],10:[2,6],11:[1,17],12:[2,6],13:[2,6],14:[1,21],16:[2,6],17:[2,6],18:[2,6],20:[2,6],22:[2,6],28:22,29:[2,6],30:[2,6],31:[2,6],32:[2,6],33:[2,6],34:[2,6],35:[2,6]},{5:[2,7],6:[2,7],7:[2,7],8:[2,7],9:[2,7],10:[2,7],11:[1,17],12:[2,7],13:[2,7],14:[1,21],16:[2,7],17:[2,7],18:[2,7],20:[2,7],22:[2,7],28:22,29:[2,7],30:[2,7],31:[2,7],32:[2,7],33:[2,7],34:[2,7],35:[2,7]},{5:[2,8],6:[2,8],7:[2,8],8:[2,8],9:[2,8],10:[2,8],11:[2,8],12:[2,8],13:[2,8],14:[1,21],16:[2,8],17:[2,8],18:[2,8],20:[2,8],22:[2,8],28:22,29:[2,8],30:[2,8],31:[2,8],32:[2,8],33:[2,8],34:[2,8],35:[2,8]},{5:[2,9],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[2,9],13:[2,9],14:[1,21],16:[2,9],17:[2,9],18:[1,20],20:[2,9],22:[2,9],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{5:[2,10],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[2,10],14:[1,21],16:[2,10],17:[2,10],18:[1,20],20:[2,10],22:[2,10],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{5:[2,13],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[2,13],13:[2,13],14:[1,21],16:[2,13],17:[2,13],18:[2,13],20:[2,13],22:[2,13],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{4:56,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,31],6:[2,31],7:[2,31],8:[2,31],9:[2,31],10:[2,31],11:[2,31],12:[2,31],13:[2,31],14:[2,31],16:[2,31],17:[2,31],18:[2,31],20:[2,31],22:[2,31],29:[2,31],30:[2,31],31:[2,31],32:[2,31],33:[2,31],34:[2,31],35:[2,31]},{5:[2,32],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[2,32],13:[2,32],14:[1,21],16:[2,32],17:[2,32],18:[2,32],20:[2,32],22:[2,32],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{4:57,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,15],6:[2,15],7:[2,15],8:[2,15],9:[2,15],10:[2,15],11:[2,15],12:[2,15],13:[2,15],14:[2,15],16:[2,15],17:[2,15],18:[2,15],20:[2,15],22:[2,15],29:[2,15],30:[2,15],31:[2,15],32:[2,15],33:[2,15],34:[2,15],35:[2,15]},{4:58,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,20],6:[2,20],7:[2,20],8:[2,20],9:[2,20],10:[2,20],11:[2,20],12:[2,20],13:[2,20],14:[2,20],16:[2,20],17:[2,20],18:[2,20],20:[2,20],22:[2,20],28:22,29:[2,20],30:[2,20],31:[2,20],32:[2,20],33:[2,20],34:[2,20],35:[2,20]},{5:[2,21],6:[2,21],7:[2,21],8:[2,21],9:[2,21],10:[2,21],11:[2,21],12:[2,21],13:[2,21],14:[2,21],16:[2,21],17:[2,21],18:[2,21],20:[2,21],22:[2,21],29:[2,21],30:[2,21],31:[2,21],32:[2,21],33:[2,21],34:[2,21],35:[2,21]},{20:[1,59],22:[1,60]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],18:[1,20],20:[2,33],22:[2,33],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{5:[2,14],6:[2,14],7:[2,14],8:[2,14],9:[2,14],10:[2,14],11:[2,14],12:[2,14],13:[2,14],14:[2,14],16:[2,14],17:[2,14],18:[2,14],20:[2,14],22:[2,14],28:22,29:[2,14],30:[2,14],31:[2,14],32:[2,14],33:[2,14],34:[2,14],35:[2,14]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],17:[1,61],18:[1,20],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],18:[1,20],20:[1,62],22:[2,34],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{5:[2,22],6:[2,22],7:[2,22],8:[2,22],9:[2,22],10:[2,22],11:[2,22],12:[2,22],13:[2,22],14:[2,22],16:[2,22],17:[2,22],18:[2,22],20:[2,22],22:[2,22],29:[2,22],30:[2,22],31:[2,22],32:[2,22],33:[2,22],34:[2,22],35:[2,22]},{4:63,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:64,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,16],6:[2,16],7:[2,16],8:[2,16],9:[2,16],10:[2,16],11:[2,16],12:[2,16],13:[2,16],14:[2,16],16:[2,16],17:[2,16],18:[2,16],20:[2,16],22:[2,16],29:[2,16],30:[2,16],31:[2,16],32:[2,16],33:[2,16],34:[2,16],35:[2,16]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],18:[1,20],20:[2,34],22:[2,34],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{5:[2,12],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],16:[2,12],17:[2,12],18:[1,20],20:[2,12],22:[2,12],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]}],defaultActions:{11:[2,1]},parseError:function(t,e){throw new Error(t)},parse:function(t){var e=this,n=[0],r=[null],i=[],s=this.table,o="",h=0,l=0,a=0;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var c=this.lexer.yylloc;i.push(c);var u=this.lexer.options&&this.lexer.options.ranges;function y(){var t;return"number"!=typeof(t=e.lexer.lex()||1)&&(t=e.symbols_[t]||t),t}"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var f,p,g,d,m,b,x,_,w,k,$={};;){if(g=n[n.length-1],this.defaultActions[g]?d=this.defaultActions[g]:(null==f&&(f=y()),d=s[g]&&s[g][f]),void 0===d||!d.length||!d[0]){var E="";if(!a){for(b in w=[],s[g])this.terminals_[b]&&b>2&&w.push("'"+this.terminals_[b]+"'");E=this.lexer.showPosition?"Parse error on line "+(h+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(E,{text:this.lexer.match,token:this.terminals_[f]||f,line:this.lexer.yylineno,loc:c,expected:w})}if(3==a){if(1==f)throw new Error(E||"Parsing halted.");l=this.lexer.yyleng,o=this.lexer.yytext,h=this.lexer.yylineno,c=this.lexer.yylloc,f=y()}for(;!(2..toString()in s[g]);){if(0===g)throw new Error(E||"Parsing halted.");k=1,n.length=n.length-2*k,r.length=r.length-k,i.length=i.length-k,g=n[n.length-1]}p=2==f?null:f,f=2,d=s[g=n[n.length-1]]&&s[g][2],a=3}if(d[0]instanceof Array&&d.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+f);switch(d[0]){case 1:n.push(f),r.push(this.lexer.yytext),i.push(this.lexer.yylloc),n.push(d[1]),f=null,p?(f=p,p=null):(l=this.lexer.yyleng,o=this.lexer.yytext,h=this.lexer.yylineno,c=this.lexer.yylloc,a>0&&a--);break;case 2:if(x=this.productions_[d[1]][1],$.$=r[r.length-x],$._$={first_line:i[i.length-(x||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(x||1)].first_column,last_column:i[i.length-1].last_column},u&&($._$.range=[i[i.length-(x||1)].range[0],i[i.length-1].range[1]]),void 0!==(m=this.performAction.call($,o,l,h,this.yy,d[1],r,i)))return m;x&&(n=n.slice(0,-1*x*2),r=r.slice(0,-1*x),i=i.slice(0,-1*x)),n.push(this.productions_[d[1]][0]),r.push($.$),i.push($._$),_=s[n[n.length-2]][n[n.length-1]],n.push(_);break;case 3:return!0}}return!0}},e=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t){return this._input=t,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e-1),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this},more:function(){return this._more=!0,this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},next:function(){if(this.done)return this.EOF;var t,e,n,r,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),o=0;oe[0].length)||(e=n,r=o,this.options.flex));o++);return e?((i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],t=this.performAction.call(this,this.yy,this,s[r],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),t||void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return void 0!==t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)},options:{},performAction:function(t,e,n,r){switch(n){case 0:return"*";case 1:return"/";case 2:return"-";case 3:return"+";case 4:return"^";case 5:return"%";case 6:return"(";case 7:return")";case 8:return",";case 9:return"==";case 10:return"!=";case 11:return"~=";case 12:return">=";case 13:return"<=";case 14:return"<";case 15:return">";case 16:return"and";case 17:return"or";case 18:return"not";case 19:return"in";case 20:return"of";case 21:return"if";case 22:return"then";case 23:return"else";case 24:break;case 25:return"Number";case 26:return e.yytext=JSON.stringify(e.yytext),"Symbol";case 27:return e.yytext=t.buildString("'",e.yytext),"Symbol";case 28:return e.yytext=t.buildString('"',e.yytext),"String";case 29:return"EOF"}},rules:[/^(?:\*)/,/^(?:\/)/,/^(?:-)/,/^(?:\+)/,/^(?:\^)/,/^(?:\%)/,/^(?:\()/,/^(?:\))/,/^(?:\,)/,/^(?:==)/,/^(?:\!=)/,/^(?:\~=)/,/^(?:>=)/,/^(?:<=)/,/^(?:<)/,/^(?:>)/,/^(?:and[^\w])/,/^(?:or[^\w])/,/^(?:not[^\w])/,/^(?:in[^\w])/,/^(?:of[^\w])/,/^(?:if[^\w])/,/^(?:then[^\w])/,/^(?:else[^\w])/,/^(?:\s+)/,/^(?:[0-9]+(?:\.[0-9]+)?(?![0-9\.]))/,/^(?:[a-zA-Z$_][\.a-zA-Z0-9$_]*)/,/^(?:'(?:\\'|\\\\|[^'\\])*')/,/^(?:"(?:\\"|\\\\|[^"\\])*")/,/^(?:$)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],inclusive:!0}}};return t}();function n(){this.yy={}}return t.lexer=e,n.prototype=t,t.Parser=n,new n}();const n=e;function r(t,e){return("object"==typeof t||"function"==typeof t)&&Object.prototype.hasOwnProperty.call(t,e)}function i(t,e){return(t%e+e)%e}function s(t){return Array.isArray(t)&&1===t.length&&(t=t[0]),function(t){return"object"!=typeof t?t:t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():void 0}(t)}function o(t){return void 0===(t=s(t))?"undefined":null===t?"null":!0===t?"true":!1===t?"false":"number"==typeof t?"number":"string"==typeof t?"text":"object"!=typeof t&&"function"!=typeof t?"unknown type":Array.isArray(t)?"list":"object"}function h(t){if("number"==typeof(t=s(t)))return t;throw new TypeError(`Expected a number, but got a ${o(t)} instead.`)}function l(t){if("string"==typeof(t=s(t)))return t;throw new TypeError(`Expected a text, but got a ${o(t)} instead.`)}function a(t){if("string"==typeof(t=s(t))||"number"==typeof t)return t;throw new TypeError(`Expected a text or a number, but got a ${o(t)} instead.`)}function c(t){if(null==t)throw new TypeError(`Expected a list, but got ${t} instead.`);return Array.isArray(t)?t:[t]}function u(t){const e=[...t],n=[];for(;e.length;){const t=e.pop();Array.isArray(t)?e.push(...t):n.push(t)}return n.reverse()}e.Parser;const y={isfn:(t,e)=>r(t,e)&&"function"==typeof t[e],unknown(t){throw new ReferenceError("Unknown function: "+t+"()")},coerceArray:c,coerceNumber:h,coerceNumberOrString:a,coerceBoolean:function(t){if("boolean"==typeof(t=s(t)))return t;throw new TypeError(`Expected a logical value (“true” or “false”), but got a ${o(t)} instead.`)},isSubset(t,e){const n=c(t),r=c(e);return n.every(t=>r.includes(t))},buildString(t,e){t=String(t)[0];let n="";if((e=String(e))[0]!==t||e[e.length-1]!==t)throw new Error("Unexpected internal error: String literal doesn't begin/end with the right quotation mark.");for(let r=1;r=e.length-1)throw new Error("Unexpected internal error: Unescaped backslash at the end of string literal.");if("\\"===e[r])n+="\\";else{if(e[r]!==t)throw new Error("Unexpected internal error: Invalid escaped character in string literal: "+e[r]);n+=t}}else{if(e[r]===t)throw new Error("Unexpected internal error: String literal contains unescaped quotation mark.");n+=e[r]}return JSON.stringify(n)},reduceRelation(t){const e=[],n=[];let r=u([t[0]]).join(""),i=0;for(let s=1;s2)throw new TypeError("Too many arguments.");e="object"==typeof e?e:{};let{extraFunctions:s,customProp:o,operators:c}=e;for(const t of Object.keys(e))if(!["extraFunctions","customProp","operators"].includes(t))throw new TypeError("Unknown option: "+t);let f={abs:Math.abs,ceil:Math.ceil,floor:Math.floor,log:Math.log,max:Math.max,min:Math.min,random:Math.random,round:Math.round,sqrt:Math.sqrt,exists:t=>null!=t,empty:t=>null==t||""===t||Array.isArray(t)&&0===t.length};if(s)for(const t of Object.keys(s))f[t]=s[t];let p={"+":(t,e)=>a(t)+a(e),"-":(t,e)=>void 0===e?-h(t):h(t)-h(e),"*":(t,e)=>h(t)*h(e),"/":(t,e)=>h(t)/h(e),"%":(t,e)=>i(h(t),h(e)),"^":(t,e)=>Math.pow(h(t),h(e)),"==":(t,e)=>t===e,"!=":(t,e)=>t!==e,"<":(t,e)=>h(t)h(t)<=h(e),">=":(t,e)=>h(t)>=h(e),">":(t,e)=>h(t)>h(e),"~=":(t,e)=>RegExp(l(e)).test(l(t))};if(c)for(const t of Object.keys(c))p[t]=c[t];c=p;let g=u(n.parse(t));function d(t,e){if(r(e||{},t))return e[t];throw new ReferenceError(`Property “${t}” does not exist.`)}function m(t){return function(e){if(r(t||{},e))return t[e];throw new ReferenceError(`Property “${e}” does not exist.`)}}function b(t){return function(e,...n){if(r(t,e)&&"function"==typeof t[e])return t[e](...n);throw new ReferenceError(`Unknown function: ${e}()`)}}g.unshift("return "),g.push(";"),"function"==typeof o&&(d=(t,e)=>o(t,m(e),e));let x=new Function("call","ops","std","prop","data",g.join(""));return function(t){try{return x(b(f),c,y,d,t)}catch(t){return t}}},Object.defineProperty(t,"__esModule",{value:!0}),t}({}); \ No newline at end of file +var filtrex=function(t){"use strict";var e=function(){var t={trace:function(){},yy:{},symbols_:{error:2,expressions:3,e:4,EOF:5,"-":6,"+":7,"*":8,"/":9,"%":10,"^":11,and:12,or:13,not:14,if:15,then:16,else:17,in:18,"(":19,")":20,Arguments:21,",":22,Number:23,Symbol:24,String:25,of:26,Relation:27,RelationalOperator:28,"==":29,"!=":30,"~=":31,"<":32,"<=":33,">=":34,">":35,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",6:"-",7:"+",8:"*",9:"/",10:"%",11:"^",12:"and",13:"or",14:"not",15:"if",16:"then",17:"else",18:"in",19:"(",20:")",22:",",23:"Number",24:"Symbol",25:"String",26:"of",29:"==",30:"!=",31:"~=",32:"<",33:"<=",34:">=",35:">"},productions_:[0,[3,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,2],[4,6],[4,3],[4,4],[4,3],[4,5],[4,1],[4,1],[4,1],[4,3],[4,3],[4,4],[4,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1],[28,1],[27,3],[27,3],[21,1],[21,3]],performAction:function(t,e,n,r,i,s,o){var h=s.length-1;switch(i){case 1:return s[h-1];case 2:this.$=["(","ops['-'](",s[h],")",")"];break;case 3:case 4:case 5:case 6:case 7:case 8:this.$=["(","ops['",s[h-1],"'](",s[h-2],", ",s[h],")",")"];break;case 9:this.$=["(","","std.coerceBoolean","(",s[h-2],") && ","std.coerceBoolean","(",s[h],")",")"];break;case 10:this.$=["(","","std.coerceBoolean","(",s[h-2],") || ","std.coerceBoolean","(",s[h],")",")"];break;case 11:this.$=["(","! ","std.coerceBoolean","(",s[h],")",")"];break;case 12:this.$=["(","","std.coerceBoolean","(",s[h-4],") ? ",s[h-2]," : ",s[h],"",")"];break;case 13:this.$=["(","std.isSubset(",s[h-2],", ",s[h],")",")"];break;case 14:this.$=["(","!std.isSubset(",s[h-3],", ",s[h],")",")"];break;case 15:this.$=["(","",s[h-1],"",")"];break;case 16:this.$=["(","[ ",s[h-3],", ",s[h-1]," ]",")"];break;case 17:this.$=["",s[h],""];break;case 18:this.$=["prop(",s[h],", data)"];break;case 19:this.$=["",s[h],""];break;case 20:this.$=["prop(",s[h-2],", ",s[h],")"];break;case 21:this.$=["call(",s[h-2],")"];break;case 22:this.$=["call(",s[h-3],", ",s[h-1],")"];break;case 23:this.$=r.reduceRelation(s[h]);break;case 24:this.$=["=="];break;case 25:this.$=["!="];break;case 26:this.$=["~="];break;case 27:this.$=["<"];break;case 28:this.$=["<="];break;case 29:this.$=[">="];break;case 30:this.$=[">"];break;case 31:this.$=[s[h-2],s[h-1],...s[h]];break;case 32:this.$=[s[h-2],s[h-1],s[h]];break;case 33:this.$=["",s[h],""];break;case 34:this.$=["",s[h-2],", ",s[h],""]}},table:[{3:1,4:2,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{1:[3]},{5:[1,11],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],18:[1,20],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{4:30,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:31,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:32,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:33,6:[1,3],14:[1,4],15:[1,5],19:[1,6],21:34,23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,17],6:[2,17],7:[2,17],8:[2,17],9:[2,17],10:[2,17],11:[2,17],12:[2,17],13:[2,17],14:[2,17],16:[2,17],17:[2,17],18:[2,17],20:[2,17],22:[2,17],29:[2,17],30:[2,17],31:[2,17],32:[2,17],33:[2,17],34:[2,17],35:[2,17]},{5:[2,18],6:[2,18],7:[2,18],8:[2,18],9:[2,18],10:[2,18],11:[2,18],12:[2,18],13:[2,18],14:[2,18],16:[2,18],17:[2,18],18:[2,18],19:[1,36],20:[2,18],22:[2,18],26:[1,35],29:[2,18],30:[2,18],31:[2,18],32:[2,18],33:[2,18],34:[2,18],35:[2,18]},{5:[2,19],6:[2,19],7:[2,19],8:[2,19],9:[2,19],10:[2,19],11:[2,19],12:[2,19],13:[2,19],14:[2,19],16:[2,19],17:[2,19],18:[2,19],20:[2,19],22:[2,19],29:[2,19],30:[2,19],31:[2,19],32:[2,19],33:[2,19],34:[2,19],35:[2,19]},{5:[2,23],6:[2,23],7:[2,23],8:[2,23],9:[2,23],10:[2,23],11:[2,23],12:[2,23],13:[2,23],14:[2,23],16:[2,23],17:[2,23],18:[2,23],20:[2,23],22:[2,23],29:[2,23],30:[2,23],31:[2,23],32:[2,23],33:[2,23],34:[2,23],35:[2,23]},{1:[2,1]},{4:37,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:38,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:39,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:40,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:41,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:42,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:43,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:44,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:45,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{18:[1,46]},{4:48,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:47},{6:[2,24],14:[2,24],15:[2,24],19:[2,24],23:[2,24],24:[2,24],25:[2,24]},{6:[2,25],14:[2,25],15:[2,25],19:[2,25],23:[2,25],24:[2,25],25:[2,25]},{6:[2,26],14:[2,26],15:[2,26],19:[2,26],23:[2,26],24:[2,26],25:[2,26]},{6:[2,27],14:[2,27],15:[2,27],19:[2,27],23:[2,27],24:[2,27],25:[2,27]},{6:[2,28],14:[2,28],15:[2,28],19:[2,28],23:[2,28],24:[2,28],25:[2,28]},{6:[2,29],14:[2,29],15:[2,29],19:[2,29],23:[2,29],24:[2,29],25:[2,29]},{6:[2,30],14:[2,30],15:[2,30],19:[2,30],23:[2,30],24:[2,30],25:[2,30]},{5:[2,2],6:[2,2],7:[2,2],8:[2,2],9:[2,2],10:[2,2],11:[1,17],12:[2,2],13:[2,2],14:[2,2],16:[2,2],17:[2,2],18:[2,2],20:[2,2],22:[2,2],28:22,29:[2,2],30:[2,2],31:[2,2],32:[2,2],33:[2,2],34:[2,2],35:[2,2]},{5:[2,11],6:[2,11],7:[2,11],8:[2,11],9:[2,11],10:[2,11],11:[1,17],12:[2,11],13:[2,11],14:[2,11],16:[2,11],17:[2,11],18:[2,11],20:[2,11],22:[2,11],28:22,29:[2,11],30:[2,11],31:[2,11],32:[2,11],33:[2,11],34:[2,11],35:[2,11]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],16:[1,49],18:[1,20],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],18:[1,20],20:[1,50],22:[2,33],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{22:[1,51]},{4:52,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:55,6:[1,3],14:[1,4],15:[1,5],19:[1,6],20:[1,53],21:54,23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,3],6:[2,3],7:[2,3],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[2,3],13:[2,3],14:[1,21],16:[2,3],17:[2,3],18:[2,3],20:[2,3],22:[2,3],28:22,29:[2,3],30:[2,3],31:[2,3],32:[2,3],33:[2,3],34:[2,3],35:[2,3]},{5:[2,4],6:[2,4],7:[2,4],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[2,4],13:[2,4],14:[1,21],16:[2,4],17:[2,4],18:[2,4],20:[2,4],22:[2,4],28:22,29:[2,4],30:[2,4],31:[2,4],32:[2,4],33:[2,4],34:[2,4],35:[2,4]},{5:[2,5],6:[2,5],7:[2,5],8:[2,5],9:[2,5],10:[2,5],11:[1,17],12:[2,5],13:[2,5],14:[1,21],16:[2,5],17:[2,5],18:[2,5],20:[2,5],22:[2,5],28:22,29:[2,5],30:[2,5],31:[2,5],32:[2,5],33:[2,5],34:[2,5],35:[2,5]},{5:[2,6],6:[2,6],7:[2,6],8:[2,6],9:[2,6],10:[2,6],11:[1,17],12:[2,6],13:[2,6],14:[1,21],16:[2,6],17:[2,6],18:[2,6],20:[2,6],22:[2,6],28:22,29:[2,6],30:[2,6],31:[2,6],32:[2,6],33:[2,6],34:[2,6],35:[2,6]},{5:[2,7],6:[2,7],7:[2,7],8:[2,7],9:[2,7],10:[2,7],11:[1,17],12:[2,7],13:[2,7],14:[1,21],16:[2,7],17:[2,7],18:[2,7],20:[2,7],22:[2,7],28:22,29:[2,7],30:[2,7],31:[2,7],32:[2,7],33:[2,7],34:[2,7],35:[2,7]},{5:[2,8],6:[2,8],7:[2,8],8:[2,8],9:[2,8],10:[2,8],11:[2,8],12:[2,8],13:[2,8],14:[2,8],16:[2,8],17:[2,8],18:[2,8],20:[2,8],22:[2,8],28:22,29:[2,8],30:[2,8],31:[2,8],32:[2,8],33:[2,8],34:[2,8],35:[2,8]},{5:[2,9],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[2,9],13:[2,9],14:[1,21],16:[2,9],17:[2,9],18:[1,20],20:[2,9],22:[2,9],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{5:[2,10],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[2,10],14:[1,21],16:[2,10],17:[2,10],18:[1,20],20:[2,10],22:[2,10],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{5:[2,13],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[2,13],13:[2,13],14:[1,21],16:[2,13],17:[2,13],18:[2,13],20:[2,13],22:[2,13],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{4:56,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,31],6:[2,31],7:[2,31],8:[2,31],9:[2,31],10:[2,31],11:[2,31],12:[2,31],13:[2,31],14:[2,31],16:[2,31],17:[2,31],18:[2,31],20:[2,31],22:[2,31],29:[2,31],30:[2,31],31:[2,31],32:[2,31],33:[2,31],34:[2,31],35:[2,31]},{5:[2,32],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[2,32],13:[2,32],14:[1,21],16:[2,32],17:[2,32],18:[2,32],20:[2,32],22:[2,32],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{4:57,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,15],6:[2,15],7:[2,15],8:[2,15],9:[2,15],10:[2,15],11:[2,15],12:[2,15],13:[2,15],14:[2,15],16:[2,15],17:[2,15],18:[2,15],20:[2,15],22:[2,15],29:[2,15],30:[2,15],31:[2,15],32:[2,15],33:[2,15],34:[2,15],35:[2,15]},{4:58,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,20],6:[2,20],7:[2,20],8:[2,20],9:[2,20],10:[2,20],11:[2,20],12:[2,20],13:[2,20],14:[2,20],16:[2,20],17:[2,20],18:[2,20],20:[2,20],22:[2,20],28:22,29:[2,20],30:[2,20],31:[2,20],32:[2,20],33:[2,20],34:[2,20],35:[2,20]},{5:[2,21],6:[2,21],7:[2,21],8:[2,21],9:[2,21],10:[2,21],11:[2,21],12:[2,21],13:[2,21],14:[2,21],16:[2,21],17:[2,21],18:[2,21],20:[2,21],22:[2,21],29:[2,21],30:[2,21],31:[2,21],32:[2,21],33:[2,21],34:[2,21],35:[2,21]},{20:[1,59],22:[1,60]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],18:[1,20],20:[2,33],22:[2,33],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{5:[2,14],6:[2,14],7:[2,14],8:[2,14],9:[2,14],10:[2,14],11:[1,17],12:[2,14],13:[2,14],14:[2,14],16:[2,14],17:[2,14],18:[2,14],20:[2,14],22:[2,14],28:22,29:[2,14],30:[2,14],31:[2,14],32:[2,14],33:[2,14],34:[2,14],35:[2,14]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],17:[1,61],18:[1,20],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],18:[1,20],20:[1,62],22:[2,34],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{5:[2,22],6:[2,22],7:[2,22],8:[2,22],9:[2,22],10:[2,22],11:[2,22],12:[2,22],13:[2,22],14:[2,22],16:[2,22],17:[2,22],18:[2,22],20:[2,22],22:[2,22],29:[2,22],30:[2,22],31:[2,22],32:[2,22],33:[2,22],34:[2,22],35:[2,22]},{4:63,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{4:64,6:[1,3],14:[1,4],15:[1,5],19:[1,6],23:[1,7],24:[1,8],25:[1,9],27:10},{5:[2,16],6:[2,16],7:[2,16],8:[2,16],9:[2,16],10:[2,16],11:[2,16],12:[2,16],13:[2,16],14:[2,16],16:[2,16],17:[2,16],18:[2,16],20:[2,16],22:[2,16],29:[2,16],30:[2,16],31:[2,16],32:[2,16],33:[2,16],34:[2,16],35:[2,16]},{6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],18:[1,20],20:[2,34],22:[2,34],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]},{5:[2,12],6:[1,13],7:[1,12],8:[1,14],9:[1,15],10:[1,16],11:[1,17],12:[1,18],13:[1,19],14:[1,21],16:[2,12],17:[2,12],18:[1,20],20:[2,12],22:[2,12],28:22,29:[1,23],30:[1,24],31:[1,25],32:[1,26],33:[1,27],34:[1,28],35:[1,29]}],defaultActions:{11:[2,1]},parseError:function(t,e){throw new Error(t)},parse:function(t){var e=this,n=[0],r=[null],i=[],s=this.table,o="",h=0,l=0,a=0;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var c=this.lexer.yylloc;i.push(c);var u=this.lexer.options&&this.lexer.options.ranges;function y(){var t;return"number"!=typeof(t=e.lexer.lex()||1)&&(t=e.symbols_[t]||t),t}"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var f,p,g,d,m,b,x,_,w,k,$={};;){if(g=n[n.length-1],this.defaultActions[g]?d=this.defaultActions[g]:(null==f&&(f=y()),d=s[g]&&s[g][f]),void 0===d||!d.length||!d[0]){var E="";if(!a){for(b in w=[],s[g])this.terminals_[b]&&b>2&&w.push("'"+this.terminals_[b]+"'");E=this.lexer.showPosition?"Parse error on line "+(h+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(E,{text:this.lexer.match,token:this.terminals_[f]||f,line:this.lexer.yylineno,loc:c,expected:w})}if(3==a){if(1==f)throw new Error(E||"Parsing halted.");l=this.lexer.yyleng,o=this.lexer.yytext,h=this.lexer.yylineno,c=this.lexer.yylloc,f=y()}for(;!(2..toString()in s[g]);){if(0===g)throw new Error(E||"Parsing halted.");k=1,n.length=n.length-2*k,r.length=r.length-k,i.length=i.length-k,g=n[n.length-1]}p=2==f?null:f,f=2,d=s[g=n[n.length-1]]&&s[g][2],a=3}if(d[0]instanceof Array&&d.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+f);switch(d[0]){case 1:n.push(f),r.push(this.lexer.yytext),i.push(this.lexer.yylloc),n.push(d[1]),f=null,p?(f=p,p=null):(l=this.lexer.yyleng,o=this.lexer.yytext,h=this.lexer.yylineno,c=this.lexer.yylloc,a>0&&a--);break;case 2:if(x=this.productions_[d[1]][1],$.$=r[r.length-x],$._$={first_line:i[i.length-(x||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(x||1)].first_column,last_column:i[i.length-1].last_column},u&&($._$.range=[i[i.length-(x||1)].range[0],i[i.length-1].range[1]]),void 0!==(m=this.performAction.call($,o,l,h,this.yy,d[1],r,i)))return m;x&&(n=n.slice(0,-1*x*2),r=r.slice(0,-1*x),i=i.slice(0,-1*x)),n.push(this.productions_[d[1]][0]),r.push($.$),i.push($._$),_=s[n[n.length-2]][n[n.length-1]],n.push(_);break;case 3:return!0}}return!0}},e=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t){return this._input=t,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e-1),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this},more:function(){return this._more=!0,this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},next:function(){if(this.done)return this.EOF;var t,e,n,r,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),o=0;oe[0].length)||(e=n,r=o,this.options.flex));o++);return e?((i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],t=this.performAction.call(this,this.yy,this,s[r],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),t||void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return void 0!==t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)},options:{},performAction:function(t,e,n,r){switch(n){case 0:return"*";case 1:return"/";case 2:return"-";case 3:return"+";case 4:return"^";case 5:return"%";case 6:return"(";case 7:return")";case 8:return",";case 9:return"==";case 10:return"!=";case 11:return"~=";case 12:return">=";case 13:return"<=";case 14:return"<";case 15:return">";case 16:return"and";case 17:return"or";case 18:return"not";case 19:return"in";case 20:return"of";case 21:return"if";case 22:return"then";case 23:return"else";case 24:break;case 25:return"Number";case 26:return e.yytext=JSON.stringify(e.yytext),"Symbol";case 27:return e.yytext=t.buildString("'",e.yytext),"Symbol";case 28:return e.yytext=t.buildString('"',e.yytext),"String";case 29:return"EOF"}},rules:[/^(?:\*)/,/^(?:\/)/,/^(?:-)/,/^(?:\+)/,/^(?:\^)/,/^(?:\%)/,/^(?:\()/,/^(?:\))/,/^(?:\,)/,/^(?:==)/,/^(?:\!=)/,/^(?:\~=)/,/^(?:>=)/,/^(?:<=)/,/^(?:<)/,/^(?:>)/,/^(?:and[^\w])/,/^(?:or[^\w])/,/^(?:not[^\w])/,/^(?:in[^\w])/,/^(?:of[^\w])/,/^(?:if[^\w])/,/^(?:then[^\w])/,/^(?:else[^\w])/,/^(?:\s+)/,/^(?:[0-9]+(?:\.[0-9]+)?(?![0-9\.]))/,/^(?:[a-zA-Z$_][\.a-zA-Z0-9$_]*)/,/^(?:'(?:\\'|\\\\|[^'\\])*')/,/^(?:"(?:\\"|\\\\|[^"\\])*")/,/^(?:$)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],inclusive:!0}}};return t}();function n(){this.yy={}}return t.lexer=e,n.prototype=t,t.Parser=n,new n}();const n=e;function r(t,e){return("object"==typeof t||"function"==typeof t)&&Object.prototype.hasOwnProperty.call(t,e)}function i(t,e){return(t%e+e)%e}function s(t){return Array.isArray(t)&&1===t.length&&(t=t[0]),function(t){return"object"!=typeof t?t:t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():void 0}(t)}function o(t){return void 0===(t=s(t))?"undefined":null===t?"null":!0===t?"true":!1===t?"false":"number"==typeof t?"number":"string"==typeof t?"text":"object"!=typeof t&&"function"!=typeof t?"unknown type":Array.isArray(t)?"list":"object"}function h(t){if("number"==typeof(t=s(t)))return t;throw new TypeError(`Expected a number, but got a ${o(t)} instead.`)}function l(t){if("string"==typeof(t=s(t)))return t;throw new TypeError(`Expected a text, but got a ${o(t)} instead.`)}function a(t){if("string"==typeof(t=s(t))||"number"==typeof t)return t;throw new TypeError(`Expected a text or a number, but got a ${o(t)} instead.`)}function c(t){if(null==t)throw new TypeError(`Expected a list, but got ${t} instead.`);return Array.isArray(t)?t:[t]}function u(t){const e=[...t],n=[];for(;e.length;){const t=e.pop();Array.isArray(t)?e.push(...t):n.push(t)}return n.reverse()}e.Parser;const y={isfn:(t,e)=>r(t,e)&&"function"==typeof t[e],unknown(t){throw new ReferenceError("Unknown function: "+t+"()")},coerceArray:c,coerceNumber:h,coerceNumberOrString:a,coerceBoolean:function(t){if("boolean"==typeof(t=s(t)))return t;throw new TypeError(`Expected a logical value (“true” or “false”), but got a ${o(t)} instead.`)},isSubset(t,e){const n=c(t),r=c(e);return n.every(t=>r.includes(t))},buildString(t,e){t=String(t)[0];let n="";if((e=String(e))[0]!==t||e[e.length-1]!==t)throw new Error("Unexpected internal error: String literal doesn't begin/end with the right quotation mark.");for(let r=1;r=e.length-1)throw new Error("Unexpected internal error: Unescaped backslash at the end of string literal.");if("\\"===e[r])n+="\\";else{if(e[r]!==t)throw new Error("Unexpected internal error: Invalid escaped character in string literal: "+e[r]);n+=t}}else{if(e[r]===t)throw new Error("Unexpected internal error: String literal contains unescaped quotation mark.");n+=e[r]}return JSON.stringify(n)},reduceRelation(t){const e=[],n=[];let r=u([t[0]]).join(""),i=0;for(let s=1;s2)throw new TypeError("Too many arguments.");e="object"==typeof e?e:{};let{extraFunctions:s,customProp:o,operators:c}=e;for(const t of Object.keys(e))if(!["extraFunctions","customProp","operators"].includes(t))throw new TypeError("Unknown option: "+t);let f={abs:Math.abs,ceil:Math.ceil,floor:Math.floor,log:Math.log,max:Math.max,min:Math.min,random:Math.random,round:Math.round,sqrt:Math.sqrt,exists:t=>null!=t,empty:t=>null==t||""===t||Array.isArray(t)&&0===t.length};if(s)for(const t of Object.keys(s))f[t]=s[t];let p={"+":(t,e)=>a(t)+a(e),"-":(t,e)=>void 0===e?-h(t):h(t)-h(e),"*":(t,e)=>h(t)*h(e),"/":(t,e)=>h(t)/h(e),"%":(t,e)=>i(h(t),h(e)),"^":(t,e)=>Math.pow(h(t),h(e)),"==":(t,e)=>t===e,"!=":(t,e)=>t!==e,"<":(t,e)=>h(t)h(t)<=h(e),">=":(t,e)=>h(t)>=h(e),">":(t,e)=>h(t)>h(e),"~=":(t,e)=>RegExp(l(e)).test(l(t))};if(c)for(const t of Object.keys(c))p[t]=c[t];c=p;let g=u(n.parse(t));function d(t,e){if(r(e||{},t))return e[t];throw new ReferenceError(`Property “${t}” does not exist.`)}function m(t){return function(e){if(r(t||{},e))return t[e];throw new ReferenceError(`Property “${e}” does not exist.`)}}function b(t){return function(e,...n){if(r(t,e)&&"function"==typeof t[e])return t[e](...n);throw new ReferenceError(`Unknown function: ${e}()`)}}g.unshift("return "),g.push(";"),"function"==typeof o&&(d=(t,e)=>o(t,m(e),e));let x=new Function("call","ops","std","prop","data",g.join(""));return function(t){try{return x(b(f),c,y,d,t)}catch(t){return t}}},Object.defineProperty(t,"__esModule",{value:!0}),t}({}); \ No newline at end of file diff --git a/dist/cjs/filtrex.js b/dist/cjs/filtrex.js index c6a6208..76e5176 100644 --- a/dist/cjs/filtrex.js +++ b/dist/cjs/filtrex.js @@ -553,7 +553,7 @@ var _parser = (function() { 8: [2, 2], 9: [2, 2], 10: [2, 2], - 11: [2, 2], + 11: [1, 17], 12: [2, 2], 13: [2, 2], 14: [2, 2], @@ -577,7 +577,7 @@ var _parser = (function() { 8: [2, 11], 9: [2, 11], 10: [2, 11], - 11: [2, 11], + 11: [1, 17], 12: [2, 11], 13: [2, 11], 14: [2, 11], @@ -789,7 +789,7 @@ var _parser = (function() { 11: [2, 8], 12: [2, 8], 13: [2, 8], - 14: [1, 21], + 14: [2, 8], 16: [2, 8], 17: [2, 8], 18: [2, 8], @@ -1053,7 +1053,7 @@ var _parser = (function() { 8: [2, 14], 9: [2, 14], 10: [2, 14], - 11: [2, 14], + 11: [1, 17], 12: [2, 14], 13: [2, 14], 14: [2, 14], diff --git a/dist/esm/generateParser.mjs b/dist/esm/generateParser.mjs index e4749f5..e65848e 100644 --- a/dist/esm/generateParser.mjs +++ b/dist/esm/generateParser.mjs @@ -72,9 +72,8 @@ const grammar = { ['left', 'CHAINEDREL'], ['left', '+', '-'], ['left', '*', '/', '%'], + ['left', 'not', 'UMINUS'], ['left', '^'], - ['left', 'not'], - ['left', 'UMINUS'], ['left', 'of'], ], // Grammar diff --git a/dist/esm/parser.mjs b/dist/esm/parser.mjs index d71cce8..089c72e 100644 --- a/dist/esm/parser.mjs +++ b/dist/esm/parser.mjs @@ -550,7 +550,7 @@ var _parser = (function() { 8: [2, 2], 9: [2, 2], 10: [2, 2], - 11: [2, 2], + 11: [1, 17], 12: [2, 2], 13: [2, 2], 14: [2, 2], @@ -574,7 +574,7 @@ var _parser = (function() { 8: [2, 11], 9: [2, 11], 10: [2, 11], - 11: [2, 11], + 11: [1, 17], 12: [2, 11], 13: [2, 11], 14: [2, 11], @@ -786,7 +786,7 @@ var _parser = (function() { 11: [2, 8], 12: [2, 8], 13: [2, 8], - 14: [1, 21], + 14: [2, 8], 16: [2, 8], 17: [2, 8], 18: [2, 8], @@ -1050,7 +1050,7 @@ var _parser = (function() { 8: [2, 14], 9: [2, 14], 10: [2, 14], - 11: [2, 14], + 11: [1, 17], 12: [2, 14], 13: [2, 14], 14: [2, 14], diff --git a/src/generateParser.mjs b/src/generateParser.mjs index e4749f5..e65848e 100644 --- a/src/generateParser.mjs +++ b/src/generateParser.mjs @@ -72,9 +72,8 @@ const grammar = { ['left', 'CHAINEDREL'], ['left', '+', '-'], ['left', '*', '/', '%'], + ['left', 'not', 'UMINUS'], ['left', '^'], - ['left', 'not'], - ['left', 'UMINUS'], ['left', 'of'], ], // Grammar diff --git a/test/arithmetics.js b/test/arithmetics.js index 3cc96f0..15217cb 100644 --- a/test/arithmetics.js +++ b/test/arithmetics.js @@ -113,4 +113,9 @@ describe('Arithmetics', () => { expect( eval('-0.1 % 5') ).equals(4.9) }) + + it('exponentiation has precedence over unary minus', () => { + expect( eval('-x^2', {x:2}) ).equals(-4) + }) + });