From 297b7f321ab63956a211a468d7e216e4587e7424 Mon Sep 17 00:00:00 2001 From: renatobenks Date: Sat, 24 Mar 2018 19:33:25 -0300 Subject: [PATCH 1/3] chore(git): ignore the jetbrains ide config --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2b747fa..a5a6781 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ node_modules .DS_Store *.swp - +.idea From 431f30a25426c1b26271d33c5c9e5f352917b881 Mon Sep 17 00:00:00 2001 From: renatobenks Date: Sat, 24 Mar 2018 19:34:24 -0300 Subject: [PATCH 2/3] test(grammar): add missing cases of tests and increase the test to the new feature --- test/grammar.spec.coffee | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/grammar.spec.coffee b/test/grammar.spec.coffee index 926a98d..1182932 100644 --- a/test/grammar.spec.coffee +++ b/test/grammar.spec.coffee @@ -366,6 +366,12 @@ describe "SQL Grammar", -> FROM `a` AS `b` """ + it "parses aliased field", -> + parse("""select a b from t""").toString().should.eql """ + SELECT `a` AS `b` + FROM `t` + """ + describe "STARS", -> it "parses stars as multiplication", -> parse('SELECT * FROM foo WHERE a = 1*2').toString().should.eql """ @@ -452,3 +458,25 @@ describe "SQL Grammar", -> SELECT `x` FROM Y() """ + + describe "WHERE", -> + it "parses simple where condition", -> + parse("select a from b where a = 10").toString().should.eql """ + SELECT `a` + FROM `b` + WHERE (`a` = 10) + """ + + it "parses simple where condition with in clause", -> + parse("select a from b where a in (10, 'ten')").toString().should.eql """ + SELECT `a` + FROM `b` + WHERE (`a` IN (10, 'ten')) + """ + + it "parses where condition with multiple in clauses", -> + parse("select value, type from x where (value, type) in ((10, 'ten'), ('number', 'number in full'))").toString().should.eql """ + SELECT `value`, `type` + FROM `x` + WHERE (`value` IN (10 'ten') AND (`type` IN ('number', 'number in full'))) + """ From 2d82a28e55a3ea9de4d991d0668e473057acff02 Mon Sep 17 00:00:00 2001 From: renatobenks Date: Tue, 27 Mar 2018 09:37:04 -0300 Subject: [PATCH 3/3] feat(where clause): enable multiples ~IN operators on parser --- browser/sql-parser.js | 137 ++++++++++++++++++++++++++--------------- lib/compiled_parser.js | 102 +++++++++++++++--------------- lib/grammar.js | 16 +++++ lib/lexer.js | 2 +- lib/nodes.js | 33 +++++++++- package.json | 3 +- src/grammar.coffee | 11 ++++ src/lexer.coffee | 3 +- src/nodes.coffee | 10 +++ 9 files changed, 215 insertions(+), 102 deletions(-) diff --git a/browser/sql-parser.js b/browser/sql-parser.js index 151819c..c6b2887 100644 --- a/browser/sql-parser.js +++ b/browser/sql-parser.js @@ -106,7 +106,7 @@ }; Lexer.prototype.keywordToken = function() { - return this.tokenizeFromWord('SELECT') || this.tokenizeFromWord('DISTINCT') || this.tokenizeFromWord('FROM') || this.tokenizeFromWord('WHERE') || this.tokenizeFromWord('GROUP') || this.tokenizeFromWord('ORDER') || this.tokenizeFromWord('BY') || this.tokenizeFromWord('HAVING') || this.tokenizeFromWord('LIMIT') || this.tokenizeFromWord('JOIN') || this.tokenizeFromWord('LEFT') || this.tokenizeFromWord('RIGHT') || this.tokenizeFromWord('INNER') || this.tokenizeFromWord('OUTER') || this.tokenizeFromWord('ON') || this.tokenizeFromWord('AS') || this.tokenizeFromWord('UNION') || this.tokenizeFromWord('ALL') || this.tokenizeFromWord('LIMIT') || this.tokenizeFromWord('OFFSET') || this.tokenizeFromWord('FETCH') || this.tokenizeFromWord('ROW') || this.tokenizeFromWord('ROWS') || this.tokenizeFromWord('ONLY') || this.tokenizeFromWord('NEXT') || this.tokenizeFromWord('FIRST') || this.tokenizeFromWord('CASE') || this.tokenizeFromWord('WHEN') || this.tokenizeFromWord('THEN') || this.tokenizeFromWord('ELSE') || this.tokenizeFromWord('END') || this.tokenizeFromWord('TOP'); + return this.tokenizeFromWord('SELECT') || this.tokenizeFromWord('DISTINCT') || this.tokenizeFromWord('FROM') || this.tokenizeFromWord('WHERE') || this.tokenizeFromWord('GROUP') || this.tokenizeFromWord('ORDER') || this.tokenizeFromWord('BY') || this.tokenizeFromWord('HAVING') || this.tokenizeFromWord('LIMIT') || this.tokenizeFromWord('JOIN') || this.tokenizeFromWord('LEFT') || this.tokenizeFromWord('RIGHT') || this.tokenizeFromWord('INNER') || this.tokenizeFromWord('OUTER') || this.tokenizeFromWord('ON') || this.tokenizeFromWord('AS') || this.tokenizeFromWord('UNION') || this.tokenizeFromWord('ALL') || this.tokenizeFromWord('LIMIT') || this.tokenizeFromWord('OFFSET') || this.tokenizeFromWord('FETCH') || this.tokenizeFromWord('ROW') || this.tokenizeFromWord('ROWS') || this.tokenizeFromWord('ONLY') || this.tokenizeFromWord('NEXT') || this.tokenizeFromWord('FIRST') || this.tokenizeFromWord('CASE') || this.tokenizeFromWord('WHEN') || this.tokenizeFromWord('THEN') || this.tokenizeFromWord('ELSE') || this.tokenizeFromWord('END') || this.tokenizeFromWord('TOP') || this.tokenizeFromWord('IN'); }; Lexer.prototype.dotToken = function() { @@ -328,12 +328,12 @@ } */ var parser = (function(){ -var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,8],$V1=[5,29],$V2=[1,14],$V3=[1,13],$V4=[5,29,34,44],$V5=[1,17],$V6=[5,29,34,44,47,64],$V7=[1,25],$V8=[1,30],$V9=[1,29],$Va=[1,32],$Vb=[1,42],$Vc=[1,46],$Vd=[1,47],$Ve=[1,43],$Vf=[1,44],$Vg=[1,41],$Vh=[1,45],$Vi=[1,27],$Vj=[5,29,34],$Vk=[5,29,34,44,47],$Vl=[1,62],$Vm=[19,45],$Vn=[1,66],$Vo=[1,67],$Vp=[1,68],$Vq=[1,69],$Vr=[1,70],$Vs=[5,19,26,27,29,34,37,38,40,41,43,44,45,47,64,66,67,69,70,71,72,73,74,76,79,81,82,88,89,90,91,92,93,95,98],$Vt=[1,78],$Vu=[1,77],$Vv=[5,19,26,27,29,34,37,38,40,41,43,44,45,46,47,53,64,66,67,69,70,71,72,73,74,76,77,79,81,82,88,89,90,91,92,93,95,98],$Vw=[5,19,26,27,29,30,34,37,38,39,40,41,43,44,45,46,47,53,64,66,67,69,70,71,72,73,74,76,77,79,81,82,88,89,90,91,92,93,94,95,98],$Vx=[1,95],$Vy=[1,106],$Vz=[1,107],$VA=[1,115],$VB=[5,29,34,44,45,46],$VC=[1,123],$VD=[5,29,34,44,45,47,66],$VE=[2,105],$VF=[5,29,34,43,44,47,64],$VG=[1,131],$VH=[1,132],$VI=[1,133],$VJ=[1,134],$VK=[2,26],$VL=[1,137],$VM=[1,138],$VN=[5,19,26,27,29,34,37,38,40,41,43,44,45,47,64,66,67,69,70,76,79,81,82,88,89,90,91,92,93,95,98],$VO=[69,70,81],$VP=[5,29,34,37,38,40,41,43,44,47,64],$VQ=[1,165],$VR=[5,29,34,37,38,39,40,41,43,44,47,64],$VS=[2,30],$VT=[5,29,34,44,58,60]; +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,8],$V1=[5,29],$V2=[1,14],$V3=[1,13],$V4=[5,29,34,45],$V5=[1,17],$V6=[5,29,34,45,48,65],$V7=[1,25],$V8=[1,30],$V9=[1,29],$Va=[1,32],$Vb=[1,42],$Vc=[1,46],$Vd=[1,47],$Ve=[1,43],$Vf=[1,44],$Vg=[1,41],$Vh=[1,45],$Vi=[1,27],$Vj=[5,29,34],$Vk=[5,29,34,45,48],$Vl=[1,59],$Vm=[1,65],$Vn=[19,46],$Vo=[1,69],$Vp=[1,70],$Vq=[1,71],$Vr=[1,72],$Vs=[1,73],$Vt=[5,19,26,27,29,34,37,38,40,41,43,45,46,48,65,67,68,70,71,72,73,74,75,77,80,82,84,85,91,92,93,94,95,96,98,101],$Vu=[1,81],$Vv=[1,80],$Vw=[5,19,26,27,29,34,37,38,40,41,43,45,46,47,48,54,65,67,68,70,71,72,73,74,75,77,78,80,82,84,85,91,92,93,94,95,96,98,101],$Vx=[5,19,26,27,29,30,34,37,38,39,40,41,43,45,46,47,48,54,65,67,68,70,71,72,73,74,75,77,78,80,82,84,85,91,92,93,94,95,96,97,98,101],$Vy=[2,82],$Vz=[1,95],$VA=[1,102],$VB=[1,113],$VC=[1,114],$VD=[1,122],$VE=[5,29,34,45,46,47],$VF=[1,130],$VG=[5,29,34,45,46,48,67],$VH=[2,110],$VI=[5,29,34,43,45,48,65],$VJ=[1,142],$VK=[1,143],$VL=[1,144],$VM=[1,145],$VN=[2,26],$VO=[1,148],$VP=[1,149],$VQ=[5,19,26,27,29,34,37,38,40,41,43,45,46,48,65,67,68,70,71,77,80,82,84,85,91,92,93,94,95,96,98,101],$VR=[70,71,84],$VS=[5,29,34,45,46,48,65,82],$VT=[5,29,34,37,38,40,41,43,45,48,65],$VU=[1,176],$VV=[5,29,34,37,38,39,40,41,43,45,48,65],$VW=[2,30],$VX=[5,29,34,45,59,61]; var parser = {trace: function trace() { }, yy: {}, -symbols_: {"error":2,"Root":3,"Query":4,"EOF":5,"SelectQuery":6,"Unions":7,"SelectWithLimitQuery":8,"BasicSelectQuery":9,"Select":10,"OrderClause":11,"GroupClause":12,"LimitClause":13,"SelectClause":14,"WhereClause":15,"SELECT":16,"Top":17,"Fields":18,"FROM":19,"Table":20,"Joins":21,"Expression":22,"DISTINCT":23,"TOP":24,"Literal":25,"AS":26,"LEFT_PAREN":27,"List":28,"RIGHT_PAREN":29,"WINDOW":30,"WINDOW_FUNCTION":31,"Number":32,"Union":33,"UNION":34,"ALL":35,"Join":36,"INNER":37,"JOIN":38,"ON":39,"LEFT":40,"RIGHT":41,"OUTER":42,"WHERE":43,"LIMIT":44,"SEPARATOR":45,"OFFSET":46,"ORDER":47,"BY":48,"OrderArgs":49,"OffsetClause":50,"OrderArg":51,"Value":52,"DIRECTION":53,"OffsetRows":54,"FetchClause":55,"ROW":56,"ROWS":57,"FETCH":58,"FIRST":59,"ONLY":60,"NEXT":61,"GroupBasicClause":62,"HavingClause":63,"GROUP":64,"ArgumentList":65,"HAVING":66,"CASE":67,"CaseBodies":68,"END":69,"ELSE":70,"MATH":71,"MATH_MULTI":72,"OPERATOR":73,"BETWEEN":74,"BetweenExpression":75,"CONDITIONAL":76,"SUB_SELECT_OP":77,"SubSelectExpression":78,"SUB_SELECT_UNARY_OP":79,"CaseBody":80,"WHEN":81,"THEN":82,"String":83,"Function":84,"UserFunction":85,"Boolean":86,"Parameter":87,"NUMBER":88,"BOOLEAN":89,"PARAMETER":90,"STRING":91,"DBLSTRING":92,"LITERAL":93,"DOT":94,"FUNCTION":95,"AggregateArgumentList":96,"Field":97,"STAR":98,"$accept":0,"$end":1}, -terminals_: {2:"error",5:"EOF",16:"SELECT",19:"FROM",23:"DISTINCT",24:"TOP",26:"AS",27:"LEFT_PAREN",29:"RIGHT_PAREN",30:"WINDOW",31:"WINDOW_FUNCTION",34:"UNION",35:"ALL",37:"INNER",38:"JOIN",39:"ON",40:"LEFT",41:"RIGHT",42:"OUTER",43:"WHERE",44:"LIMIT",45:"SEPARATOR",46:"OFFSET",47:"ORDER",48:"BY",53:"DIRECTION",56:"ROW",57:"ROWS",58:"FETCH",59:"FIRST",60:"ONLY",61:"NEXT",64:"GROUP",66:"HAVING",67:"CASE",69:"END",70:"ELSE",71:"MATH",72:"MATH_MULTI",73:"OPERATOR",74:"BETWEEN",76:"CONDITIONAL",77:"SUB_SELECT_OP",79:"SUB_SELECT_UNARY_OP",81:"WHEN",82:"THEN",88:"NUMBER",89:"BOOLEAN",90:"PARAMETER",91:"STRING",92:"DBLSTRING",93:"LITERAL",94:"DOT",95:"FUNCTION",98:"STAR"}, -productions_: [0,[3,2],[4,1],[4,2],[6,1],[6,1],[9,1],[9,2],[9,2],[9,3],[8,2],[10,1],[10,2],[14,6],[14,5],[14,5],[14,6],[14,6],[14,4],[14,4],[14,5],[14,5],[14,5],[14,6],[14,6],[17,2],[20,1],[20,2],[20,3],[20,3],[20,3],[20,4],[20,6],[7,1],[7,2],[33,2],[33,3],[21,1],[21,2],[36,5],[36,4],[36,5],[36,5],[36,6],[36,6],[36,6],[36,6],[15,2],[13,2],[13,4],[13,4],[11,3],[11,4],[49,1],[49,3],[51,1],[51,2],[50,2],[50,3],[54,2],[54,2],[55,4],[55,4],[12,1],[12,2],[62,3],[63,2],[22,4],[22,6],[22,3],[22,3],[22,3],[22,3],[22,3],[22,3],[22,5],[22,3],[22,2],[22,1],[22,1],[68,1],[68,2],[80,4],[75,3],[78,3],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[28,1],[32,1],[86,1],[87,1],[83,1],[83,1],[25,1],[25,3],[84,4],[85,3],[85,4],[96,1],[96,2],[65,1],[65,3],[18,1],[18,3],[97,1],[97,1],[97,3],[97,2]], +symbols_: {"error":2,"Root":3,"Query":4,"EOF":5,"SelectQuery":6,"Unions":7,"SelectWithLimitQuery":8,"BasicSelectQuery":9,"Select":10,"OrderClause":11,"GroupClause":12,"LimitClause":13,"SelectClause":14,"WhereClause":15,"SELECT":16,"Top":17,"Fields":18,"FROM":19,"Table":20,"Joins":21,"Expression":22,"DISTINCT":23,"TOP":24,"Literal":25,"AS":26,"LEFT_PAREN":27,"List":28,"RIGHT_PAREN":29,"WINDOW":30,"WINDOW_FUNCTION":31,"Number":32,"Union":33,"UNION":34,"ALL":35,"Join":36,"INNER":37,"JOIN":38,"ON":39,"LEFT":40,"RIGHT":41,"OUTER":42,"WHERE":43,"InConditions":44,"LIMIT":45,"SEPARATOR":46,"OFFSET":47,"ORDER":48,"BY":49,"OrderArgs":50,"OffsetClause":51,"OrderArg":52,"Value":53,"DIRECTION":54,"OffsetRows":55,"FetchClause":56,"ROW":57,"ROWS":58,"FETCH":59,"FIRST":60,"ONLY":61,"NEXT":62,"GroupBasicClause":63,"HavingClause":64,"GROUP":65,"ArgumentList":66,"HAVING":67,"CASE":68,"CaseBodies":69,"END":70,"ELSE":71,"MATH":72,"MATH_MULTI":73,"OPERATOR":74,"BETWEEN":75,"BetweenExpression":76,"CONDITIONAL":77,"SUB_SELECT_OP":78,"SubSelectExpression":79,"SUB_SELECT_UNARY_OP":80,"ExpressionList":81,"IN":82,"CaseBody":83,"WHEN":84,"THEN":85,"String":86,"Function":87,"UserFunction":88,"Boolean":89,"Parameter":90,"NUMBER":91,"BOOLEAN":92,"PARAMETER":93,"STRING":94,"DBLSTRING":95,"LITERAL":96,"DOT":97,"FUNCTION":98,"AggregateArgumentList":99,"Field":100,"STAR":101,"$accept":0,"$end":1}, +terminals_: {2:"error",5:"EOF",16:"SELECT",19:"FROM",23:"DISTINCT",24:"TOP",26:"AS",27:"LEFT_PAREN",29:"RIGHT_PAREN",30:"WINDOW",31:"WINDOW_FUNCTION",34:"UNION",35:"ALL",37:"INNER",38:"JOIN",39:"ON",40:"LEFT",41:"RIGHT",42:"OUTER",43:"WHERE",45:"LIMIT",46:"SEPARATOR",47:"OFFSET",48:"ORDER",49:"BY",54:"DIRECTION",57:"ROW",58:"ROWS",59:"FETCH",60:"FIRST",61:"ONLY",62:"NEXT",65:"GROUP",67:"HAVING",68:"CASE",70:"END",71:"ELSE",72:"MATH",73:"MATH_MULTI",74:"OPERATOR",75:"BETWEEN",77:"CONDITIONAL",78:"SUB_SELECT_OP",80:"SUB_SELECT_UNARY_OP",82:"IN",84:"WHEN",85:"THEN",91:"NUMBER",92:"BOOLEAN",93:"PARAMETER",94:"STRING",95:"DBLSTRING",96:"LITERAL",97:"DOT",98:"FUNCTION",101:"STAR"}, +productions_: [0,[3,2],[4,1],[4,2],[6,1],[6,1],[9,1],[9,2],[9,2],[9,3],[8,2],[10,1],[10,2],[14,6],[14,5],[14,5],[14,6],[14,6],[14,4],[14,4],[14,5],[14,5],[14,5],[14,6],[14,6],[17,2],[20,1],[20,2],[20,3],[20,3],[20,3],[20,4],[20,6],[7,1],[7,2],[33,2],[33,3],[21,1],[21,2],[36,5],[36,4],[36,5],[36,5],[36,6],[36,6],[36,6],[36,6],[15,2],[15,2],[13,2],[13,4],[13,4],[11,3],[11,4],[50,1],[50,3],[52,1],[52,2],[51,2],[51,3],[55,2],[55,2],[56,4],[56,4],[12,1],[12,2],[63,3],[64,2],[22,4],[22,6],[22,3],[22,3],[22,3],[22,3],[22,3],[22,3],[22,5],[22,3],[22,2],[22,1],[22,1],[44,3],[81,1],[81,3],[81,3],[69,1],[69,2],[83,4],[76,3],[79,3],[53,1],[53,1],[53,1],[53,1],[53,1],[53,1],[53,1],[28,1],[32,1],[89,1],[90,1],[86,1],[86,1],[25,1],[25,3],[87,4],[88,3],[88,4],[99,1],[99,2],[66,1],[66,3],[18,1],[18,3],[100,1],[100,1],[100,3],[100,2]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { /* this == yyval */ @@ -342,7 +342,7 @@ switch (yystate) { case 1: return this.$ = $$[$0-1]; break; -case 2: case 4: case 5: case 6: case 11: case 25: case 63: case 78: case 79: case 80: case 85: case 86: case 87: case 88: case 89: case 90: case 91: +case 2: case 4: case 5: case 6: case 11: case 25: case 64: case 79: case 80: case 85: case 90: case 91: case 92: case 93: case 94: case 95: case 96: this.$ = $$[$0]; break; case 3: @@ -412,10 +412,10 @@ break; case 28: this.$ = new yy.Table($$[$0-2], $$[$0]); break; -case 29: case 59: case 60: case 61: case 62: case 69: +case 29: case 60: case 61: case 62: case 63: case 70: case 84: this.$ = $$[$0-1]; break; -case 30: case 84: +case 30: case 89: this.$ = new yy.SubSelect($$[$0-1]); break; case 31: @@ -424,7 +424,7 @@ break; case 32: this.$ = new yy.Table($$[$0-5], null, $$[$0-4], $$[$0-3], $$[$0-1]); break; -case 33: case 37: case 53: case 105: case 107: +case 33: case 37: case 54: case 82: case 110: case 112: this.$ = [$$[$0]]; break; case 34: @@ -436,7 +436,7 @@ break; case 36: this.$ = new yy.Union($$[$0], true); break; -case 38: case 81: +case 38: case 86: this.$ = $$[$0-1].concat($$[$0]); break; case 39: @@ -463,126 +463,132 @@ break; case 46: this.$ = new yy.Join($$[$0-2], $$[$0], 'RIGHT', 'OUTER'); break; -case 47: +case 47: case 48: this.$ = new yy.Where($$[$0]); break; -case 48: +case 49: this.$ = new yy.Limit($$[$0]); break; -case 49: +case 50: this.$ = new yy.Limit($$[$0], $$[$0-2]); break; -case 50: +case 51: this.$ = new yy.Limit($$[$0-2], $$[$0]); break; -case 51: +case 52: this.$ = new yy.Order($$[$0]); break; -case 52: +case 53: this.$ = new yy.Order($$[$0-1], $$[$0]); break; -case 54: case 106: case 108: +case 55: case 111: case 113: this.$ = $$[$0-2].concat($$[$0]); break; -case 55: +case 56: this.$ = new yy.OrderArgument($$[$0], 'ASC'); break; -case 56: +case 57: this.$ = new yy.OrderArgument($$[$0-1], $$[$0]); break; -case 57: +case 58: this.$ = new yy.Offset($$[$0]); break; -case 58: +case 59: this.$ = new yy.Offset($$[$0-1], $$[$0]); break; -case 64: +case 65: this.$ = (function () { $$[$0-1].having = $$[$0]; return $$[$0-1]; }()); break; -case 65: +case 66: this.$ = new yy.Group($$[$0]); break; -case 66: +case 67: this.$ = new yy.Having($$[$0]); break; -case 67: +case 68: this.$ = new yy.Case($$[$0-2], $$[$0-1]); break; -case 68: +case 69: this.$ = new yy.Case($$[$0-4], $$[$0-3], $$[$0-1]); break; -case 70: case 71: case 72: case 73: case 74: case 76: +case 71: case 72: case 73: case 74: case 75: case 77: this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]); break; -case 75: +case 76: this.$ = new yy.Op($$[$0-3], $$[$0-4], $$[$0-1]); break; -case 77: +case 78: this.$ = new yy.UnaryOp($$[$0-1], $$[$0]); break; -case 82: -this.$ = [new yy.CaseBody($$[$0-2], $$[$0])]; +case 81: +this.$ = new yy.InConditions($$[$0-2], $$[$0]); break; case 83: +this.$ = new yy.ExpressionList($$[$0-2], $$[$0]); +break; +case 87: +this.$ = [new yy.CaseBody($$[$0-2], $$[$0])]; +break; +case 88: this.$ = new yy.BetweenOp([$$[$0-2], $$[$0]]); break; -case 92: +case 97: this.$ = new yy.ListValue($$[$0]); break; -case 93: +case 98: this.$ = new yy.NumberValue($$[$0]); break; -case 94: +case 99: this.$ = new yy.BooleanValue($$[$0]); break; -case 95: +case 100: this.$ = new yy.ParameterValue($$[$0]); break; -case 96: +case 101: this.$ = new yy.StringValue($$[$0], "'"); break; -case 97: +case 102: this.$ = new yy.StringValue($$[$0], '"'); break; -case 98: +case 103: this.$ = new yy.LiteralValue($$[$0]); break; -case 99: +case 104: this.$ = new yy.LiteralValue($$[$0-2], $$[$0]); break; -case 100: +case 105: this.$ = new yy.FunctionValue($$[$0-3], $$[$0-1]); break; -case 101: +case 106: this.$ = new yy.FunctionValue($$[$0-2], null, true); break; -case 102: +case 107: this.$ = new yy.FunctionValue($$[$0-3], $$[$0-1], true); break; -case 103: +case 108: this.$ = new yy.ArgumentListValue($$[$0]); break; -case 104: +case 109: this.$ = new yy.ArgumentListValue($$[$0], true); break; -case 109: +case 114: this.$ = new yy.Star(); break; -case 110: +case 115: this.$ = new yy.Field($$[$0]); break; -case 111: +case 116: this.$ = new yy.Field($$[$0-2], $$[$0]); break; -case 112: +case 117: this.$ = new yy.Field($$[$0-1], $$[$0]); break; } }, -table: [{3:1,4:2,6:3,8:4,9:5,10:6,14:7,16:$V0},{1:[3]},{5:[1,9]},o($V1,[2,2],{7:10,13:11,33:12,34:$V2,44:$V3}),o($V4,[2,4]),o($V4,[2,5]),o($V4,[2,6],{11:15,12:16,62:18,47:$V5,64:[1,19]}),o($V6,[2,11],{15:20,43:[1,21]}),{17:22,18:24,22:28,23:[1,23],24:$V7,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,97:26,98:$Vi},{1:[2,1]},o($V1,[2,3],{33:48,34:$V2}),o($V4,[2,10]),o($Vj,[2,33]),{32:49,88:$Vb},{6:50,8:4,9:5,10:6,14:7,16:$V0,35:[1,51]},o($V4,[2,7]),o($V4,[2,8],{11:52,47:$V5}),{48:[1,53]},o($Vk,[2,63],{63:54,66:[1,55]}),{48:[1,56]},o($V6,[2,12]),{22:57,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{18:58,22:28,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,97:26,98:$Vi},{17:59,18:60,22:28,24:$V7,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,97:26,98:$Vi},{19:[1,61],45:$Vl},{22:63,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vm,[2,107]),o($Vm,[2,109]),o($Vm,[2,110],{25:65,26:[1,64],71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr,93:$Vg}),{22:71,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{4:73,6:3,8:4,9:5,10:6,14:7,16:$V0,22:72,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vs,[2,79],{77:[1,74]}),{27:[1,76],78:75},o($Vs,[2,78]),o([5,19,26,29,34,37,38,40,41,43,44,45,46,47,53,64,66,67,69,70,71,72,73,74,76,77,79,81,82,88,89,90,91,92,93,95,98],[2,85],{27:$Vt,94:$Vu}),o($Vv,[2,86]),o($Vv,[2,87]),o($Vv,[2,88]),o($Vv,[2,89]),o($Vv,[2,90]),o($Vv,[2,91]),o($Vw,[2,98]),o([5,19,26,27,29,34,37,38,40,41,43,44,45,46,47,53,56,57,64,66,67,69,70,71,72,73,74,76,77,79,81,82,88,89,90,91,92,93,95,98],[2,93]),o($Vv,[2,96]),o($Vv,[2,97]),{27:[1,79]},o($Vv,[2,94]),o($Vv,[2,95]),o($Vj,[2,34]),o($V4,[2,48],{45:[1,80],46:[1,81]}),o($Vj,[2,35],{13:11,44:$V3}),{6:82,8:4,9:5,10:6,14:7,16:$V0},o($V4,[2,9]),{25:34,32:35,49:83,51:84,52:85,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vk,[2,64]),{22:86,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:88,25:34,27:$V8,32:35,52:31,65:87,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($V6,[2,47],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{19:[1,89],45:$Vl},{18:90,22:28,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,97:26,98:$Vi},{19:[1,91],45:$Vl},{20:92,22:93,25:94,27:$Vx,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:28,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,97:96,98:$Vi},o([27,67,79,88,89,90,91,92,93,95,98],[2,25],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{25:97,93:$Vg},o($Vm,[2,112],{94:$Vu}),{22:98,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:99,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:100,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:102,25:34,27:$V8,32:35,52:31,67:$V9,75:101,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:103,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{68:104,71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr,80:105,81:$Vy},{29:$Vz,71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr},{29:[1,108]},{27:[1,109],78:110},o($Vs,[2,77]),{4:73,6:3,8:4,9:5,10:6,14:7,16:$V0},{93:[1,111]},{22:88,23:$VA,25:34,27:$V8,29:[1,112],32:35,52:31,65:114,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,96:113},{22:88,23:$VA,25:34,27:$V8,32:35,52:31,65:114,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,96:116},{32:117,88:$Vb},{32:118,88:$Vb},o($Vj,[2,36],{13:11,44:$V3}),o($V4,[2,51],{50:119,45:[1,120],46:[1,121]}),o($VB,[2,53]),o($VB,[2,55],{53:[1,122]}),o($Vk,[2,66],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o([5,29,34,44,47,66],[2,65],{45:$VC}),o($VD,$VE,{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{20:124,22:125,25:94,27:$Vx,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{19:[1,126],45:$Vl},{20:127,22:128,25:94,27:$Vx,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VF,[2,18],{21:129,36:130,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VF,[2,19],{36:130,21:135,37:$VG,38:$VH,40:$VI,41:$VJ,71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o([5,29,34,37,38,40,41,43,44,47,64,71,72,73,74,76,77],$VK,{25:136,26:$VL,27:$Vt,30:$VM,93:$Vg,94:$Vu}),{4:140,6:3,8:4,9:5,10:6,14:7,16:$V0,22:141,25:34,27:$V8,28:139,32:35,52:31,65:142,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vm,[2,108]),o($Vm,[2,111],{94:$Vu}),o([5,19,26,27,29,34,37,38,40,41,43,44,45,47,64,66,67,69,70,71,73,76,79,81,82,88,89,90,91,92,93,95,98],[2,70],{72:$Vo,74:$Vq}),o([5,19,26,27,29,34,37,38,40,41,43,44,45,47,64,66,67,69,70,71,72,73,76,79,81,82,88,89,90,91,92,93,95,98],[2,71],{74:$Vq}),o([5,19,26,27,29,34,37,38,40,41,43,44,45,47,64,66,67,69,70,73,76,79,81,82,88,89,90,91,92,93,95,98],[2,72],{71:$Vn,72:$Vo,74:$Vq}),o($Vs,[2,73]),{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:[1,143]},o($VN,[2,74],{71:$Vn,72:$Vo,73:$Vp,74:$Vq}),{69:[1,144],70:[1,145],80:146,81:$Vy},o($VO,[2,80]),{22:147,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vs,[2,69]),o($Vs,[2,84]),{4:73,6:3,8:4,9:5,10:6,14:7,16:$V0,22:88,25:34,27:$V8,28:148,32:35,52:31,65:142,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vs,[2,76]),o($Vw,[2,99]),o($Vv,[2,101]),{29:[1,149]},{29:[2,103],45:$VC},{22:88,25:34,27:$V8,32:35,52:31,65:150,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{29:[1,151]},o($V4,[2,49]),o($V4,[2,50]),o($V4,[2,52]),{25:34,32:35,51:152,52:85,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{32:154,54:153,88:$Vb},o($VB,[2,56]),{22:155,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VF,[2,14],{36:130,21:156,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VF,[2,15],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{20:157,22:158,25:94,27:$Vx,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VF,[2,20],{36:130,21:159,37:$VG,38:$VH,40:$VI,41:$VJ}),{21:160,36:130,37:$VG,38:$VH,40:$VI,41:$VJ,71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr},o($VF,[2,21],{36:161,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VP,[2,37]),{38:[1,162]},{20:163,25:164,27:$VQ,93:$Vg},{37:[1,167],38:[1,166],42:[1,168]},{37:[1,170],38:[1,169],42:[1,171]},o($VF,[2,22],{36:161,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VR,[2,27],{94:$Vu}),{25:172,93:$Vg},{31:[1,173]},{29:[1,174]},{29:[1,175]},{29:$Vz,45:$VE,71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr},{29:[2,92],45:$VC},{22:176,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vs,[2,67]),{22:177,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VO,[2,81]),{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr,82:[1,178]},{29:[1,179]},o($Vv,[2,102]),{29:[2,104],45:$VC},o($Vv,[2,100]),o($VB,[2,54]),o($V4,[2,57],{55:180,58:[1,181]}),{56:[1,182],57:[1,183]},o($VD,[2,106],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VF,[2,13],{36:161,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VF,[2,16]),o($VF,[2,17],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VF,[2,23],{36:161,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VF,[2,24],{36:161,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VP,[2,38]),{20:184,25:164,27:$VQ,93:$Vg},{39:[1,185]},{25:136,26:$VL,30:$VM,39:$VK,93:$Vg,94:$Vu},{4:186,6:3,8:4,9:5,10:6,14:7,16:$V0,22:88,25:34,27:$V8,28:139,32:35,52:31,65:142,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{20:187,25:164,27:$VQ,93:$Vg},{38:[1,188]},{38:[1,189]},{20:190,25:164,27:$VQ,93:$Vg},{38:[1,191]},{38:[1,192]},o($VR,[2,28],{94:$Vu}),{27:[1,193]},o($VR,[2,29]),o([5,29,34,37,38,40,41,43,44,47,64,71,72,73,74,76],$VS,{25:194,93:$Vg}),o($VN,[2,83],{71:$Vn,72:$Vo,73:$Vp,74:$Vq}),{69:[1,195],71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr},{22:196,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vs,[2,75]),o($V4,[2,58]),{59:[1,197],61:[1,198]},o($VT,[2,59]),o($VT,[2,60]),{39:[1,199]},{22:200,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{29:[1,201]},{39:[1,202]},{20:203,25:164,27:$VQ,93:$Vg},{20:204,25:164,27:$VQ,93:$Vg},{39:[1,205]},{20:206,25:164,27:$VQ,93:$Vg},{20:207,25:164,27:$VQ,93:$Vg},{32:208,88:$Vb},o($VR,[2,31],{94:$Vu}),o($Vs,[2,68]),o($VO,[2,82],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{32:154,54:209,88:$Vb},{32:154,54:210,88:$Vb},{22:211,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VP,[2,40],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{25:194,39:$VS,93:$Vg},{22:212,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{39:[1,213]},{39:[1,214]},{22:215,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{39:[1,216]},{39:[1,217]},{29:[1,218]},{60:[1,219]},{60:[1,220]},o($VP,[2,39],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VP,[2,41],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{22:221,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:222,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VP,[2,42],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{22:223,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:224,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VR,[2,32]),o($V4,[2,61]),o($V4,[2,62]),o($VP,[2,43],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VP,[2,45],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VP,[2,44],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VP,[2,46],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr})], +table: [{3:1,4:2,6:3,8:4,9:5,10:6,14:7,16:$V0},{1:[3]},{5:[1,9]},o($V1,[2,2],{7:10,13:11,33:12,34:$V2,45:$V3}),o($V4,[2,4]),o($V4,[2,5]),o($V4,[2,6],{11:15,12:16,63:18,48:$V5,65:[1,19]}),o($V6,[2,11],{15:20,43:[1,21]}),{17:22,18:24,22:28,23:[1,23],24:$V7,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,100:26,101:$Vi},{1:[2,1]},o($V1,[2,3],{33:48,34:$V2}),o($V4,[2,10]),o($Vj,[2,33]),{32:49,91:$Vb},{6:50,8:4,9:5,10:6,14:7,16:$V0,35:[1,51]},o($V4,[2,7]),o($V4,[2,8],{11:52,48:$V5}),{49:[1,53]},o($Vk,[2,64],{64:54,67:[1,55]}),{49:[1,56]},o($V6,[2,12]),{22:57,25:34,27:$Vl,32:35,44:58,53:31,68:$V9,79:33,80:$Va,81:60,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{18:61,22:28,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,100:26,101:$Vi},{17:62,18:63,22:28,24:$V7,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,100:26,101:$Vi},{19:[1,64],46:$Vm},{22:66,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vn,[2,112]),o($Vn,[2,114]),o($Vn,[2,115],{25:68,26:[1,67],72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs,96:$Vg}),{22:74,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{4:76,6:3,8:4,9:5,10:6,14:7,16:$V0,22:75,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vt,[2,80],{78:[1,77]}),{27:[1,79],79:78},o($Vt,[2,79]),o([5,19,26,29,34,37,38,40,41,43,45,46,47,48,54,65,67,68,70,71,72,73,74,75,77,78,80,82,84,85,91,92,93,94,95,96,98,101],[2,90],{27:$Vu,97:$Vv}),o($Vw,[2,91]),o($Vw,[2,92]),o($Vw,[2,93]),o($Vw,[2,94]),o($Vw,[2,95]),o($Vw,[2,96]),o($Vx,[2,103]),o([5,19,26,27,29,34,37,38,40,41,43,45,46,47,48,54,57,58,65,67,68,70,71,72,73,74,75,77,78,80,82,84,85,91,92,93,94,95,96,98,101],[2,98]),o($Vw,[2,101]),o($Vw,[2,102]),{27:[1,82]},o($Vw,[2,99]),o($Vw,[2,100]),o($Vj,[2,34]),o($V4,[2,49],{46:[1,83],47:[1,84]}),o($Vj,[2,35],{13:11,45:$V3}),{6:85,8:4,9:5,10:6,14:7,16:$V0},o($V4,[2,9]),{25:34,32:35,50:86,52:87,53:88,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vk,[2,65]),{22:89,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:91,25:34,27:$V8,32:35,53:31,66:90,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($V6,[2,47],{46:$Vy,82:$Vy,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($V6,[2,48]),{4:76,6:3,8:4,9:5,10:6,14:7,16:$V0,22:92,25:34,27:$Vl,32:35,53:31,68:$V9,79:33,80:$Va,81:93,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{46:$Vz,82:[1,94]},{19:[1,96],46:$Vm},{18:97,22:28,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,100:26,101:$Vi},{19:[1,98],46:$Vm},{20:99,22:100,25:101,27:$VA,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:28,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,100:103,101:$Vi},o([27,68,80,91,92,93,94,95,96,98,101],[2,25],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{25:104,96:$Vg},o($Vn,[2,117],{97:$Vv}),{22:105,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:106,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:107,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:109,25:34,27:$V8,32:35,53:31,68:$V9,76:108,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:110,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{69:111,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs,83:112,84:$VB},{29:$VC,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs},{29:[1,115]},{27:[1,116],79:117},o($Vt,[2,78]),{4:76,6:3,8:4,9:5,10:6,14:7,16:$V0},{96:[1,118]},{22:91,23:$VD,25:34,27:$V8,29:[1,119],32:35,53:31,66:121,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,99:120},{22:91,23:$VD,25:34,27:$V8,32:35,53:31,66:121,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,99:123},{32:124,91:$Vb},{32:125,91:$Vb},o($Vj,[2,36],{13:11,45:$V3}),o($V4,[2,52],{51:126,46:[1,127],47:[1,128]}),o($VE,[2,54]),o($VE,[2,56],{54:[1,129]}),o($Vk,[2,67],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o([5,29,34,45,48,67],[2,66],{46:$VF}),o($VG,$VH,{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{29:$VC,46:$Vy,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs},{29:[1,131],46:$Vz},{22:133,25:34,27:$Vl,32:35,53:31,68:$V9,79:33,80:$Va,81:132,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:134,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{20:135,22:136,25:101,27:$VA,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{19:[1,137],46:$Vm},{20:138,22:139,25:101,27:$VA,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VI,[2,18],{21:140,36:141,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VI,[2,19],{36:141,21:146,37:$VJ,38:$VK,40:$VL,41:$VM,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o([5,29,34,37,38,40,41,43,45,48,65,72,73,74,75,77,78],$VN,{25:147,26:$VO,27:$Vu,30:$VP,96:$Vg,97:$Vv}),{4:151,6:3,8:4,9:5,10:6,14:7,16:$V0,22:152,25:34,27:$V8,28:150,32:35,53:31,66:153,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vn,[2,113]),o($Vn,[2,116],{97:$Vv}),o([5,19,26,27,29,34,37,38,40,41,43,45,46,48,65,67,68,70,71,72,74,77,80,82,84,85,91,92,93,94,95,96,98,101],[2,71],{73:$Vp,75:$Vr}),o([5,19,26,27,29,34,37,38,40,41,43,45,46,48,65,67,68,70,71,72,73,74,77,80,82,84,85,91,92,93,94,95,96,98,101],[2,72],{75:$Vr}),o([5,19,26,27,29,34,37,38,40,41,43,45,46,48,65,67,68,70,71,74,77,80,82,84,85,91,92,93,94,95,96,98,101],[2,73],{72:$Vo,73:$Vp,75:$Vr}),o($Vt,[2,74]),{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:[1,154]},o($VQ,[2,75],{72:$Vo,73:$Vp,74:$Vq,75:$Vr}),{70:[1,155],71:[1,156],83:157,84:$VB},o($VR,[2,85]),{22:158,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vt,[2,70]),o($Vt,[2,89]),{4:76,6:3,8:4,9:5,10:6,14:7,16:$V0,22:91,25:34,27:$V8,28:159,32:35,53:31,66:153,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vt,[2,77]),o($Vx,[2,104]),o($Vw,[2,106]),{29:[1,160]},{29:[2,108],46:$VF},{22:91,25:34,27:$V8,32:35,53:31,66:161,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{29:[1,162]},o($V4,[2,50]),o($V4,[2,51]),o($V4,[2,53]),{25:34,32:35,52:163,53:88,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{32:165,55:164,91:$Vb},o($VE,[2,57]),{22:166,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VS,[2,84]),o($V6,[2,81],{46:$Vz}),o([5,29,34,45,46,48,65],$Vy,{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VS,[2,83],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VI,[2,14],{36:141,21:167,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VI,[2,15],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{20:168,22:169,25:101,27:$VA,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VI,[2,20],{36:141,21:170,37:$VJ,38:$VK,40:$VL,41:$VM}),{21:171,36:141,37:$VJ,38:$VK,40:$VL,41:$VM,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs},o($VI,[2,21],{36:172,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VT,[2,37]),{38:[1,173]},{20:174,25:175,27:$VU,96:$Vg},{37:[1,178],38:[1,177],42:[1,179]},{37:[1,181],38:[1,180],42:[1,182]},o($VI,[2,22],{36:172,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VV,[2,27],{97:$Vv}),{25:183,96:$Vg},{31:[1,184]},{29:[1,185]},{29:[1,186]},{29:$VC,46:$VH,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs},{29:[2,97],46:$VF},{22:187,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vt,[2,68]),{22:188,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VR,[2,86]),{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs,85:[1,189]},{29:[1,190]},o($Vw,[2,107]),{29:[2,109],46:$VF},o($Vw,[2,105]),o($VE,[2,55]),o($V4,[2,58],{56:191,59:[1,192]}),{57:[1,193],58:[1,194]},o($VG,[2,111],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VI,[2,13],{36:172,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VI,[2,16]),o($VI,[2,17],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VI,[2,23],{36:172,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VI,[2,24],{36:172,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VT,[2,38]),{20:195,25:175,27:$VU,96:$Vg},{39:[1,196]},{25:147,26:$VO,30:$VP,39:$VN,96:$Vg,97:$Vv},{4:197,6:3,8:4,9:5,10:6,14:7,16:$V0,22:91,25:34,27:$V8,28:150,32:35,53:31,66:153,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{20:198,25:175,27:$VU,96:$Vg},{38:[1,199]},{38:[1,200]},{20:201,25:175,27:$VU,96:$Vg},{38:[1,202]},{38:[1,203]},o($VV,[2,28],{97:$Vv}),{27:[1,204]},o($VV,[2,29]),o([5,29,34,37,38,40,41,43,45,48,65,72,73,74,75,77],$VW,{25:205,96:$Vg}),o($VQ,[2,88],{72:$Vo,73:$Vp,74:$Vq,75:$Vr}),{70:[1,206],72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs},{22:207,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vt,[2,76]),o($V4,[2,59]),{60:[1,208],62:[1,209]},o($VX,[2,60]),o($VX,[2,61]),{39:[1,210]},{22:211,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{29:[1,212]},{39:[1,213]},{20:214,25:175,27:$VU,96:$Vg},{20:215,25:175,27:$VU,96:$Vg},{39:[1,216]},{20:217,25:175,27:$VU,96:$Vg},{20:218,25:175,27:$VU,96:$Vg},{32:219,91:$Vb},o($VV,[2,31],{97:$Vv}),o($Vt,[2,69]),o($VR,[2,87],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{32:165,55:220,91:$Vb},{32:165,55:221,91:$Vb},{22:222,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VT,[2,40],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{25:205,39:$VW,96:$Vg},{22:223,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{39:[1,224]},{39:[1,225]},{22:226,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{39:[1,227]},{39:[1,228]},{29:[1,229]},{61:[1,230]},{61:[1,231]},o($VT,[2,39],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VT,[2,41],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{22:232,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:233,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VT,[2,42],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{22:234,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:235,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VV,[2,32]),o($V4,[2,62]),o($V4,[2,63]),o($VT,[2,43],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VT,[2,45],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VT,[2,44],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VT,[2,46],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs})], defaultActions: {9:[2,1]}, parseError: function parseError(str, hash) { if (hash.recoverable) { @@ -757,7 +763,7 @@ if (typeof module !== 'undefined' && require.main === module) { var exports = this; // Generated by CoffeeScript 1.8.0 (function() { - var ArgumentListValue, BetweenOp, Case, CaseBody, Field, FunctionValue, Group, Having, Join, Limit, ListValue, LiteralValue, Offset, Op, Order, OrderArgument, ParameterValue, Select, Star, StringValue, SubSelect, Table, UnaryOp, Union, Where, indent; + var ArgumentListValue, BetweenOp, Case, CaseBody, ExpressionList, Field, FunctionValue, Group, Having, InConditions, Join, Limit, ListValue, LiteralValue, Offset, Op, Order, OrderArgument, ParameterValue, Select, Star, StringValue, SubSelect, Table, UnaryOp, Union, Where, indent; indent = function(str) { var line; @@ -1288,6 +1294,37 @@ if (typeof module !== 'undefined' && require.main === module) { })(); + exports.ExpressionList = ExpressionList = (function() { + function ExpressionList(expressions, expression) { + this.expressions = expressions; + this.expression = expression; + null; + } + + ExpressionList.prototype.toString = function() { + console.log(this.expressions.toString && this.expressions.toString()); + return "(" + this.expressions + ", " + this.expression + ")"; + }; + + return ExpressionList; + + })(); + + exports.InConditions = InConditions = (function() { + function InConditions(expression, conditions) { + this.expression = expression; + this.conditions = conditions; + null; + } + + InConditions.prototype.toString = function() { + return "(" + this.expression + " IN " + this.conditions + ")"; + }; + + return InConditions; + + })(); + }).call(this); };require['./parser'] = new function() { diff --git a/lib/compiled_parser.js b/lib/compiled_parser.js index 6733d1c..1dcb39e 100644 --- a/lib/compiled_parser.js +++ b/lib/compiled_parser.js @@ -72,12 +72,12 @@ } */ var parser = (function(){ -var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,8],$V1=[5,29],$V2=[1,14],$V3=[1,13],$V4=[5,29,34,44],$V5=[1,17],$V6=[5,29,34,44,47,64],$V7=[1,25],$V8=[1,30],$V9=[1,29],$Va=[1,32],$Vb=[1,42],$Vc=[1,46],$Vd=[1,47],$Ve=[1,43],$Vf=[1,44],$Vg=[1,41],$Vh=[1,45],$Vi=[1,27],$Vj=[5,29,34],$Vk=[5,29,34,44,47],$Vl=[1,62],$Vm=[19,45],$Vn=[1,66],$Vo=[1,67],$Vp=[1,68],$Vq=[1,69],$Vr=[1,70],$Vs=[5,19,26,27,29,34,37,38,40,41,43,44,45,47,64,66,67,69,70,71,72,73,74,76,79,81,82,88,89,90,91,92,93,95,98],$Vt=[1,78],$Vu=[1,77],$Vv=[5,19,26,27,29,34,37,38,40,41,43,44,45,46,47,53,64,66,67,69,70,71,72,73,74,76,77,79,81,82,88,89,90,91,92,93,95,98],$Vw=[5,19,26,27,29,30,34,37,38,39,40,41,43,44,45,46,47,53,64,66,67,69,70,71,72,73,74,76,77,79,81,82,88,89,90,91,92,93,94,95,98],$Vx=[1,95],$Vy=[1,106],$Vz=[1,107],$VA=[1,115],$VB=[5,29,34,44,45,46],$VC=[1,123],$VD=[5,29,34,44,45,47,66],$VE=[2,105],$VF=[5,29,34,43,44,47,64],$VG=[1,131],$VH=[1,132],$VI=[1,133],$VJ=[1,134],$VK=[2,26],$VL=[1,137],$VM=[1,138],$VN=[5,19,26,27,29,34,37,38,40,41,43,44,45,47,64,66,67,69,70,76,79,81,82,88,89,90,91,92,93,95,98],$VO=[69,70,81],$VP=[5,29,34,37,38,40,41,43,44,47,64],$VQ=[1,165],$VR=[5,29,34,37,38,39,40,41,43,44,47,64],$VS=[2,30],$VT=[5,29,34,44,58,60]; +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,8],$V1=[5,29],$V2=[1,14],$V3=[1,13],$V4=[5,29,34,45],$V5=[1,17],$V6=[5,29,34,45,48,65],$V7=[1,25],$V8=[1,30],$V9=[1,29],$Va=[1,32],$Vb=[1,42],$Vc=[1,46],$Vd=[1,47],$Ve=[1,43],$Vf=[1,44],$Vg=[1,41],$Vh=[1,45],$Vi=[1,27],$Vj=[5,29,34],$Vk=[5,29,34,45,48],$Vl=[1,59],$Vm=[1,65],$Vn=[19,46],$Vo=[1,69],$Vp=[1,70],$Vq=[1,71],$Vr=[1,72],$Vs=[1,73],$Vt=[5,19,26,27,29,34,37,38,40,41,43,45,46,48,65,67,68,70,71,72,73,74,75,77,80,82,84,85,91,92,93,94,95,96,98,101],$Vu=[1,81],$Vv=[1,80],$Vw=[5,19,26,27,29,34,37,38,40,41,43,45,46,47,48,54,65,67,68,70,71,72,73,74,75,77,78,80,82,84,85,91,92,93,94,95,96,98,101],$Vx=[5,19,26,27,29,30,34,37,38,39,40,41,43,45,46,47,48,54,65,67,68,70,71,72,73,74,75,77,78,80,82,84,85,91,92,93,94,95,96,97,98,101],$Vy=[2,82],$Vz=[1,95],$VA=[1,102],$VB=[1,113],$VC=[1,114],$VD=[1,122],$VE=[5,29,34,45,46,47],$VF=[1,130],$VG=[5,29,34,45,46,48,67],$VH=[2,110],$VI=[5,29,34,43,45,48,65],$VJ=[1,142],$VK=[1,143],$VL=[1,144],$VM=[1,145],$VN=[2,26],$VO=[1,148],$VP=[1,149],$VQ=[5,19,26,27,29,34,37,38,40,41,43,45,46,48,65,67,68,70,71,77,80,82,84,85,91,92,93,94,95,96,98,101],$VR=[70,71,84],$VS=[5,29,34,45,46,48,65,82],$VT=[5,29,34,37,38,40,41,43,45,48,65],$VU=[1,176],$VV=[5,29,34,37,38,39,40,41,43,45,48,65],$VW=[2,30],$VX=[5,29,34,45,59,61]; var parser = {trace: function trace() { }, yy: {}, -symbols_: {"error":2,"Root":3,"Query":4,"EOF":5,"SelectQuery":6,"Unions":7,"SelectWithLimitQuery":8,"BasicSelectQuery":9,"Select":10,"OrderClause":11,"GroupClause":12,"LimitClause":13,"SelectClause":14,"WhereClause":15,"SELECT":16,"Top":17,"Fields":18,"FROM":19,"Table":20,"Joins":21,"Expression":22,"DISTINCT":23,"TOP":24,"Literal":25,"AS":26,"LEFT_PAREN":27,"List":28,"RIGHT_PAREN":29,"WINDOW":30,"WINDOW_FUNCTION":31,"Number":32,"Union":33,"UNION":34,"ALL":35,"Join":36,"INNER":37,"JOIN":38,"ON":39,"LEFT":40,"RIGHT":41,"OUTER":42,"WHERE":43,"LIMIT":44,"SEPARATOR":45,"OFFSET":46,"ORDER":47,"BY":48,"OrderArgs":49,"OffsetClause":50,"OrderArg":51,"Value":52,"DIRECTION":53,"OffsetRows":54,"FetchClause":55,"ROW":56,"ROWS":57,"FETCH":58,"FIRST":59,"ONLY":60,"NEXT":61,"GroupBasicClause":62,"HavingClause":63,"GROUP":64,"ArgumentList":65,"HAVING":66,"CASE":67,"CaseBodies":68,"END":69,"ELSE":70,"MATH":71,"MATH_MULTI":72,"OPERATOR":73,"BETWEEN":74,"BetweenExpression":75,"CONDITIONAL":76,"SUB_SELECT_OP":77,"SubSelectExpression":78,"SUB_SELECT_UNARY_OP":79,"CaseBody":80,"WHEN":81,"THEN":82,"String":83,"Function":84,"UserFunction":85,"Boolean":86,"Parameter":87,"NUMBER":88,"BOOLEAN":89,"PARAMETER":90,"STRING":91,"DBLSTRING":92,"LITERAL":93,"DOT":94,"FUNCTION":95,"AggregateArgumentList":96,"Field":97,"STAR":98,"$accept":0,"$end":1}, -terminals_: {2:"error",5:"EOF",16:"SELECT",19:"FROM",23:"DISTINCT",24:"TOP",26:"AS",27:"LEFT_PAREN",29:"RIGHT_PAREN",30:"WINDOW",31:"WINDOW_FUNCTION",34:"UNION",35:"ALL",37:"INNER",38:"JOIN",39:"ON",40:"LEFT",41:"RIGHT",42:"OUTER",43:"WHERE",44:"LIMIT",45:"SEPARATOR",46:"OFFSET",47:"ORDER",48:"BY",53:"DIRECTION",56:"ROW",57:"ROWS",58:"FETCH",59:"FIRST",60:"ONLY",61:"NEXT",64:"GROUP",66:"HAVING",67:"CASE",69:"END",70:"ELSE",71:"MATH",72:"MATH_MULTI",73:"OPERATOR",74:"BETWEEN",76:"CONDITIONAL",77:"SUB_SELECT_OP",79:"SUB_SELECT_UNARY_OP",81:"WHEN",82:"THEN",88:"NUMBER",89:"BOOLEAN",90:"PARAMETER",91:"STRING",92:"DBLSTRING",93:"LITERAL",94:"DOT",95:"FUNCTION",98:"STAR"}, -productions_: [0,[3,2],[4,1],[4,2],[6,1],[6,1],[9,1],[9,2],[9,2],[9,3],[8,2],[10,1],[10,2],[14,6],[14,5],[14,5],[14,6],[14,6],[14,4],[14,4],[14,5],[14,5],[14,5],[14,6],[14,6],[17,2],[20,1],[20,2],[20,3],[20,3],[20,3],[20,4],[20,6],[7,1],[7,2],[33,2],[33,3],[21,1],[21,2],[36,5],[36,4],[36,5],[36,5],[36,6],[36,6],[36,6],[36,6],[15,2],[13,2],[13,4],[13,4],[11,3],[11,4],[49,1],[49,3],[51,1],[51,2],[50,2],[50,3],[54,2],[54,2],[55,4],[55,4],[12,1],[12,2],[62,3],[63,2],[22,4],[22,6],[22,3],[22,3],[22,3],[22,3],[22,3],[22,3],[22,5],[22,3],[22,2],[22,1],[22,1],[68,1],[68,2],[80,4],[75,3],[78,3],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[28,1],[32,1],[86,1],[87,1],[83,1],[83,1],[25,1],[25,3],[84,4],[85,3],[85,4],[96,1],[96,2],[65,1],[65,3],[18,1],[18,3],[97,1],[97,1],[97,3],[97,2]], +symbols_: {"error":2,"Root":3,"Query":4,"EOF":5,"SelectQuery":6,"Unions":7,"SelectWithLimitQuery":8,"BasicSelectQuery":9,"Select":10,"OrderClause":11,"GroupClause":12,"LimitClause":13,"SelectClause":14,"WhereClause":15,"SELECT":16,"Top":17,"Fields":18,"FROM":19,"Table":20,"Joins":21,"Expression":22,"DISTINCT":23,"TOP":24,"Literal":25,"AS":26,"LEFT_PAREN":27,"List":28,"RIGHT_PAREN":29,"WINDOW":30,"WINDOW_FUNCTION":31,"Number":32,"Union":33,"UNION":34,"ALL":35,"Join":36,"INNER":37,"JOIN":38,"ON":39,"LEFT":40,"RIGHT":41,"OUTER":42,"WHERE":43,"InConditions":44,"LIMIT":45,"SEPARATOR":46,"OFFSET":47,"ORDER":48,"BY":49,"OrderArgs":50,"OffsetClause":51,"OrderArg":52,"Value":53,"DIRECTION":54,"OffsetRows":55,"FetchClause":56,"ROW":57,"ROWS":58,"FETCH":59,"FIRST":60,"ONLY":61,"NEXT":62,"GroupBasicClause":63,"HavingClause":64,"GROUP":65,"ArgumentList":66,"HAVING":67,"CASE":68,"CaseBodies":69,"END":70,"ELSE":71,"MATH":72,"MATH_MULTI":73,"OPERATOR":74,"BETWEEN":75,"BetweenExpression":76,"CONDITIONAL":77,"SUB_SELECT_OP":78,"SubSelectExpression":79,"SUB_SELECT_UNARY_OP":80,"ExpressionList":81,"IN":82,"CaseBody":83,"WHEN":84,"THEN":85,"String":86,"Function":87,"UserFunction":88,"Boolean":89,"Parameter":90,"NUMBER":91,"BOOLEAN":92,"PARAMETER":93,"STRING":94,"DBLSTRING":95,"LITERAL":96,"DOT":97,"FUNCTION":98,"AggregateArgumentList":99,"Field":100,"STAR":101,"$accept":0,"$end":1}, +terminals_: {2:"error",5:"EOF",16:"SELECT",19:"FROM",23:"DISTINCT",24:"TOP",26:"AS",27:"LEFT_PAREN",29:"RIGHT_PAREN",30:"WINDOW",31:"WINDOW_FUNCTION",34:"UNION",35:"ALL",37:"INNER",38:"JOIN",39:"ON",40:"LEFT",41:"RIGHT",42:"OUTER",43:"WHERE",45:"LIMIT",46:"SEPARATOR",47:"OFFSET",48:"ORDER",49:"BY",54:"DIRECTION",57:"ROW",58:"ROWS",59:"FETCH",60:"FIRST",61:"ONLY",62:"NEXT",65:"GROUP",67:"HAVING",68:"CASE",70:"END",71:"ELSE",72:"MATH",73:"MATH_MULTI",74:"OPERATOR",75:"BETWEEN",77:"CONDITIONAL",78:"SUB_SELECT_OP",80:"SUB_SELECT_UNARY_OP",82:"IN",84:"WHEN",85:"THEN",91:"NUMBER",92:"BOOLEAN",93:"PARAMETER",94:"STRING",95:"DBLSTRING",96:"LITERAL",97:"DOT",98:"FUNCTION",101:"STAR"}, +productions_: [0,[3,2],[4,1],[4,2],[6,1],[6,1],[9,1],[9,2],[9,2],[9,3],[8,2],[10,1],[10,2],[14,6],[14,5],[14,5],[14,6],[14,6],[14,4],[14,4],[14,5],[14,5],[14,5],[14,6],[14,6],[17,2],[20,1],[20,2],[20,3],[20,3],[20,3],[20,4],[20,6],[7,1],[7,2],[33,2],[33,3],[21,1],[21,2],[36,5],[36,4],[36,5],[36,5],[36,6],[36,6],[36,6],[36,6],[15,2],[15,2],[13,2],[13,4],[13,4],[11,3],[11,4],[50,1],[50,3],[52,1],[52,2],[51,2],[51,3],[55,2],[55,2],[56,4],[56,4],[12,1],[12,2],[63,3],[64,2],[22,4],[22,6],[22,3],[22,3],[22,3],[22,3],[22,3],[22,3],[22,5],[22,3],[22,2],[22,1],[22,1],[44,3],[81,1],[81,3],[81,3],[69,1],[69,2],[83,4],[76,3],[79,3],[53,1],[53,1],[53,1],[53,1],[53,1],[53,1],[53,1],[28,1],[32,1],[89,1],[90,1],[86,1],[86,1],[25,1],[25,3],[87,4],[88,3],[88,4],[99,1],[99,2],[66,1],[66,3],[18,1],[18,3],[100,1],[100,1],[100,3],[100,2]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { /* this == yyval */ @@ -86,7 +86,7 @@ switch (yystate) { case 1: return this.$ = $$[$0-1]; break; -case 2: case 4: case 5: case 6: case 11: case 25: case 63: case 78: case 79: case 80: case 85: case 86: case 87: case 88: case 89: case 90: case 91: +case 2: case 4: case 5: case 6: case 11: case 25: case 64: case 79: case 80: case 85: case 90: case 91: case 92: case 93: case 94: case 95: case 96: this.$ = $$[$0]; break; case 3: @@ -156,10 +156,10 @@ break; case 28: this.$ = new yy.Table($$[$0-2], $$[$0]); break; -case 29: case 59: case 60: case 61: case 62: case 69: +case 29: case 60: case 61: case 62: case 63: case 70: case 84: this.$ = $$[$0-1]; break; -case 30: case 84: +case 30: case 89: this.$ = new yy.SubSelect($$[$0-1]); break; case 31: @@ -168,7 +168,7 @@ break; case 32: this.$ = new yy.Table($$[$0-5], null, $$[$0-4], $$[$0-3], $$[$0-1]); break; -case 33: case 37: case 53: case 105: case 107: +case 33: case 37: case 54: case 82: case 110: case 112: this.$ = [$$[$0]]; break; case 34: @@ -180,7 +180,7 @@ break; case 36: this.$ = new yy.Union($$[$0], true); break; -case 38: case 81: +case 38: case 86: this.$ = $$[$0-1].concat($$[$0]); break; case 39: @@ -207,126 +207,132 @@ break; case 46: this.$ = new yy.Join($$[$0-2], $$[$0], 'RIGHT', 'OUTER'); break; -case 47: +case 47: case 48: this.$ = new yy.Where($$[$0]); break; -case 48: +case 49: this.$ = new yy.Limit($$[$0]); break; -case 49: +case 50: this.$ = new yy.Limit($$[$0], $$[$0-2]); break; -case 50: +case 51: this.$ = new yy.Limit($$[$0-2], $$[$0]); break; -case 51: +case 52: this.$ = new yy.Order($$[$0]); break; -case 52: +case 53: this.$ = new yy.Order($$[$0-1], $$[$0]); break; -case 54: case 106: case 108: +case 55: case 111: case 113: this.$ = $$[$0-2].concat($$[$0]); break; -case 55: +case 56: this.$ = new yy.OrderArgument($$[$0], 'ASC'); break; -case 56: +case 57: this.$ = new yy.OrderArgument($$[$0-1], $$[$0]); break; -case 57: +case 58: this.$ = new yy.Offset($$[$0]); break; -case 58: +case 59: this.$ = new yy.Offset($$[$0-1], $$[$0]); break; -case 64: +case 65: this.$ = (function () { $$[$0-1].having = $$[$0]; return $$[$0-1]; }()); break; -case 65: +case 66: this.$ = new yy.Group($$[$0]); break; -case 66: +case 67: this.$ = new yy.Having($$[$0]); break; -case 67: +case 68: this.$ = new yy.Case($$[$0-2], $$[$0-1]); break; -case 68: +case 69: this.$ = new yy.Case($$[$0-4], $$[$0-3], $$[$0-1]); break; -case 70: case 71: case 72: case 73: case 74: case 76: +case 71: case 72: case 73: case 74: case 75: case 77: this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]); break; -case 75: +case 76: this.$ = new yy.Op($$[$0-3], $$[$0-4], $$[$0-1]); break; -case 77: +case 78: this.$ = new yy.UnaryOp($$[$0-1], $$[$0]); break; -case 82: -this.$ = [new yy.CaseBody($$[$0-2], $$[$0])]; +case 81: +this.$ = new yy.InConditions($$[$0-2], $$[$0]); break; case 83: +this.$ = new yy.ExpressionList($$[$0-2], $$[$0]); +break; +case 87: +this.$ = [new yy.CaseBody($$[$0-2], $$[$0])]; +break; +case 88: this.$ = new yy.BetweenOp([$$[$0-2], $$[$0]]); break; -case 92: +case 97: this.$ = new yy.ListValue($$[$0]); break; -case 93: +case 98: this.$ = new yy.NumberValue($$[$0]); break; -case 94: +case 99: this.$ = new yy.BooleanValue($$[$0]); break; -case 95: +case 100: this.$ = new yy.ParameterValue($$[$0]); break; -case 96: +case 101: this.$ = new yy.StringValue($$[$0], "'"); break; -case 97: +case 102: this.$ = new yy.StringValue($$[$0], '"'); break; -case 98: +case 103: this.$ = new yy.LiteralValue($$[$0]); break; -case 99: +case 104: this.$ = new yy.LiteralValue($$[$0-2], $$[$0]); break; -case 100: +case 105: this.$ = new yy.FunctionValue($$[$0-3], $$[$0-1]); break; -case 101: +case 106: this.$ = new yy.FunctionValue($$[$0-2], null, true); break; -case 102: +case 107: this.$ = new yy.FunctionValue($$[$0-3], $$[$0-1], true); break; -case 103: +case 108: this.$ = new yy.ArgumentListValue($$[$0]); break; -case 104: +case 109: this.$ = new yy.ArgumentListValue($$[$0], true); break; -case 109: +case 114: this.$ = new yy.Star(); break; -case 110: +case 115: this.$ = new yy.Field($$[$0]); break; -case 111: +case 116: this.$ = new yy.Field($$[$0-2], $$[$0]); break; -case 112: +case 117: this.$ = new yy.Field($$[$0-1], $$[$0]); break; } }, -table: [{3:1,4:2,6:3,8:4,9:5,10:6,14:7,16:$V0},{1:[3]},{5:[1,9]},o($V1,[2,2],{7:10,13:11,33:12,34:$V2,44:$V3}),o($V4,[2,4]),o($V4,[2,5]),o($V4,[2,6],{11:15,12:16,62:18,47:$V5,64:[1,19]}),o($V6,[2,11],{15:20,43:[1,21]}),{17:22,18:24,22:28,23:[1,23],24:$V7,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,97:26,98:$Vi},{1:[2,1]},o($V1,[2,3],{33:48,34:$V2}),o($V4,[2,10]),o($Vj,[2,33]),{32:49,88:$Vb},{6:50,8:4,9:5,10:6,14:7,16:$V0,35:[1,51]},o($V4,[2,7]),o($V4,[2,8],{11:52,47:$V5}),{48:[1,53]},o($Vk,[2,63],{63:54,66:[1,55]}),{48:[1,56]},o($V6,[2,12]),{22:57,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{18:58,22:28,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,97:26,98:$Vi},{17:59,18:60,22:28,24:$V7,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,97:26,98:$Vi},{19:[1,61],45:$Vl},{22:63,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vm,[2,107]),o($Vm,[2,109]),o($Vm,[2,110],{25:65,26:[1,64],71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr,93:$Vg}),{22:71,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{4:73,6:3,8:4,9:5,10:6,14:7,16:$V0,22:72,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vs,[2,79],{77:[1,74]}),{27:[1,76],78:75},o($Vs,[2,78]),o([5,19,26,29,34,37,38,40,41,43,44,45,46,47,53,64,66,67,69,70,71,72,73,74,76,77,79,81,82,88,89,90,91,92,93,95,98],[2,85],{27:$Vt,94:$Vu}),o($Vv,[2,86]),o($Vv,[2,87]),o($Vv,[2,88]),o($Vv,[2,89]),o($Vv,[2,90]),o($Vv,[2,91]),o($Vw,[2,98]),o([5,19,26,27,29,34,37,38,40,41,43,44,45,46,47,53,56,57,64,66,67,69,70,71,72,73,74,76,77,79,81,82,88,89,90,91,92,93,95,98],[2,93]),o($Vv,[2,96]),o($Vv,[2,97]),{27:[1,79]},o($Vv,[2,94]),o($Vv,[2,95]),o($Vj,[2,34]),o($V4,[2,48],{45:[1,80],46:[1,81]}),o($Vj,[2,35],{13:11,44:$V3}),{6:82,8:4,9:5,10:6,14:7,16:$V0},o($V4,[2,9]),{25:34,32:35,49:83,51:84,52:85,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vk,[2,64]),{22:86,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:88,25:34,27:$V8,32:35,52:31,65:87,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($V6,[2,47],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{19:[1,89],45:$Vl},{18:90,22:28,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,97:26,98:$Vi},{19:[1,91],45:$Vl},{20:92,22:93,25:94,27:$Vx,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:28,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,97:96,98:$Vi},o([27,67,79,88,89,90,91,92,93,95,98],[2,25],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{25:97,93:$Vg},o($Vm,[2,112],{94:$Vu}),{22:98,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:99,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:100,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:102,25:34,27:$V8,32:35,52:31,67:$V9,75:101,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:103,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{68:104,71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr,80:105,81:$Vy},{29:$Vz,71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr},{29:[1,108]},{27:[1,109],78:110},o($Vs,[2,77]),{4:73,6:3,8:4,9:5,10:6,14:7,16:$V0},{93:[1,111]},{22:88,23:$VA,25:34,27:$V8,29:[1,112],32:35,52:31,65:114,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,96:113},{22:88,23:$VA,25:34,27:$V8,32:35,52:31,65:114,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh,96:116},{32:117,88:$Vb},{32:118,88:$Vb},o($Vj,[2,36],{13:11,44:$V3}),o($V4,[2,51],{50:119,45:[1,120],46:[1,121]}),o($VB,[2,53]),o($VB,[2,55],{53:[1,122]}),o($Vk,[2,66],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o([5,29,34,44,47,66],[2,65],{45:$VC}),o($VD,$VE,{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{20:124,22:125,25:94,27:$Vx,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{19:[1,126],45:$Vl},{20:127,22:128,25:94,27:$Vx,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VF,[2,18],{21:129,36:130,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VF,[2,19],{36:130,21:135,37:$VG,38:$VH,40:$VI,41:$VJ,71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o([5,29,34,37,38,40,41,43,44,47,64,71,72,73,74,76,77],$VK,{25:136,26:$VL,27:$Vt,30:$VM,93:$Vg,94:$Vu}),{4:140,6:3,8:4,9:5,10:6,14:7,16:$V0,22:141,25:34,27:$V8,28:139,32:35,52:31,65:142,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vm,[2,108]),o($Vm,[2,111],{94:$Vu}),o([5,19,26,27,29,34,37,38,40,41,43,44,45,47,64,66,67,69,70,71,73,76,79,81,82,88,89,90,91,92,93,95,98],[2,70],{72:$Vo,74:$Vq}),o([5,19,26,27,29,34,37,38,40,41,43,44,45,47,64,66,67,69,70,71,72,73,76,79,81,82,88,89,90,91,92,93,95,98],[2,71],{74:$Vq}),o([5,19,26,27,29,34,37,38,40,41,43,44,45,47,64,66,67,69,70,73,76,79,81,82,88,89,90,91,92,93,95,98],[2,72],{71:$Vn,72:$Vo,74:$Vq}),o($Vs,[2,73]),{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:[1,143]},o($VN,[2,74],{71:$Vn,72:$Vo,73:$Vp,74:$Vq}),{69:[1,144],70:[1,145],80:146,81:$Vy},o($VO,[2,80]),{22:147,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vs,[2,69]),o($Vs,[2,84]),{4:73,6:3,8:4,9:5,10:6,14:7,16:$V0,22:88,25:34,27:$V8,28:148,32:35,52:31,65:142,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vs,[2,76]),o($Vw,[2,99]),o($Vv,[2,101]),{29:[1,149]},{29:[2,103],45:$VC},{22:88,25:34,27:$V8,32:35,52:31,65:150,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{29:[1,151]},o($V4,[2,49]),o($V4,[2,50]),o($V4,[2,52]),{25:34,32:35,51:152,52:85,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{32:154,54:153,88:$Vb},o($VB,[2,56]),{22:155,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VF,[2,14],{36:130,21:156,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VF,[2,15],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{20:157,22:158,25:94,27:$Vx,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VF,[2,20],{36:130,21:159,37:$VG,38:$VH,40:$VI,41:$VJ}),{21:160,36:130,37:$VG,38:$VH,40:$VI,41:$VJ,71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr},o($VF,[2,21],{36:161,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VP,[2,37]),{38:[1,162]},{20:163,25:164,27:$VQ,93:$Vg},{37:[1,167],38:[1,166],42:[1,168]},{37:[1,170],38:[1,169],42:[1,171]},o($VF,[2,22],{36:161,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VR,[2,27],{94:$Vu}),{25:172,93:$Vg},{31:[1,173]},{29:[1,174]},{29:[1,175]},{29:$Vz,45:$VE,71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr},{29:[2,92],45:$VC},{22:176,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vs,[2,67]),{22:177,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VO,[2,81]),{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr,82:[1,178]},{29:[1,179]},o($Vv,[2,102]),{29:[2,104],45:$VC},o($Vv,[2,100]),o($VB,[2,54]),o($V4,[2,57],{55:180,58:[1,181]}),{56:[1,182],57:[1,183]},o($VD,[2,106],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VF,[2,13],{36:161,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VF,[2,16]),o($VF,[2,17],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VF,[2,23],{36:161,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VF,[2,24],{36:161,37:$VG,38:$VH,40:$VI,41:$VJ}),o($VP,[2,38]),{20:184,25:164,27:$VQ,93:$Vg},{39:[1,185]},{25:136,26:$VL,30:$VM,39:$VK,93:$Vg,94:$Vu},{4:186,6:3,8:4,9:5,10:6,14:7,16:$V0,22:88,25:34,27:$V8,28:139,32:35,52:31,65:142,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{20:187,25:164,27:$VQ,93:$Vg},{38:[1,188]},{38:[1,189]},{20:190,25:164,27:$VQ,93:$Vg},{38:[1,191]},{38:[1,192]},o($VR,[2,28],{94:$Vu}),{27:[1,193]},o($VR,[2,29]),o([5,29,34,37,38,40,41,43,44,47,64,71,72,73,74,76],$VS,{25:194,93:$Vg}),o($VN,[2,83],{71:$Vn,72:$Vo,73:$Vp,74:$Vq}),{69:[1,195],71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr},{22:196,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($Vs,[2,75]),o($V4,[2,58]),{59:[1,197],61:[1,198]},o($VT,[2,59]),o($VT,[2,60]),{39:[1,199]},{22:200,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{29:[1,201]},{39:[1,202]},{20:203,25:164,27:$VQ,93:$Vg},{20:204,25:164,27:$VQ,93:$Vg},{39:[1,205]},{20:206,25:164,27:$VQ,93:$Vg},{20:207,25:164,27:$VQ,93:$Vg},{32:208,88:$Vb},o($VR,[2,31],{94:$Vu}),o($Vs,[2,68]),o($VO,[2,82],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{32:154,54:209,88:$Vb},{32:154,54:210,88:$Vb},{22:211,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VP,[2,40],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{25:194,39:$VS,93:$Vg},{22:212,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{39:[1,213]},{39:[1,214]},{22:215,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{39:[1,216]},{39:[1,217]},{29:[1,218]},{60:[1,219]},{60:[1,220]},o($VP,[2,39],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VP,[2,41],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{22:221,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:222,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VP,[2,42],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),{22:223,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},{22:224,25:34,27:$V8,32:35,52:31,67:$V9,78:33,79:$Va,83:36,84:37,85:38,86:39,87:40,88:$Vb,89:$Vc,90:$Vd,91:$Ve,92:$Vf,93:$Vg,95:$Vh},o($VR,[2,32]),o($V4,[2,61]),o($V4,[2,62]),o($VP,[2,43],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VP,[2,45],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VP,[2,44],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr}),o($VP,[2,46],{71:$Vn,72:$Vo,73:$Vp,74:$Vq,76:$Vr})], +table: [{3:1,4:2,6:3,8:4,9:5,10:6,14:7,16:$V0},{1:[3]},{5:[1,9]},o($V1,[2,2],{7:10,13:11,33:12,34:$V2,45:$V3}),o($V4,[2,4]),o($V4,[2,5]),o($V4,[2,6],{11:15,12:16,63:18,48:$V5,65:[1,19]}),o($V6,[2,11],{15:20,43:[1,21]}),{17:22,18:24,22:28,23:[1,23],24:$V7,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,100:26,101:$Vi},{1:[2,1]},o($V1,[2,3],{33:48,34:$V2}),o($V4,[2,10]),o($Vj,[2,33]),{32:49,91:$Vb},{6:50,8:4,9:5,10:6,14:7,16:$V0,35:[1,51]},o($V4,[2,7]),o($V4,[2,8],{11:52,48:$V5}),{49:[1,53]},o($Vk,[2,64],{64:54,67:[1,55]}),{49:[1,56]},o($V6,[2,12]),{22:57,25:34,27:$Vl,32:35,44:58,53:31,68:$V9,79:33,80:$Va,81:60,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{18:61,22:28,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,100:26,101:$Vi},{17:62,18:63,22:28,24:$V7,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,100:26,101:$Vi},{19:[1,64],46:$Vm},{22:66,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vn,[2,112]),o($Vn,[2,114]),o($Vn,[2,115],{25:68,26:[1,67],72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs,96:$Vg}),{22:74,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{4:76,6:3,8:4,9:5,10:6,14:7,16:$V0,22:75,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vt,[2,80],{78:[1,77]}),{27:[1,79],79:78},o($Vt,[2,79]),o([5,19,26,29,34,37,38,40,41,43,45,46,47,48,54,65,67,68,70,71,72,73,74,75,77,78,80,82,84,85,91,92,93,94,95,96,98,101],[2,90],{27:$Vu,97:$Vv}),o($Vw,[2,91]),o($Vw,[2,92]),o($Vw,[2,93]),o($Vw,[2,94]),o($Vw,[2,95]),o($Vw,[2,96]),o($Vx,[2,103]),o([5,19,26,27,29,34,37,38,40,41,43,45,46,47,48,54,57,58,65,67,68,70,71,72,73,74,75,77,78,80,82,84,85,91,92,93,94,95,96,98,101],[2,98]),o($Vw,[2,101]),o($Vw,[2,102]),{27:[1,82]},o($Vw,[2,99]),o($Vw,[2,100]),o($Vj,[2,34]),o($V4,[2,49],{46:[1,83],47:[1,84]}),o($Vj,[2,35],{13:11,45:$V3}),{6:85,8:4,9:5,10:6,14:7,16:$V0},o($V4,[2,9]),{25:34,32:35,50:86,52:87,53:88,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vk,[2,65]),{22:89,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:91,25:34,27:$V8,32:35,53:31,66:90,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($V6,[2,47],{46:$Vy,82:$Vy,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($V6,[2,48]),{4:76,6:3,8:4,9:5,10:6,14:7,16:$V0,22:92,25:34,27:$Vl,32:35,53:31,68:$V9,79:33,80:$Va,81:93,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{46:$Vz,82:[1,94]},{19:[1,96],46:$Vm},{18:97,22:28,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,100:26,101:$Vi},{19:[1,98],46:$Vm},{20:99,22:100,25:101,27:$VA,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:28,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,100:103,101:$Vi},o([27,68,80,91,92,93,94,95,96,98,101],[2,25],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{25:104,96:$Vg},o($Vn,[2,117],{97:$Vv}),{22:105,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:106,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:107,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:109,25:34,27:$V8,32:35,53:31,68:$V9,76:108,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:110,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{69:111,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs,83:112,84:$VB},{29:$VC,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs},{29:[1,115]},{27:[1,116],79:117},o($Vt,[2,78]),{4:76,6:3,8:4,9:5,10:6,14:7,16:$V0},{96:[1,118]},{22:91,23:$VD,25:34,27:$V8,29:[1,119],32:35,53:31,66:121,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,99:120},{22:91,23:$VD,25:34,27:$V8,32:35,53:31,66:121,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh,99:123},{32:124,91:$Vb},{32:125,91:$Vb},o($Vj,[2,36],{13:11,45:$V3}),o($V4,[2,52],{51:126,46:[1,127],47:[1,128]}),o($VE,[2,54]),o($VE,[2,56],{54:[1,129]}),o($Vk,[2,67],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o([5,29,34,45,48,67],[2,66],{46:$VF}),o($VG,$VH,{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{29:$VC,46:$Vy,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs},{29:[1,131],46:$Vz},{22:133,25:34,27:$Vl,32:35,53:31,68:$V9,79:33,80:$Va,81:132,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:134,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{20:135,22:136,25:101,27:$VA,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{19:[1,137],46:$Vm},{20:138,22:139,25:101,27:$VA,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VI,[2,18],{21:140,36:141,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VI,[2,19],{36:141,21:146,37:$VJ,38:$VK,40:$VL,41:$VM,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o([5,29,34,37,38,40,41,43,45,48,65,72,73,74,75,77,78],$VN,{25:147,26:$VO,27:$Vu,30:$VP,96:$Vg,97:$Vv}),{4:151,6:3,8:4,9:5,10:6,14:7,16:$V0,22:152,25:34,27:$V8,28:150,32:35,53:31,66:153,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vn,[2,113]),o($Vn,[2,116],{97:$Vv}),o([5,19,26,27,29,34,37,38,40,41,43,45,46,48,65,67,68,70,71,72,74,77,80,82,84,85,91,92,93,94,95,96,98,101],[2,71],{73:$Vp,75:$Vr}),o([5,19,26,27,29,34,37,38,40,41,43,45,46,48,65,67,68,70,71,72,73,74,77,80,82,84,85,91,92,93,94,95,96,98,101],[2,72],{75:$Vr}),o([5,19,26,27,29,34,37,38,40,41,43,45,46,48,65,67,68,70,71,74,77,80,82,84,85,91,92,93,94,95,96,98,101],[2,73],{72:$Vo,73:$Vp,75:$Vr}),o($Vt,[2,74]),{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:[1,154]},o($VQ,[2,75],{72:$Vo,73:$Vp,74:$Vq,75:$Vr}),{70:[1,155],71:[1,156],83:157,84:$VB},o($VR,[2,85]),{22:158,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vt,[2,70]),o($Vt,[2,89]),{4:76,6:3,8:4,9:5,10:6,14:7,16:$V0,22:91,25:34,27:$V8,28:159,32:35,53:31,66:153,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vt,[2,77]),o($Vx,[2,104]),o($Vw,[2,106]),{29:[1,160]},{29:[2,108],46:$VF},{22:91,25:34,27:$V8,32:35,53:31,66:161,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{29:[1,162]},o($V4,[2,50]),o($V4,[2,51]),o($V4,[2,53]),{25:34,32:35,52:163,53:88,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{32:165,55:164,91:$Vb},o($VE,[2,57]),{22:166,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VS,[2,84]),o($V6,[2,81],{46:$Vz}),o([5,29,34,45,46,48,65],$Vy,{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VS,[2,83],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VI,[2,14],{36:141,21:167,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VI,[2,15],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{20:168,22:169,25:101,27:$VA,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VI,[2,20],{36:141,21:170,37:$VJ,38:$VK,40:$VL,41:$VM}),{21:171,36:141,37:$VJ,38:$VK,40:$VL,41:$VM,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs},o($VI,[2,21],{36:172,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VT,[2,37]),{38:[1,173]},{20:174,25:175,27:$VU,96:$Vg},{37:[1,178],38:[1,177],42:[1,179]},{37:[1,181],38:[1,180],42:[1,182]},o($VI,[2,22],{36:172,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VV,[2,27],{97:$Vv}),{25:183,96:$Vg},{31:[1,184]},{29:[1,185]},{29:[1,186]},{29:$VC,46:$VH,72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs},{29:[2,97],46:$VF},{22:187,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vt,[2,68]),{22:188,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VR,[2,86]),{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs,85:[1,189]},{29:[1,190]},o($Vw,[2,107]),{29:[2,109],46:$VF},o($Vw,[2,105]),o($VE,[2,55]),o($V4,[2,58],{56:191,59:[1,192]}),{57:[1,193],58:[1,194]},o($VG,[2,111],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VI,[2,13],{36:172,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VI,[2,16]),o($VI,[2,17],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VI,[2,23],{36:172,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VI,[2,24],{36:172,37:$VJ,38:$VK,40:$VL,41:$VM}),o($VT,[2,38]),{20:195,25:175,27:$VU,96:$Vg},{39:[1,196]},{25:147,26:$VO,30:$VP,39:$VN,96:$Vg,97:$Vv},{4:197,6:3,8:4,9:5,10:6,14:7,16:$V0,22:91,25:34,27:$V8,28:150,32:35,53:31,66:153,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{20:198,25:175,27:$VU,96:$Vg},{38:[1,199]},{38:[1,200]},{20:201,25:175,27:$VU,96:$Vg},{38:[1,202]},{38:[1,203]},o($VV,[2,28],{97:$Vv}),{27:[1,204]},o($VV,[2,29]),o([5,29,34,37,38,40,41,43,45,48,65,72,73,74,75,77],$VW,{25:205,96:$Vg}),o($VQ,[2,88],{72:$Vo,73:$Vp,74:$Vq,75:$Vr}),{70:[1,206],72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs},{22:207,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($Vt,[2,76]),o($V4,[2,59]),{60:[1,208],62:[1,209]},o($VX,[2,60]),o($VX,[2,61]),{39:[1,210]},{22:211,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{29:[1,212]},{39:[1,213]},{20:214,25:175,27:$VU,96:$Vg},{20:215,25:175,27:$VU,96:$Vg},{39:[1,216]},{20:217,25:175,27:$VU,96:$Vg},{20:218,25:175,27:$VU,96:$Vg},{32:219,91:$Vb},o($VV,[2,31],{97:$Vv}),o($Vt,[2,69]),o($VR,[2,87],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{32:165,55:220,91:$Vb},{32:165,55:221,91:$Vb},{22:222,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VT,[2,40],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{25:205,39:$VW,96:$Vg},{22:223,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{39:[1,224]},{39:[1,225]},{22:226,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{39:[1,227]},{39:[1,228]},{29:[1,229]},{61:[1,230]},{61:[1,231]},o($VT,[2,39],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VT,[2,41],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{22:232,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:233,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VT,[2,42],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),{22:234,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},{22:235,25:34,27:$V8,32:35,53:31,68:$V9,79:33,80:$Va,86:36,87:37,88:38,89:39,90:40,91:$Vb,92:$Vc,93:$Vd,94:$Ve,95:$Vf,96:$Vg,98:$Vh},o($VV,[2,32]),o($V4,[2,62]),o($V4,[2,63]),o($VT,[2,43],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VT,[2,45],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VT,[2,44],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs}),o($VT,[2,46],{72:$Vo,73:$Vp,74:$Vq,75:$Vr,77:$Vs})], defaultActions: {9:[2,1]}, parseError: function parseError(str, hash) { if (hash.recoverable) { diff --git a/lib/grammar.js b/lib/grammar.js index c596a66..7720c95 100644 --- a/lib/grammar.js +++ b/lib/grammar.js @@ -143,6 +143,8 @@ WhereClause: [ o('WHERE Expression', function() { return new Where($2); + }), o('WHERE InConditions', function() { + return new Where($2); }) ], LimitClause: [ @@ -237,6 +239,20 @@ return new UnaryOp($1, $2); }), o('SubSelectExpression'), o('Value') ], + InConditions: [ + o('ExpressionList IN ExpressionList', function() { + return new InConditions($1, $3); + }) + ], + ExpressionList: [ + o('Expression', function() { + return [$1]; + }), o('ExpressionList SEPARATOR Expression', function() { + return new ExpressionList($1, $3); + }), o('LEFT_PAREN ExpressionList RIGHT_PAREN', function() { + return $2; + }) + ], CaseBodies: [ o('CaseBody'), o('CaseBodies CaseBody', function() { return $1.concat($2); diff --git a/lib/lexer.js b/lib/lexer.js index b10b3df..3edc389 100644 --- a/lib/lexer.js +++ b/lib/lexer.js @@ -101,7 +101,7 @@ }; Lexer.prototype.keywordToken = function() { - return this.tokenizeFromWord('SELECT') || this.tokenizeFromWord('DISTINCT') || this.tokenizeFromWord('FROM') || this.tokenizeFromWord('WHERE') || this.tokenizeFromWord('GROUP') || this.tokenizeFromWord('ORDER') || this.tokenizeFromWord('BY') || this.tokenizeFromWord('HAVING') || this.tokenizeFromWord('LIMIT') || this.tokenizeFromWord('JOIN') || this.tokenizeFromWord('LEFT') || this.tokenizeFromWord('RIGHT') || this.tokenizeFromWord('INNER') || this.tokenizeFromWord('OUTER') || this.tokenizeFromWord('ON') || this.tokenizeFromWord('AS') || this.tokenizeFromWord('UNION') || this.tokenizeFromWord('ALL') || this.tokenizeFromWord('LIMIT') || this.tokenizeFromWord('OFFSET') || this.tokenizeFromWord('FETCH') || this.tokenizeFromWord('ROW') || this.tokenizeFromWord('ROWS') || this.tokenizeFromWord('ONLY') || this.tokenizeFromWord('NEXT') || this.tokenizeFromWord('FIRST') || this.tokenizeFromWord('CASE') || this.tokenizeFromWord('WHEN') || this.tokenizeFromWord('THEN') || this.tokenizeFromWord('ELSE') || this.tokenizeFromWord('END') || this.tokenizeFromWord('TOP'); + return this.tokenizeFromWord('SELECT') || this.tokenizeFromWord('DISTINCT') || this.tokenizeFromWord('FROM') || this.tokenizeFromWord('WHERE') || this.tokenizeFromWord('GROUP') || this.tokenizeFromWord('ORDER') || this.tokenizeFromWord('BY') || this.tokenizeFromWord('HAVING') || this.tokenizeFromWord('LIMIT') || this.tokenizeFromWord('JOIN') || this.tokenizeFromWord('LEFT') || this.tokenizeFromWord('RIGHT') || this.tokenizeFromWord('INNER') || this.tokenizeFromWord('OUTER') || this.tokenizeFromWord('ON') || this.tokenizeFromWord('AS') || this.tokenizeFromWord('UNION') || this.tokenizeFromWord('ALL') || this.tokenizeFromWord('LIMIT') || this.tokenizeFromWord('OFFSET') || this.tokenizeFromWord('FETCH') || this.tokenizeFromWord('ROW') || this.tokenizeFromWord('ROWS') || this.tokenizeFromWord('ONLY') || this.tokenizeFromWord('NEXT') || this.tokenizeFromWord('FIRST') || this.tokenizeFromWord('CASE') || this.tokenizeFromWord('WHEN') || this.tokenizeFromWord('THEN') || this.tokenizeFromWord('ELSE') || this.tokenizeFromWord('END') || this.tokenizeFromWord('TOP') || this.tokenizeFromWord('IN'); }; Lexer.prototype.dotToken = function() { diff --git a/lib/nodes.js b/lib/nodes.js index 427888d..02a6206 100644 --- a/lib/nodes.js +++ b/lib/nodes.js @@ -1,6 +1,6 @@ // Generated by CoffeeScript 1.8.0 (function() { - var ArgumentListValue, BetweenOp, Case, CaseBody, Field, FunctionValue, Group, Having, Join, Limit, ListValue, LiteralValue, Offset, Op, Order, OrderArgument, ParameterValue, Select, Star, StringValue, SubSelect, Table, UnaryOp, Union, Where, indent; + var ArgumentListValue, BetweenOp, Case, CaseBody, ExpressionList, Field, FunctionValue, Group, Having, InConditions, Join, Limit, ListValue, LiteralValue, Offset, Op, Order, OrderArgument, ParameterValue, Select, Star, StringValue, SubSelect, Table, UnaryOp, Union, Where, indent; indent = function(str) { var line; @@ -531,4 +531,35 @@ })(); + exports.ExpressionList = ExpressionList = (function() { + function ExpressionList(expressions, expression) { + this.expressions = expressions; + this.expression = expression; + null; + } + + ExpressionList.prototype.toString = function() { + console.log(this.expressions.toString && this.expressions.toString()); + return "(" + this.expressions + ", " + this.expression + ")"; + }; + + return ExpressionList; + + })(); + + exports.InConditions = InConditions = (function() { + function InConditions(expression, conditions) { + this.expression = expression; + this.conditions = conditions; + null; + } + + InConditions.prototype.toString = function() { + return "(" + this.expression + " IN " + this.conditions + ")"; + }; + + return InConditions; + + })(); + }).call(this); diff --git a/package.json b/package.json index 5618a06..559bc0d 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "description": "Lexer and Parser for SQL Syntax", "version": "0.5.5", "scripts": { - "test": "./node_modules/.bin/cake build && ./node_modules/.bin/mocha --require should --compilers coffee:coffee-script/register" + "test": "cake build && mocha --require should --compilers coffee:coffee-script/register", + "build": "cake build" }, "author": { "name": "Andy Kent and Marcelo Camargo", diff --git a/src/grammar.coffee b/src/grammar.coffee index 2018693..291ac4c 100644 --- a/src/grammar.coffee +++ b/src/grammar.coffee @@ -99,6 +99,7 @@ grammar = WhereClause: [ o 'WHERE Expression', -> new Where($2) + o 'WHERE InConditions', -> new Where($2) ] LimitClause: [ @@ -168,6 +169,16 @@ grammar = o 'Value' ] + InConditions: [ + o 'ExpressionList IN ExpressionList', -> new InConditions($1, $3) + ] + + ExpressionList: [ + o 'Expression', -> [$1] + o 'ExpressionList SEPARATOR Expression', -> new ExpressionList($1, $3) + o 'LEFT_PAREN ExpressionList RIGHT_PAREN', -> $2 + ] + CaseBodies: [ o 'CaseBody' o 'CaseBodies CaseBody', -> $1.concat $2 diff --git a/src/lexer.coffee b/src/lexer.coffee index 63fd996..fcfa06d 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -100,7 +100,8 @@ class Lexer @tokenizeFromWord('THEN') or @tokenizeFromWord('ELSE') or @tokenizeFromWord('END') or - @tokenizeFromWord('TOP') + @tokenizeFromWord('TOP') or + @tokenizeFromWord('IN') dotToken: -> @tokenizeFromWord('DOT', '.') diff --git a/src/nodes.coffee b/src/nodes.coffee index d80cec7..b17fbaa 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -193,3 +193,13 @@ exports.Star = class Star constructor: () -> null toString: -> '*' star: true + +exports.ExpressionList = class ExpressionList + constructor: (@expressions, @expression) -> null + toString: -> + console.log(@expressions.toString && @expressions.toString()) + return "(#{@expressions}, #{@expression})" + +exports.InConditions = class InConditions + constructor: (@expression, @conditions) -> null + toString: -> "(#{@expression} IN #{@conditions})"