mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-27 04:42:51 +08:00
676 lines
103 KiB
JavaScript
676 lines
103 KiB
JavaScript
![]() |
/* Jison generated parser */
|
||
|
var parser = (function(){
|
||
|
var parser = {trace: function trace() { },
|
||
|
yy: {},
|
||
|
symbols_: {"error":2,"Root":3,"Body":4,"Block":5,"TERMINATOR":6,"Line":7,"Expression":8,"Statement":9,"Return":10,"Throw":11,"Comment":12,"STATEMENT":13,"Value":14,"Invocation":15,"Code":16,"Operation":17,"Assign":18,"If":19,"Try":20,"While":21,"For":22,"Switch":23,"Class":24,"INDENT":25,"OUTDENT":26,"Identifier":27,"IDENTIFIER":28,"AlphaNumeric":29,"NUMBER":30,"STRING":31,"Literal":32,"JS":33,"REGEX":34,"BOOL":35,"Assignable":36,"=":37,"AssignObj":38,"ObjAssignable":39,":":40,"ThisProperty":41,"RETURN":42,"HERECOMMENT":43,"PARAM_START":44,"ParamList":45,"PARAM_END":46,"FuncGlyph":47,"->":48,"=>":49,"OptComma":50,",":51,"Param":52,"ParamVar":53,"...":54,"Array":55,"Object":56,"Splat":57,"SimpleAssignable":58,"Accessor":59,"Parenthetical":60,"Range":61,"This":62,".":63,"?.":64,"::":65,"Index":66,"INDEX_START":67,"IndexValue":68,"INDEX_END":69,"INDEX_SOAK":70,"INDEX_PROTO":71,"Slice":72,"{":73,"AssignList":74,"}":75,"CLASS":76,"EXTENDS":77,"OptFuncExist":78,"Arguments":79,"SUPER":80,"FUNC_EXIST":81,"CALL_START":82,"CALL_END":83,"ArgList":84,"THIS":85,"@":86,"[":87,"]":88,"RangeDots":89,"..":90,"Arg":91,"SimpleArgs":92,"TRY":93,"Catch":94,"FINALLY":95,"CATCH":96,"THROW":97,"(":98,")":99,"WhileSource":100,"WHILE":101,"WHEN":102,"UNTIL":103,"Loop":104,"LOOP":105,"ForBody":106,"FOR":107,"ForStart":108,"ForSource":109,"ForVariables":110,"OWN":111,"ForValue":112,"FORIN":113,"FOROF":114,"BY":115,"SWITCH":116,"Whens":117,"ELSE":118,"When":119,"LEADING_WHEN":120,"IfBlock":121,"IF":122,"POST_IF":123,"UNARY":124,"-":125,"+":126,"--":127,"++":128,"?":129,"MATH":130,"SHIFT":131,"COMPARE":132,"LOGIC":133,"RELATION":134,"COMPOUND_ASSIGN":135,"$accept":0,"$end":1},
|
||
|
terminals_: {2:"error",6:"TERMINATOR",13:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"BOOL",37:"=",40:":",42:"RETURN",43:"HERECOMMENT",44:"PARAM_START",46:"PARAM_END",48:"->",49:"=>",51:",",54:"...",63:".",64:"?.",65:"::",67:"INDEX_START",69:"INDEX_END",70:"INDEX_SOAK",71:"INDEX_PROTO",73:"{",75:"}",76:"CLASS",77:"EXTENDS",80:"SUPER",81:"FUNC_EXIST",82:"CALL_START",83:"CALL_END",85:"THIS",86:"@",87:"[",88:"]",90:"..",93:"TRY",95:"FINALLY",96:"CATCH",97:"THROW",98:"(",99:")",101:"WHILE",102:"WHEN",103:"UNTIL",105:"LOOP",107:"FOR",111:"OWN",113:"FORIN",114:"FOROF",115:"BY",116:"SWITCH",118:"ELSE",120:"LEADING_WHEN",122:"IF",123:"POST_IF",124:"UNARY",125:"-",126:"+",127:"--",128:"++",129:"?",130:"MATH",131:"SHIFT",132:"COMPARE",133:"LOGIC",134:"RELATION",135:"COMPOUND_ASSIGN"},
|
||
|
productions_: [0,[3,0],[3,1],[3,2],[4,1],[4,3],[4,2],[7,1],[7,1],[9,1],[9,1],[9,1],[9,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[5,2],[5,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[18,3],[18,5],[38,1],[38,3],[38,5],[38,1],[39,1],[39,1],[39,1],[10,2],[10,1],[12,1],[16,5],[16,2],[47,1],[47,1],[50,0],[50,1],[45,0],[45,1],[45,3],[52,1],[52,2],[52,3],[53,1],[53,1],[53,1],[53,1],[57,2],[58,1],[58,2],[58,2],[58,1],[36,1],[36,1],[36,1],[14,1],[14,1],[14,1],[14,1],[14,1],[59,2],[59,2],[59,2],[59,1],[59,1],[66,3],[66,2],[66,2],[68,1],[68,1],[56,4],[74,0],[74,1],[74,3],[74,4],[74,6],[24,1],[24,2],[24,3],[24,4],[24,2],[24,3],[24,4],[24,5],[15,3],[15,3],[15,1],[15,2],[78,0],[78,1],[79,2],[79,4],[62,1],[62,1],[41,2],[55,2],[55,4],[89,1],[89,1],[61,5],[72,3],[72,2],[72,2],[84,1],[84,3],[84,4],[84,4],[84,6],[91,1],[91,1],[92,1],[92,3],[20,2],[20,3],[20,4],[20,5],[94,3],[11,2],[60,3],[60,5],[100,2],[100,4],[100,2],[100,4],[21,2],[21,2],[21,2],[21,1],[104,2],[104,2],[22,2],[22,2],[22,2],[106,2],[106,2],[108,2],[108,3],[112,1],[112,1],[112,1],[110,1],[110,3],[109,2],[109,2],[109,4],[109,4],[109,4],[109,6],[109,6],[23,5],[23,7],[23,4],[23,6],[117,1],[117,2],[119,3],[119,4],[121,3],[121,5],[19,1],[19,3],[19,3],[19,3],[17,2],[17,2],[17,2],[17,2],[17,2],[17,2],[17,2],[17,2],[17,3],[17,3],[17,3],[17,3],[17,3],[17,3],[17,3],[17,3],[17,5],[17,3]],
|
||
|
performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {
|
||
|
|
||
|
var $0 = $$.length - 1;
|
||
|
switch (yystate) {
|
||
|
case 1:return this.$ = new yy.Block;
|
||
|
break;
|
||
|
case 2:return this.$ = $$[$0];
|
||
|
break;
|
||
|
case 3:return this.$ = $$[$0-1];
|
||
|
break;
|
||
|
case 4:this.$ = yy.Block.wrap([$$[$0]]);
|
||
|
break;
|
||
|
case 5:this.$ = $$[$0-2].push($$[$0]);
|
||
|
break;
|
||
|
case 6:this.$ = $$[$0-1];
|
||
|
break;
|
||
|
case 7:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 8:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 9:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 10:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 11:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 12:this.$ = new yy.Literal($$[$0]);
|
||
|
break;
|
||
|
case 13:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 14:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 15:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 16:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 17:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 18:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 19:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 20:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 21:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 22:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 23:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 24:this.$ = new yy.Block;
|
||
|
break;
|
||
|
case 25:this.$ = $$[$0-1];
|
||
|
break;
|
||
|
case 26:this.$ = new yy.Literal($$[$0]);
|
||
|
break;
|
||
|
case 27:this.$ = new yy.Literal($$[$0]);
|
||
|
break;
|
||
|
case 28:this.$ = new yy.Literal($$[$0]);
|
||
|
break;
|
||
|
case 29:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 30:this.$ = new yy.Literal($$[$0]);
|
||
|
break;
|
||
|
case 31:this.$ = new yy.Literal($$[$0]);
|
||
|
break;
|
||
|
case 32:this.$ = (function () {
|
||
|
var val;
|
||
|
val = new yy.Literal($$[$0]);
|
||
|
if ($$[$0] === 'undefined') {
|
||
|
val.isUndefined = true;
|
||
|
}
|
||
|
return val;
|
||
|
}());
|
||
|
break;
|
||
|
case 33:this.$ = new yy.Assign($$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
case 34:this.$ = new yy.Assign($$[$0-4], $$[$0-1]);
|
||
|
break;
|
||
|
case 35:this.$ = new yy.Value($$[$0]);
|
||
|
break;
|
||
|
case 36:this.$ = new yy.Assign(new yy.Value($$[$0-2]), $$[$0], 'object');
|
||
|
break;
|
||
|
case 37:this.$ = new yy.Assign(new yy.Value($$[$0-4]), $$[$0-1], 'object');
|
||
|
break;
|
||
|
case 38:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 39:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 40:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 41:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 42:this.$ = new yy.Return($$[$0]);
|
||
|
break;
|
||
|
case 43:this.$ = new yy.Return;
|
||
|
break;
|
||
|
case 44:this.$ = new yy.Comment($$[$0]);
|
||
|
break;
|
||
|
case 45:this.$ = new yy.Code($$[$0-3], $$[$0], $$[$0-1]);
|
||
|
break;
|
||
|
case 46:this.$ = new yy.Code([], $$[$0], $$[$0-1]);
|
||
|
break;
|
||
|
case 47:this.$ = 'func';
|
||
|
break;
|
||
|
case 48:this.$ = 'boundfunc';
|
||
|
break;
|
||
|
case 49:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 50:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 51:this.$ = [];
|
||
|
break;
|
||
|
case 52:this.$ = [$$[$0]];
|
||
|
break;
|
||
|
case 53:this.$ = $$[$0-2].concat($$[$0]);
|
||
|
break;
|
||
|
case 54:this.$ = new yy.Param($$[$0]);
|
||
|
break;
|
||
|
case 55:this.$ = new yy.Param($$[$0-1], null, true);
|
||
|
break;
|
||
|
case 56:this.$ = new yy.Param($$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
case 57:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 58:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 59:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 60:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 61:this.$ = new yy.Splat($$[$0-1]);
|
||
|
break;
|
||
|
case 62:this.$ = new yy.Value($$[$0]);
|
||
|
break;
|
||
|
case 63:this.$ = $$[$0-1].push($$[$0]);
|
||
|
break;
|
||
|
case 64:this.$ = new yy.Value($$[$0-1], [$$[$0]]);
|
||
|
break;
|
||
|
case 65:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 66:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 67:this.$ = new yy.Value($$[$0]);
|
||
|
break;
|
||
|
case 68:this.$ = new yy.Value($$[$0]);
|
||
|
break;
|
||
|
case 69:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 70:this.$ = new yy.Value($$[$0]);
|
||
|
break;
|
||
|
case 71:this.$ = new yy.Value($$[$0]);
|
||
|
break;
|
||
|
case 72:this.$ = new yy.Value($$[$0]);
|
||
|
break;
|
||
|
case 73:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 74:this.$ = new yy.Access($$[$0]);
|
||
|
break;
|
||
|
case 75:this.$ = new yy.Access($$[$0], 'soak');
|
||
|
break;
|
||
|
case 76:this.$ = new yy.Access($$[$0], 'proto');
|
||
|
break;
|
||
|
case 77:this.$ = new yy.Access(new yy.Literal('prototype'));
|
||
|
break;
|
||
|
case 78:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 79:this.$ = $$[$0-1];
|
||
|
break;
|
||
|
case 80:this.$ = yy.extend($$[$0], {
|
||
|
soak: true
|
||
|
});
|
||
|
break;
|
||
|
case 81:this.$ = yy.extend($$[$0], {
|
||
|
proto: true
|
||
|
});
|
||
|
break;
|
||
|
case 82:this.$ = new yy.Index($$[$0]);
|
||
|
break;
|
||
|
case 83:this.$ = new yy.Slice($$[$0]);
|
||
|
break;
|
||
|
case 84:this.$ = new yy.Obj($$[$0-2], $$[$0-3].generated);
|
||
|
break;
|
||
|
case 85:this.$ = [];
|
||
|
break;
|
||
|
case 86:this.$ = [$$[$0]];
|
||
|
break;
|
||
|
case 87:this.$ = $$[$0-2].concat($$[$0]);
|
||
|
break;
|
||
|
case 88:this.$ = $$[$0-3].concat($$[$0]);
|
||
|
break;
|
||
|
case 89:this.$ = $$[$0-5].concat($$[$0-2]);
|
||
|
break;
|
||
|
case 90:this.$ = new yy.Class;
|
||
|
break;
|
||
|
case 91:this.$ = new yy.Class(null, null, $$[$0]);
|
||
|
break;
|
||
|
case 92:this.$ = new yy.Class(null, $$[$0]);
|
||
|
break;
|
||
|
case 93:this.$ = new yy.Class(null, $$[$0-1], $$[$0]);
|
||
|
break;
|
||
|
case 94:this.$ = new yy.Class($$[$0]);
|
||
|
break;
|
||
|
case 95:this.$ = new yy.Class($$[$0-1], null, $$[$0]);
|
||
|
break;
|
||
|
case 96:this.$ = new yy.Class($$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
case 97:this.$ = new yy.Class($$[$0-3], $$[$0-1], $$[$0]);
|
||
|
break;
|
||
|
case 98:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]);
|
||
|
break;
|
||
|
case 99:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]);
|
||
|
break;
|
||
|
case 100:this.$ = new yy.Call('super', [new yy.Splat(new yy.Literal('arguments'))]);
|
||
|
break;
|
||
|
case 101:this.$ = new yy.Call('super', $$[$0]);
|
||
|
break;
|
||
|
case 102:this.$ = false;
|
||
|
break;
|
||
|
case 103:this.$ = true;
|
||
|
break;
|
||
|
case 104:this.$ = [];
|
||
|
break;
|
||
|
case 105:this.$ = $$[$0-2];
|
||
|
break;
|
||
|
case 106:this.$ = new yy.Value(new yy.Literal('this'));
|
||
|
break;
|
||
|
case 107:this.$ = new yy.Value(new yy.Literal('this'));
|
||
|
break;
|
||
|
case 108:this.$ = new yy.Value(new yy.Literal('this'), [new yy.Access($$[$0])], 'this');
|
||
|
break;
|
||
|
case 109:this.$ = new yy.Arr([]);
|
||
|
break;
|
||
|
case 110:this.$ = new yy.Arr($$[$0-2]);
|
||
|
break;
|
||
|
case 111:this.$ = 'inclusive';
|
||
|
break;
|
||
|
case 112:this.$ = 'exclusive';
|
||
|
break;
|
||
|
case 113:this.$ = new yy.Range($$[$0-3], $$[$0-1], $$[$0-2]);
|
||
|
break;
|
||
|
case 114:this.$ = new yy.Range($$[$0-2], $$[$0], $$[$0-1]);
|
||
|
break;
|
||
|
case 115:this.$ = new yy.Range($$[$0-1], null, $$[$0]);
|
||
|
break;
|
||
|
case 116:this.$ = new yy.Range(null, $$[$0], $$[$0-1]);
|
||
|
break;
|
||
|
case 117:this.$ = [$$[$0]];
|
||
|
break;
|
||
|
case 118:this.$ = $$[$0-2].concat($$[$0]);
|
||
|
break;
|
||
|
case 119:this.$ = $$[$0-3].concat($$[$0]);
|
||
|
break;
|
||
|
case 120:this.$ = $$[$0-2];
|
||
|
break;
|
||
|
case 121:this.$ = $$[$0-5].concat($$[$0-2]);
|
||
|
break;
|
||
|
case 122:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 123:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 124:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 125:this.$ = [].concat($$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
case 126:this.$ = new yy.Try($$[$0]);
|
||
|
break;
|
||
|
case 127:this.$ = new yy.Try($$[$0-1], $$[$0][0], $$[$0][1]);
|
||
|
break;
|
||
|
case 128:this.$ = new yy.Try($$[$0-2], null, null, $$[$0]);
|
||
|
break;
|
||
|
case 129:this.$ = new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0]);
|
||
|
break;
|
||
|
case 130:this.$ = [$$[$0-1], $$[$0]];
|
||
|
break;
|
||
|
case 131:this.$ = new yy.Throw($$[$0]);
|
||
|
break;
|
||
|
case 132:this.$ = new yy.Parens($$[$0-1]);
|
||
|
break;
|
||
|
case 133:this.$ = new yy.Parens($$[$0-2]);
|
||
|
break;
|
||
|
case 134:this.$ = new yy.While($$[$0]);
|
||
|
break;
|
||
|
case 135:this.$ = new yy.While($$[$0-2], {
|
||
|
guard: $$[$0]
|
||
|
});
|
||
|
break;
|
||
|
case 136:this.$ = new yy.While($$[$0], {
|
||
|
invert: true
|
||
|
});
|
||
|
break;
|
||
|
case 137:this.$ = new yy.While($$[$0-2], {
|
||
|
invert: true,
|
||
|
guard: $$[$0]
|
||
|
});
|
||
|
break;
|
||
|
case 138:this.$ = $$[$0-1].addBody($$[$0]);
|
||
|
break;
|
||
|
case 139:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]]));
|
||
|
break;
|
||
|
case 140:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]]));
|
||
|
break;
|
||
|
case 141:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 142:this.$ = new yy.While(new yy.Literal('true')).addBody($$[$0]);
|
||
|
break;
|
||
|
case 143:this.$ = new yy.While(new yy.Literal('true')).addBody(yy.Block.wrap([$$[$0]]));
|
||
|
break;
|
||
|
case 144:this.$ = new yy.For($$[$0-1], $$[$0]);
|
||
|
break;
|
||
|
case 145:this.$ = new yy.For($$[$0-1], $$[$0]);
|
||
|
break;
|
||
|
case 146:this.$ = new yy.For($$[$0], $$[$0-1]);
|
||
|
break;
|
||
|
case 147:this.$ = {
|
||
|
source: new yy.Value($$[$0])
|
||
|
};
|
||
|
break;
|
||
|
case 148:this.$ = (function () {
|
||
|
$$[$0].own = $$[$0-1].own;
|
||
|
$$[$0].name = $$[$0-1][0];
|
||
|
$$[$0].index = $$[$0-1][1];
|
||
|
return $$[$0];
|
||
|
}());
|
||
|
break;
|
||
|
case 149:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 150:this.$ = (function () {
|
||
|
$$[$0].own = true;
|
||
|
return $$[$0];
|
||
|
}());
|
||
|
break;
|
||
|
case 151:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 152:this.$ = new yy.Value($$[$0]);
|
||
|
break;
|
||
|
case 153:this.$ = new yy.Value($$[$0]);
|
||
|
break;
|
||
|
case 154:this.$ = [$$[$0]];
|
||
|
break;
|
||
|
case 155:this.$ = [$$[$0-2], $$[$0]];
|
||
|
break;
|
||
|
case 156:this.$ = {
|
||
|
source: $$[$0]
|
||
|
};
|
||
|
break;
|
||
|
case 157:this.$ = {
|
||
|
source: $$[$0],
|
||
|
object: true
|
||
|
};
|
||
|
break;
|
||
|
case 158:this.$ = {
|
||
|
source: $$[$0-2],
|
||
|
guard: $$[$0]
|
||
|
};
|
||
|
break;
|
||
|
case 159:this.$ = {
|
||
|
source: $$[$0-2],
|
||
|
guard: $$[$0],
|
||
|
object: true
|
||
|
};
|
||
|
break;
|
||
|
case 160:this.$ = {
|
||
|
source: $$[$0-2],
|
||
|
step: $$[$0]
|
||
|
};
|
||
|
break;
|
||
|
case 161:this.$ = {
|
||
|
source: $$[$0-4],
|
||
|
guard: $$[$0-2],
|
||
|
step: $$[$0]
|
||
|
};
|
||
|
break;
|
||
|
case 162:this.$ = {
|
||
|
source: $$[$0-4],
|
||
|
step: $$[$0-2],
|
||
|
guard: $$[$0]
|
||
|
};
|
||
|
break;
|
||
|
case 163:this.$ = new yy.Switch($$[$0-3], $$[$0-1]);
|
||
|
break;
|
||
|
case 164:this.$ = new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1]);
|
||
|
break;
|
||
|
case 165:this.$ = new yy.Switch(null, $$[$0-1]);
|
||
|
break;
|
||
|
case 166:this.$ = new yy.Switch(null, $$[$0-3], $$[$0-1]);
|
||
|
break;
|
||
|
case 167:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 168:this.$ = $$[$0-1].concat($$[$0]);
|
||
|
break;
|
||
|
case 169:this.$ = [[$$[$0-1], $$[$0]]];
|
||
|
break;
|
||
|
case 170:this.$ = [[$$[$0-2], $$[$0-1]]];
|
||
|
break;
|
||
|
case 171:this.$ = new yy.If($$[$0-1], $$[$0], {
|
||
|
type: $$[$0-2]
|
||
|
});
|
||
|
break;
|
||
|
case 172:this.$ = $$[$0-4].addElse(new yy.If($$[$0-1], $$[$0], {
|
||
|
type: $$[$0-2]
|
||
|
}));
|
||
|
break;
|
||
|
case 173:this.$ = $$[$0];
|
||
|
break;
|
||
|
case 174:this.$ = $$[$0-2].addElse($$[$0]);
|
||
|
break;
|
||
|
case 175:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), {
|
||
|
type: $$[$0-1],
|
||
|
statement: true
|
||
|
});
|
||
|
break;
|
||
|
case 176:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), {
|
||
|
type: $$[$0-1],
|
||
|
statement: true
|
||
|
});
|
||
|
break;
|
||
|
case 177:this.$ = new yy.Op($$[$0-1], $$[$0]);
|
||
|
break;
|
||
|
case 178:this.$ = new yy.Op('-', $$[$0]);
|
||
|
break;
|
||
|
case 179:this.$ = new yy.Op('+', $$[$0]);
|
||
|
break;
|
||
|
case 180:this.$ = new yy.Op('--', $$[$0]);
|
||
|
break;
|
||
|
case 181:this.$ = new yy.Op('++', $$[$0]);
|
||
|
break;
|
||
|
case 182:this.$ = new yy.Op('--', $$[$0-1], null, true);
|
||
|
break;
|
||
|
case 183:this.$ = new yy.Op('++', $$[$0-1], null, true);
|
||
|
break;
|
||
|
case 184:this.$ = new yy.Existence($$[$0-1]);
|
||
|
break;
|
||
|
case 185:this.$ = new yy.Op('+', $$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
case 186:this.$ = new yy.Op('-', $$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
case 187:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
case 188:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
case 189:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
case 190:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
case 191:this.$ = (function () {
|
||
|
if ($$[$0-1].charAt(0) === '!') {
|
||
|
return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert();
|
||
|
} else {
|
||
|
return new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
|
||
|
}
|
||
|
}());
|
||
|
break;
|
||
|
case 192:this.$ = new yy.Assign($$[$0-2], $$[$0], $$[$0-1]);
|
||
|
break;
|
||
|
case 193:this.$ = new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3]);
|
||
|
break;
|
||
|
case 194:this.$ = new yy.Extends($$[$0-2], $$[$0]);
|
||
|
break;
|
||
|
}
|
||
|
},
|
||
|
table: [{1:[2,1],3:1,4:2,5:3,7:4,8:6,9:7,10:19,11:20,12:21,13:[1,22],14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,24:18,25:[1,5],27:59,28:[1,70],29:49,30:[1,68],31:[1,69],32:24,33:[1,50],34:[1,51],35:[1,52],36:23,41:60,42:[1,44],43:[1,46],44:[1,29],47:30,48:[1,57],49:[1,58],55:47,56:48,58:36,60:25,61:26,62:27,73:[1,67],76:[1,43],80:[1,28],85:[1,55],86:[1,56],87:[1,54],93:[1,38],97:[1,45],98:[1,53],100:39,101:[1,62],103:[1,63],104:40,105:[1,64],106:41,107:[1,65],108:66,116:[1,42],121:37,122:[1,61],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[3]},{1:[2,2],6:[1,71]},{6:[1,72]},{1:[2,4],6:[2,4],26:[2,4],99:[2,4]},{4:74,7:4,8:6,9:7,10:19,11:20,12:21,13:[1,22],14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,24:18,26:[1,73],27:59,28:[1,70],29:49,30:[1,68],31:[1,69],32:24,33:[1,50],34:[1,51],35:[1,52],36:23,41:60,42:[1,44],43:[1,46],44:[1,29],47:30,48:[1,57],49:[1,58],55:47,56:48,58:36,60:25,61:26,62:27,73:[1,67],76:[1,43],80:[1,28],85:[1,55],86:[1,56],87:[1,54],93:[1,38],97:[1,45],98:[1,53],100:39,101:[1,62],103:[1,63],104:40,105:[1,64],106:41,107:[1,65],108:66,116:[1,42],121:37,122:[1,61],124:[1,31],125:[1,32],126:[1,33],127:[1,34],128:[1,35]},{1:[2,7],6:[2,7],26:[2,7],99:[2,7],100:84,101:[1,62],103:[1,63],106:85,107:[1,65],108:66,123:[1,83],125:[1,77],126:[1,76],129:[1,75],130:[1,78],131:[1,79],132:[1,80],133:[1,81],134:[1,82]},{1:[2,8],6:[2,8],26:[2,8],99:[2,8],100:87,101:[1,62],103:[1,63],106:88,107:[1,65],108:66,123:[1,86]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],46:[2,13],51:[2,13],54:[2,13],59:90,63:[1,92],64:[1,93],65:[1,94],66:95,67:[1,96],69:[2,13],70:[1,97],71:[1,98],75:[2,13],78:89,81:[1,91],82:[2,102],83:[2,13],88:[2,13],90:[2,13],99:[2,13],101:[2,13],102:[2,13],103:[2,13],107:[2,13],115:[2,13],123:[2,13],125:[2,13],126:[2,13],129:[2,13],130:[2,13],131:[2,13],132:[2,13],133:[2,13],134:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],46:[2,14],51:[2,14],54:[2,14],59:100,63:[1,92],64:[1,93],65:[1,94],66:95,67:[1,96],69:[2,14],70:[1,97],71:[1,98],75:[2,14],78:99,81:[1,91],82:[2,102],83:[2,14],88:[2,14],90:[2,14],99:[2,14],101:[2,14],102:[2,14],103:[2,14],107:[2,14],115:[2,14],123:[2,14],125:[2,14],126:[2,14],129:[2,14],130:[2,14],131:[2,14],132:[2,14],133:[2,14],134:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],46:[2,15],51:[2,15],54:[2,15],69:[2,15],75:[2,15],83:[2,15],88:[2,15],90:[2,15],99:[2,15],101:[2,15],102:[2,15],103:[2,15],107:[2,15],115:[2,15],123:[2,15],125:[2,15],126:[2,15],129:[2,15],130:[2,15],131:[2,15],132:[2,15],133:[2,15],134:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],46:[2,16],51:[2,16],54:[2,16],69:[2,16],75:[2,16],83:[2,16],88:[2,16],90:[2,16],99:[2,16],101:[2,16],102:[2,16],103:[2,16],107:[2,16],115:[2,16],123:[2,16],125:[2,16],126:[2,16],129:[2,16],130:[2,16],131:[2,16],132:[2,16],133:[2,16],134:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],46:[2,17],51:[2,17],54:[2,17],69:[2,17],75:[2,17],83:[2,17],88:[2,17],90:[2,17],99:[2,17],101:[2,17],102:[2,17],103:[2,17],107:[2,17],115:[2,17],123:[2,17],125:[2,17],126:[2,17],129:[2,17],130:[2,17],131:[2,17],132:[2,17],133:[2,17],134:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],46:[2,18],51:[2,18],54:[2,18],69:[2,18],75:[2,18],83:[2,18],88:[2,18],90:[2,18],99:[2,18],101:[2,18],102:[2,18],103:[2,18],107:[2,18],115:[2,18],123:[2,18],125:[2,18],126:[2,18],129:[2,18],130:[2,18],131:[2,18],132:[2,18],133:[2,18],134:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],46:[2,19],51:[2,19],54:[2,19],69:[2,19],75:[2,19],83:[2,19],88:[2,19],90:[2,19],99:[2,19],101:[2,19],102:[2,19],103:[2,19],107:[2,19],115:[2,19],123:[2,19],125:[2,19],126:[2,19],129:[2,19],130:[2,19],131:[2,19],132:[2,19],133:[2,19],134:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],46:[2,20],51:[2,20],54:[2,20],69:[2,20],75:[2,20],83:[2,20],88:[2,20],90:[2,20],99:[2,20],101:[2,20],102:[2,20],103:[2,20],107:[2,20],115:[2,20],123:[2,20],125:[2,20],126:[2,20],129:[2,20],130:[2,20],131:[2,20],132:[2,20],133:[2,20],134:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],46:[2,21],51:[2,21],54:[2,21],69:[2,21],75:[2,21],83:[2,21],88:[2,21],90:[2,21],99:[2,21],101:[2,21],
|
||
|
defaultActions: {57:[2,47],58:[2,48],72:[2,3],91:[2,103],186:[2,83]},
|
||
|
parseError: function parseError(str, hash) {
|
||
|
throw new Error(str);
|
||
|
},
|
||
|
parse: function parse(input) {
|
||
|
var self = this,
|
||
|
stack = [0],
|
||
|
vstack = [null], // semantic value stack
|
||
|
lstack = [], // location stack
|
||
|
table = this.table,
|
||
|
yytext = '',
|
||
|
yylineno = 0,
|
||
|
yyleng = 0,
|
||
|
recovering = 0,
|
||
|
TERROR = 2,
|
||
|
EOF = 1;
|
||
|
|
||
|
//this.reductionCount = this.shiftCount = 0;
|
||
|
|
||
|
this.lexer.setInput(input);
|
||
|
this.lexer.yy = this.yy;
|
||
|
this.yy.lexer = this.lexer;
|
||
|
if (typeof this.lexer.yylloc == 'undefined')
|
||
|
this.lexer.yylloc = {};
|
||
|
var yyloc = this.lexer.yylloc;
|
||
|
lstack.push(yyloc);
|
||
|
|
||
|
if (typeof this.yy.parseError === 'function')
|
||
|
this.parseError = this.yy.parseError;
|
||
|
|
||
|
function popStack (n) {
|
||
|
stack.length = stack.length - 2*n;
|
||
|
vstack.length = vstack.length - n;
|
||
|
lstack.length = lstack.length - n;
|
||
|
}
|
||
|
|
||
|
function lex() {
|
||
|
var token;
|
||
|
token = self.lexer.lex() || 1; // $end = 1
|
||
|
// if token isn't its numeric value, convert
|
||
|
if (typeof token !== 'number') {
|
||
|
token = self.symbols_[token] || token;
|
||
|
}
|
||
|
return token;
|
||
|
};
|
||
|
|
||
|
var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected;
|
||
|
while (true) {
|
||
|
// retreive state number from top of stack
|
||
|
state = stack[stack.length-1];
|
||
|
|
||
|
// use default actions if available
|
||
|
if (this.defaultActions[state]) {
|
||
|
action = this.defaultActions[state];
|
||
|
} else {
|
||
|
if (symbol == null)
|
||
|
symbol = lex();
|
||
|
// read action for current state and first input
|
||
|
action = table[state] && table[state][symbol];
|
||
|
}
|
||
|
|
||
|
// handle parse error
|
||
|
if (typeof action === 'undefined' || !action.length || !action[0]) {
|
||
|
|
||
|
if (!recovering) {
|
||
|
// Report error
|
||
|
expected = [];
|
||
|
for (p in table[state]) if (this.terminals_[p] && p > 2) {
|
||
|
expected.push("'"+this.terminals_[p]+"'");
|
||
|
}
|
||
|
var errStr = '';
|
||
|
if (this.lexer.showPosition) {
|
||
|
errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+'\nExpecting '+expected.join(', ');
|
||
|
} else {
|
||
|
errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
|
||
|
(symbol == 1 /*EOF*/ ? "end of input" :
|
||
|
("'"+(this.terminals_[symbol] || symbol)+"'"));
|
||
|
}
|
||
|
this.parseError(errStr,
|
||
|
{text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
|
||
|
}
|
||
|
|
||
|
// just recovered from another error
|
||
|
if (recovering == 3) {
|
||
|
if (symbol == EOF) {
|
||
|
throw new Error(errStr || 'Parsing halted.');
|
||
|
}
|
||
|
|
||
|
// discard current lookahead and grab another
|
||
|
yyleng = this.lexer.yyleng;
|
||
|
yytext = this.lexer.yytext;
|
||
|
yylineno = this.lexer.yylineno;
|
||
|
yyloc = this.lexer.yylloc;
|
||
|
symbol = lex();
|
||
|
}
|
||
|
|
||
|
// try to recover from error
|
||
|
while (1) {
|
||
|
// check for error recovery rule in this state
|
||
|
if ((TERROR.toString()) in table[state]) {
|
||
|
break;
|
||
|
}
|
||
|
if (state == 0) {
|
||
|
throw new Error(errStr || 'Parsing halted.');
|
||
|
}
|
||
|
popStack(1);
|
||
|
state = stack[stack.length-1];
|
||
|
}
|
||
|
|
||
|
preErrorSymbol = symbol; // save the lookahead token
|
||
|
symbol = TERROR; // insert generic error symbol as new lookahead
|
||
|
state = stack[stack.length-1];
|
||
|
action = table[state] && table[state][TERROR];
|
||
|
recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
|
||
|
}
|
||
|
|
||
|
// this shouldn't happen, unless resolve defaults are off
|
||
|
if (action[0] instanceof Array && action.length > 1) {
|
||
|
throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
|
||
|
}
|
||
|
|
||
|
switch (action[0]) {
|
||
|
|
||
|
case 1: // shift
|
||
|
//this.shiftCount++;
|
||
|
|
||
|
stack.push(symbol);
|
||
|
vstack.push(this.lexer.yytext);
|
||
|
lstack.push(this.lexer.yylloc);
|
||
|
stack.push(action[1]); // push state
|
||
|
symbol = null;
|
||
|
if (!preErrorSymbol) { // normal execution/no error
|
||
|
yyleng = this.lexer.yyleng;
|
||
|
yytext = this.lexer.yytext;
|
||
|
yylineno = this.lexer.yylineno;
|
||
|
yyloc = this.lexer.yylloc;
|
||
|
if (recovering > 0)
|
||
|
recovering--;
|
||
|
} else { // error just occurred, resume old lookahead f/ before error
|
||
|
symbol = preErrorSymbol;
|
||
|
preErrorSymbol = null;
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case 2: // reduce
|
||
|
//this.reductionCount++;
|
||
|
|
||
|
len = this.productions_[action[1]][1];
|
||
|
|
||
|
// perform semantic action
|
||
|
yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
|
||
|
// default location, uses first token for firsts, last for lasts
|
||
|
yyval._$ = {
|
||
|
first_line: lstack[lstack.length-(len||1)].first_line,
|
||
|
last_line: lstack[lstack.length-1].last_line,
|
||
|
first_column: lstack[lstack.length-(len||1)].first_column,
|
||
|
last_column: lstack[lstack.length-1].last_column
|
||
|
};
|
||
|
r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
|
||
|
|
||
|
if (typeof r !== 'undefined') {
|
||
|
return r;
|
||
|
}
|
||
|
|
||
|
// pop off stack
|
||
|
if (len) {
|
||
|
stack = stack.slice(0,-1*len*2);
|
||
|
vstack = vstack.slice(0, -1*len);
|
||
|
lstack = lstack.slice(0, -1*len);
|
||
|
}
|
||
|
|
||
|
stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)
|
||
|
vstack.push(yyval.$);
|
||
|
lstack.push(yyval._$);
|
||
|
// goto new state = table[STATE][NONTERMINAL]
|
||
|
newState = table[stack[stack.length-2]][stack[stack.length-1]];
|
||
|
stack.push(newState);
|
||
|
break;
|
||
|
|
||
|
case 3: // accept
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}};
|
||
|
return parser;
|
||
|
})();
|
||
|
if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
|
||
|
exports.parser = parser;
|
||
|
exports.parse = function () { return parser.parse.apply(parser, arguments); }
|
||
|
exports.main = function commonjsMain(args) {
|
||
|
if (!args[1])
|
||
|
throw new Error('Usage: '+args[0]+' FILE');
|
||
|
if (typeof process !== 'undefined') {
|
||
|
var source = require('fs').readFileSync(require('path').join(process.cwd(), args[1]), "utf8");
|
||
|
} else {
|
||
|
var cwd = require("file").path(require("file").cwd());
|
||
|
var source = cwd.join(args[1]).read({charset: "utf-8"});
|
||
|
}
|
||
|
return exports.parser.parse(source);
|
||
|
}
|
||
|
if (typeof module !== 'undefined' && require.main === module) {
|
||
|
exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require("system").args);
|
||
|
}
|
||
|
}
|