removed global dependency from grammer

This commit is contained in:
satyr 2010-09-21 16:50:32 +09:00
parent 69942c9a81
commit 7bc91bf6c6
5 changed files with 135 additions and 132 deletions

View File

@ -5,7 +5,6 @@
Lexer = require('./lexer').Lexer;
parser = require('./parser').parser;
helpers = require('./helpers').helpers;
helpers.extend(global, require('./nodes'));
if (require.extensions) {
fs = require('fs');
require.extensions['.coffee'] = function(module, filename) {
@ -73,4 +72,5 @@
return "";
}
};
parser.yy = require('./nodes');
})();

View File

@ -9,6 +9,7 @@
return [patternString, '$$ = $1;', options];
}
action = (match = (action + '').match(unwrap)) ? match[1] : ("(" + (action) + "())");
action = action.replace(/\b(?:[A-Z][a-z]+Node|Expressions)\b/g, 'yy.$&');
return [patternString, ("$$ = " + (action) + ";"), options];
};
grammar = {

View File

@ -9,15 +9,15 @@ performAction: function anonymous(yytext,yyleng,yylineno,yy) {
var $$ = arguments[5],$0=arguments[5].length;
switch(arguments[4]) {
case 1:return this.$ = new Expressions();
case 1:return this.$ = new yy.Expressions();
break;
case 2:return this.$ = new Expressions();
case 2:return this.$ = new yy.Expressions();
break;
case 3:return this.$ = $$[$0-1+1-1];
break;
case 4:return this.$ = $$[$0-2+1-1];
break;
case 5:this.$ = Expressions.wrap([$$[$0-1+1-1]]);
case 5:this.$ = yy.Expressions.wrap([$$[$0-1+1-1]]);
break;
case 6:this.$ = $$[$0-3+1-1].push($$[$0-3+3-1]);
break;
@ -31,11 +31,11 @@ case 10:this.$ = $$[$0-1+1-1];
break;
case 11:this.$ = $$[$0-1+1-1];
break;
case 12:this.$ = new LiteralNode($$[$0-1+1-1]);
case 12:this.$ = new yy.LiteralNode($$[$0-1+1-1]);
break;
case 13:this.$ = new LiteralNode($$[$0-1+1-1]);
case 13:this.$ = new yy.LiteralNode($$[$0-1+1-1]);
break;
case 14:this.$ = new LiteralNode($$[$0-1+1-1]);
case 14:this.$ = new yy.LiteralNode($$[$0-1+1-1]);
break;
case 15:this.$ = $$[$0-1+1-1];
break;
@ -67,63 +67,63 @@ case 28:this.$ = $$[$0-1+1-1];
break;
case 29:this.$ = $$[$0-3+2-1];
break;
case 30:this.$ = new Expressions();
case 30:this.$ = new yy.Expressions();
break;
case 31:this.$ = Expressions.wrap([$$[$0-2+2-1]]);
case 31:this.$ = yy.Expressions.wrap([$$[$0-2+2-1]]);
break;
case 32:this.$ = new LiteralNode($$[$0-1+1-1]);
case 32:this.$ = new yy.LiteralNode($$[$0-1+1-1]);
break;
case 33:this.$ = new LiteralNode($$[$0-1+1-1]);
case 33:this.$ = new yy.LiteralNode($$[$0-1+1-1]);
break;
case 34:this.$ = new LiteralNode($$[$0-1+1-1]);
case 34:this.$ = new yy.LiteralNode($$[$0-1+1-1]);
break;
case 35:this.$ = $$[$0-1+1-1];
break;
case 36:this.$ = new LiteralNode($$[$0-1+1-1]);
case 36:this.$ = new yy.LiteralNode($$[$0-1+1-1]);
break;
case 37:this.$ = new LiteralNode($$[$0-1+1-1]);
case 37:this.$ = new yy.LiteralNode($$[$0-1+1-1]);
break;
case 38:this.$ = new LiteralNode(true);
case 38:this.$ = new yy.LiteralNode(true);
break;
case 39:this.$ = new LiteralNode(false);
case 39:this.$ = new yy.LiteralNode(false);
break;
case 40:this.$ = new LiteralNode(true);
case 40:this.$ = new yy.LiteralNode(true);
break;
case 41:this.$ = new LiteralNode(false);
case 41:this.$ = new yy.LiteralNode(false);
break;
case 42:this.$ = new LiteralNode(true);
case 42:this.$ = new yy.LiteralNode(true);
break;
case 43:this.$ = new LiteralNode(false);
case 43:this.$ = new yy.LiteralNode(false);
break;
case 44:this.$ = new AssignNode($$[$0-3+1-1], $$[$0-3+3-1]);
case 44:this.$ = new yy.AssignNode($$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 45:this.$ = new AssignNode($$[$0-5+1-1], $$[$0-5+4-1]);
case 45:this.$ = new yy.AssignNode($$[$0-5+1-1], $$[$0-5+4-1]);
break;
case 46:this.$ = new ValueNode($$[$0-1+1-1]);
case 46:this.$ = new yy.ValueNode($$[$0-1+1-1]);
break;
case 47:this.$ = $$[$0-1+1-1];
break;
case 48:this.$ = new AssignNode(new ValueNode($$[$0-3+1-1]), $$[$0-3+3-1], 'object');
case 48:this.$ = new yy.AssignNode(new yy.ValueNode($$[$0-3+1-1]), $$[$0-3+3-1], 'object');
break;
case 49:this.$ = new AssignNode(new ValueNode($$[$0-3+1-1]), $$[$0-3+3-1], 'object');
case 49:this.$ = new yy.AssignNode(new yy.ValueNode($$[$0-3+1-1]), $$[$0-3+3-1], 'object');
break;
case 50:this.$ = new AssignNode(new ValueNode($$[$0-5+1-1]), $$[$0-5+4-1], 'object');
case 50:this.$ = new yy.AssignNode(new yy.ValueNode($$[$0-5+1-1]), $$[$0-5+4-1], 'object');
break;
case 51:this.$ = new AssignNode(new ValueNode($$[$0-5+1-1]), $$[$0-5+4-1], 'object');
case 51:this.$ = new yy.AssignNode(new yy.ValueNode($$[$0-5+1-1]), $$[$0-5+4-1], 'object');
break;
case 52:this.$ = $$[$0-1+1-1];
break;
case 53:this.$ = new ReturnNode($$[$0-2+2-1]);
case 53:this.$ = new yy.ReturnNode($$[$0-2+2-1]);
break;
case 54:this.$ = new ReturnNode(new ValueNode(new LiteralNode('null')));
case 54:this.$ = new yy.ReturnNode(new yy.ValueNode(new yy.LiteralNode('null')));
break;
case 55:this.$ = new CommentNode($$[$0-1+1-1]);
case 55:this.$ = new yy.CommentNode($$[$0-1+1-1]);
break;
case 56:this.$ = new ExistenceNode($$[$0-2+1-1]);
case 56:this.$ = new yy.ExistenceNode($$[$0-2+1-1]);
break;
case 57:this.$ = new CodeNode($$[$0-5+2-1], $$[$0-5+5-1], $$[$0-5+4-1]);
case 57:this.$ = new yy.CodeNode($$[$0-5+2-1], $$[$0-5+5-1], $$[$0-5+4-1]);
break;
case 58:this.$ = new CodeNode([], $$[$0-2+2-1], $$[$0-2+1-1]);
case 58:this.$ = new yy.CodeNode([], $$[$0-2+2-1], $$[$0-2+1-1]);
break;
case 59:this.$ = 'func';
break;
@ -139,55 +139,55 @@ case 64:this.$ = [$$[$0-1+1-1]];
break;
case 65:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]);
break;
case 66:this.$ = new LiteralNode($$[$0-1+1-1]);
case 66:this.$ = new yy.LiteralNode($$[$0-1+1-1]);
break;
case 67:this.$ = new ParamNode($$[$0-2+2-1], true);
case 67:this.$ = new yy.ParamNode($$[$0-2+2-1], true);
break;
case 68:this.$ = new ParamNode($$[$0-4+1-1], false, true);
case 68:this.$ = new yy.ParamNode($$[$0-4+1-1], false, true);
break;
case 69:this.$ = new ParamNode($$[$0-5+2-1], true, true);
case 69:this.$ = new yy.ParamNode($$[$0-5+2-1], true, true);
break;
case 70:this.$ = new SplatNode($$[$0-4+1-1]);
case 70:this.$ = new yy.SplatNode($$[$0-4+1-1]);
break;
case 71:this.$ = new ValueNode($$[$0-1+1-1]);
case 71:this.$ = new yy.ValueNode($$[$0-1+1-1]);
break;
case 72:this.$ = $$[$0-2+1-1].push($$[$0-2+2-1]);
break;
case 73:this.$ = new ValueNode($$[$0-2+1-1], [$$[$0-2+2-1]]);
case 73:this.$ = new yy.ValueNode($$[$0-2+1-1], [$$[$0-2+2-1]]);
break;
case 74:this.$ = $$[$0-1+1-1];
break;
case 75:this.$ = $$[$0-1+1-1];
break;
case 76:this.$ = new ValueNode($$[$0-1+1-1]);
case 76:this.$ = new yy.ValueNode($$[$0-1+1-1]);
break;
case 77:this.$ = new ValueNode($$[$0-1+1-1]);
case 77:this.$ = new yy.ValueNode($$[$0-1+1-1]);
break;
case 78:this.$ = $$[$0-1+1-1];
break;
case 79:this.$ = new ValueNode($$[$0-1+1-1]);
case 79:this.$ = new yy.ValueNode($$[$0-1+1-1]);
break;
case 80:this.$ = new ValueNode($$[$0-1+1-1]);
case 80:this.$ = new yy.ValueNode($$[$0-1+1-1]);
break;
case 81:this.$ = new ValueNode($$[$0-1+1-1]);
case 81:this.$ = new yy.ValueNode($$[$0-1+1-1]);
break;
case 82:this.$ = $$[$0-1+1-1];
break;
case 83:this.$ = new ValueNode(new LiteralNode('null'));
case 83:this.$ = new yy.ValueNode(new yy.LiteralNode('null'));
break;
case 84:this.$ = new AccessorNode($$[$0-2+2-1]);
case 84:this.$ = new yy.AccessorNode($$[$0-2+2-1]);
break;
case 85:this.$ = new AccessorNode($$[$0-2+2-1], 'prototype');
case 85:this.$ = new yy.AccessorNode($$[$0-2+2-1], 'prototype');
break;
case 86:this.$ = new AccessorNode(new LiteralNode('prototype'));
case 86:this.$ = new yy.AccessorNode(new yy.LiteralNode('prototype'));
break;
case 87:this.$ = new AccessorNode($$[$0-2+2-1], 'soak');
case 87:this.$ = new yy.AccessorNode($$[$0-2+2-1], 'soak');
break;
case 88:this.$ = $$[$0-1+1-1];
break;
case 89:this.$ = new SliceNode($$[$0-1+1-1]);
case 89:this.$ = new yy.SliceNode($$[$0-1+1-1]);
break;
case 90:this.$ = new IndexNode($$[$0-3+2-1]);
case 90:this.$ = new yy.IndexNode($$[$0-3+2-1]);
break;
case 91:this.$ = (function () {
$$[$0-2+2-1].soakNode = true;
@ -199,7 +199,7 @@ case 92:this.$ = (function () {
return $$[$0-2+2-1];
}());
break;
case 93:this.$ = new ObjectNode($$[$0-4+2-1]);
case 93:this.$ = new yy.ObjectNode($$[$0-4+2-1]);
break;
case 94:this.$ = [];
break;
@ -211,21 +211,21 @@ case 97:this.$ = $$[$0-4+1-1].concat([$$[$0-4+4-1]]);
break;
case 98:this.$ = $$[$0-6+1-1].concat($$[$0-6+4-1]);
break;
case 99:this.$ = new ClassNode($$[$0-2+2-1]);
case 99:this.$ = new yy.ClassNode($$[$0-2+2-1]);
break;
case 100:this.$ = new ClassNode($$[$0-4+2-1], $$[$0-4+4-1]);
case 100:this.$ = new yy.ClassNode($$[$0-4+2-1], $$[$0-4+4-1]);
break;
case 101:this.$ = new ClassNode($$[$0-5+2-1], null, $$[$0-5+4-1]);
case 101:this.$ = new yy.ClassNode($$[$0-5+2-1], null, $$[$0-5+4-1]);
break;
case 102:this.$ = new ClassNode($$[$0-7+2-1], $$[$0-7+4-1], $$[$0-7+6-1]);
case 102:this.$ = new yy.ClassNode($$[$0-7+2-1], $$[$0-7+4-1], $$[$0-7+6-1]);
break;
case 103:this.$ = new ClassNode('__temp__', null, $$[$0-4+3-1]);
case 103:this.$ = new yy.ClassNode('__temp__', null, $$[$0-4+3-1]);
break;
case 104:this.$ = $$[$0-1+1-1];
break;
case 105:this.$ = new AssignNode(new ValueNode($$[$0-3+1-1]), $$[$0-3+3-1], 'this');
case 105:this.$ = new yy.AssignNode(new yy.ValueNode($$[$0-3+1-1]), $$[$0-3+3-1], 'this');
break;
case 106:this.$ = new AssignNode(new ValueNode($$[$0-5+1-1]), $$[$0-5+4-1], 'this');
case 106:this.$ = new yy.AssignNode(new yy.ValueNode($$[$0-5+1-1]), $$[$0-5+4-1], 'this');
break;
case 107:this.$ = [];
break;
@ -239,17 +239,17 @@ case 111:this.$ = $$[$0-1+1-1];
break;
case 112:this.$ = $$[$0-2+2-1].newInstance();
break;
case 113:this.$ = (new CallNode($$[$0-2+2-1], [])).newInstance();
case 113:this.$ = (new yy.CallNode($$[$0-2+2-1], [])).newInstance();
break;
case 114:this.$ = new ExtendsNode($$[$0-3+1-1], $$[$0-3+3-1]);
case 114:this.$ = new yy.ExtendsNode($$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 115:this.$ = new CallNode($$[$0-3+1-1], $$[$0-3+3-1], $$[$0-3+2-1]);
case 115:this.$ = new yy.CallNode($$[$0-3+1-1], $$[$0-3+3-1], $$[$0-3+2-1]);
break;
case 116:this.$ = new CallNode($$[$0-3+1-1], $$[$0-3+3-1], $$[$0-3+2-1]);
case 116:this.$ = new yy.CallNode($$[$0-3+1-1], $$[$0-3+3-1], $$[$0-3+2-1]);
break;
case 117:this.$ = new CallNode('super', [new SplatNode(new LiteralNode('arguments'))]);
case 117:this.$ = new yy.CallNode('super', [new yy.SplatNode(new yy.LiteralNode('arguments'))]);
break;
case 118:this.$ = new CallNode('super', $$[$0-2+2-1]);
case 118:this.$ = new yy.CallNode('super', $$[$0-2+2-1]);
break;
case 119:this.$ = false;
break;
@ -259,27 +259,27 @@ case 121:this.$ = [];
break;
case 122:this.$ = $$[$0-4+2-1];
break;
case 123:this.$ = new ValueNode(new LiteralNode('this'));
case 123:this.$ = new yy.ValueNode(new yy.LiteralNode('this'));
break;
case 124:this.$ = new ValueNode(new LiteralNode('this'));
case 124:this.$ = new yy.ValueNode(new yy.LiteralNode('this'));
break;
case 125:this.$ = 'inclusive';
break;
case 126:this.$ = 'exclusive';
break;
case 127:this.$ = new ValueNode(new LiteralNode('this'), [new AccessorNode($$[$0-2+2-1])]);
case 127:this.$ = new yy.ValueNode(new yy.LiteralNode('this'), [new yy.AccessorNode($$[$0-2+2-1])]);
break;
case 128:this.$ = new RangeNode($$[$0-5+2-1], $$[$0-5+4-1], $$[$0-5+3-1]);
case 128:this.$ = new yy.RangeNode($$[$0-5+2-1], $$[$0-5+4-1], $$[$0-5+3-1]);
break;
case 129:this.$ = new RangeNode($$[$0-5+2-1], $$[$0-5+4-1], $$[$0-5+3-1]);
case 129:this.$ = new yy.RangeNode($$[$0-5+2-1], $$[$0-5+4-1], $$[$0-5+3-1]);
break;
case 130:this.$ = new RangeNode($$[$0-4+2-1], null, $$[$0-4+3-1]);
case 130:this.$ = new yy.RangeNode($$[$0-4+2-1], null, $$[$0-4+3-1]);
break;
case 131:this.$ = new RangeNode(null, $$[$0-4+3-1], $$[$0-4+2-1]);
case 131:this.$ = new yy.RangeNode(null, $$[$0-4+3-1], $$[$0-4+2-1]);
break;
case 132:this.$ = new ArrayNode([]);
case 132:this.$ = new yy.ArrayNode([]);
break;
case 133:this.$ = new ArrayNode($$[$0-4+2-1]);
case 133:this.$ = new yy.ArrayNode($$[$0-4+2-1]);
break;
case 134:this.$ = [$$[$0-1+1-1]];
break;
@ -299,55 +299,55 @@ case 141:this.$ = $$[$0-1+1-1];
break;
case 142:this.$ = $$[$0-3+1-1] instanceof Array ? $$[$0-3+1-1].concat([$$[$0-3+3-1]]) : [$$[$0-3+1-1]].concat([$$[$0-3+3-1]]);
break;
case 143:this.$ = new TryNode($$[$0-3+2-1], $$[$0-3+3-1][0], $$[$0-3+3-1][1]);
case 143:this.$ = new yy.TryNode($$[$0-3+2-1], $$[$0-3+3-1][0], $$[$0-3+3-1][1]);
break;
case 144:this.$ = new TryNode($$[$0-4+2-1], null, null, $$[$0-4+4-1]);
case 144:this.$ = new yy.TryNode($$[$0-4+2-1], null, null, $$[$0-4+4-1]);
break;
case 145:this.$ = new TryNode($$[$0-5+2-1], $$[$0-5+3-1][0], $$[$0-5+3-1][1], $$[$0-5+5-1]);
case 145:this.$ = new yy.TryNode($$[$0-5+2-1], $$[$0-5+3-1][0], $$[$0-5+3-1][1], $$[$0-5+5-1]);
break;
case 146:this.$ = [$$[$0-3+2-1], $$[$0-3+3-1]];
break;
case 147:this.$ = new ThrowNode($$[$0-2+2-1]);
case 147:this.$ = new yy.ThrowNode($$[$0-2+2-1]);
break;
case 148:this.$ = new ParentheticalNode($$[$0-3+2-1]);
case 148:this.$ = new yy.ParentheticalNode($$[$0-3+2-1]);
break;
case 149:this.$ = new ParentheticalNode(new LiteralNode(''));
case 149:this.$ = new yy.ParentheticalNode(new yy.LiteralNode(''));
break;
case 150:this.$ = new WhileNode($$[$0-2+2-1]);
case 150:this.$ = new yy.WhileNode($$[$0-2+2-1]);
break;
case 151:this.$ = new WhileNode($$[$0-4+2-1], {
case 151:this.$ = new yy.WhileNode($$[$0-4+2-1], {
guard: $$[$0-4+4-1]
});
break;
case 152:this.$ = new WhileNode($$[$0-2+2-1], {
case 152:this.$ = new yy.WhileNode($$[$0-2+2-1], {
invert: true
});
break;
case 153:this.$ = new WhileNode($$[$0-4+2-1], {
case 153:this.$ = new yy.WhileNode($$[$0-4+2-1], {
invert: true,
guard: $$[$0-4+4-1]
});
break;
case 154:this.$ = $$[$0-2+1-1].addBody($$[$0-2+2-1]);
break;
case 155:this.$ = $$[$0-2+2-1].addBody(Expressions.wrap([$$[$0-2+1-1]]));
case 155:this.$ = $$[$0-2+2-1].addBody(yy.Expressions.wrap([$$[$0-2+1-1]]));
break;
case 156:this.$ = $$[$0-2+2-1].addBody(Expressions.wrap([$$[$0-2+1-1]]));
case 156:this.$ = $$[$0-2+2-1].addBody(yy.Expressions.wrap([$$[$0-2+1-1]]));
break;
case 157:this.$ = $$[$0-1+1-1];
break;
case 158:this.$ = new WhileNode(new LiteralNode('true')).addBody($$[$0-2+2-1]);
case 158:this.$ = new yy.WhileNode(new yy.LiteralNode('true')).addBody($$[$0-2+2-1]);
break;
case 159:this.$ = new WhileNode(new LiteralNode('true')).addBody(Expressions.wrap([$$[$0-2+2-1]]));
case 159:this.$ = new yy.WhileNode(new yy.LiteralNode('true')).addBody(yy.Expressions.wrap([$$[$0-2+2-1]]));
break;
case 160:this.$ = new ForNode($$[$0-2+1-1], $$[$0-2+2-1], $$[$0-2+2-1].vars[0], $$[$0-2+2-1].vars[1]);
case 160:this.$ = new yy.ForNode($$[$0-2+1-1], $$[$0-2+2-1], $$[$0-2+2-1].vars[0], $$[$0-2+2-1].vars[1]);
break;
case 161:this.$ = new ForNode($$[$0-2+1-1], $$[$0-2+2-1], $$[$0-2+2-1].vars[0], $$[$0-2+2-1].vars[1]);
case 161:this.$ = new yy.ForNode($$[$0-2+1-1], $$[$0-2+2-1], $$[$0-2+2-1].vars[0], $$[$0-2+2-1].vars[1]);
break;
case 162:this.$ = new ForNode($$[$0-2+2-1], $$[$0-2+1-1], $$[$0-2+1-1].vars[0], $$[$0-2+1-1].vars[1]);
case 162:this.$ = new yy.ForNode($$[$0-2+2-1], $$[$0-2+1-1], $$[$0-2+1-1].vars[0], $$[$0-2+1-1].vars[1]);
break;
case 163:this.$ = {
source: new ValueNode($$[$0-2+2-1]),
source: new yy.ValueNode($$[$0-2+2-1]),
vars: []
};
break;
@ -366,9 +366,9 @@ case 166:this.$ = (function () {
break;
case 167:this.$ = $$[$0-1+1-1];
break;
case 168:this.$ = new ValueNode($$[$0-1+1-1]);
case 168:this.$ = new yy.ValueNode($$[$0-1+1-1]);
break;
case 169:this.$ = new ValueNode($$[$0-1+1-1]);
case 169:this.$ = new yy.ValueNode($$[$0-1+1-1]);
break;
case 170:this.$ = [$$[$0-1+1-1]];
break;
@ -411,13 +411,13 @@ case 178:this.$ = {
guard: $$[$0-6+6-1]
};
break;
case 179:this.$ = new SwitchNode($$[$0-5+2-1], $$[$0-5+4-1]);
case 179:this.$ = new yy.SwitchNode($$[$0-5+2-1], $$[$0-5+4-1]);
break;
case 180:this.$ = new SwitchNode($$[$0-7+2-1], $$[$0-7+4-1], $$[$0-7+6-1]);
case 180:this.$ = new yy.SwitchNode($$[$0-7+2-1], $$[$0-7+4-1], $$[$0-7+6-1]);
break;
case 181:this.$ = new SwitchNode(null, $$[$0-4+3-1]);
case 181:this.$ = new yy.SwitchNode(null, $$[$0-4+3-1]);
break;
case 182:this.$ = new SwitchNode(null, $$[$0-6+3-1], $$[$0-6+5-1]);
case 182:this.$ = new yy.SwitchNode(null, $$[$0-6+3-1], $$[$0-6+5-1]);
break;
case 183:this.$ = $$[$0-1+1-1];
break;
@ -427,83 +427,83 @@ case 185:this.$ = [[$$[$0-3+2-1], $$[$0-3+3-1]]];
break;
case 186:this.$ = [[$$[$0-4+2-1], $$[$0-4+3-1]]];
break;
case 187:this.$ = new IfNode($$[$0-3+2-1], $$[$0-3+3-1]);
case 187:this.$ = new yy.IfNode($$[$0-3+2-1], $$[$0-3+3-1]);
break;
case 188:this.$ = new IfNode($$[$0-3+2-1], $$[$0-3+3-1], {
case 188:this.$ = new yy.IfNode($$[$0-3+2-1], $$[$0-3+3-1], {
invert: true
});
break;
case 189:this.$ = $$[$0-5+1-1].addElse((new IfNode($$[$0-5+4-1], $$[$0-5+5-1])).forceStatement());
case 189:this.$ = $$[$0-5+1-1].addElse((new yy.IfNode($$[$0-5+4-1], $$[$0-5+5-1])).forceStatement());
break;
case 190:this.$ = $$[$0-3+1-1].addElse($$[$0-3+3-1]);
break;
case 191:this.$ = $$[$0-1+1-1];
break;
case 192:this.$ = new IfNode($$[$0-3+3-1], Expressions.wrap([$$[$0-3+1-1]]), {
case 192:this.$ = new yy.IfNode($$[$0-3+3-1], yy.Expressions.wrap([$$[$0-3+1-1]]), {
statement: true
});
break;
case 193:this.$ = new IfNode($$[$0-3+3-1], Expressions.wrap([$$[$0-3+1-1]]), {
case 193:this.$ = new yy.IfNode($$[$0-3+3-1], yy.Expressions.wrap([$$[$0-3+1-1]]), {
statement: true
});
break;
case 194:this.$ = new IfNode($$[$0-3+3-1], Expressions.wrap([$$[$0-3+1-1]]), {
case 194:this.$ = new yy.IfNode($$[$0-3+3-1], yy.Expressions.wrap([$$[$0-3+1-1]]), {
statement: true,
invert: true
});
break;
case 195:this.$ = new IfNode($$[$0-3+3-1], Expressions.wrap([$$[$0-3+1-1]]), {
case 195:this.$ = new yy.IfNode($$[$0-3+3-1], yy.Expressions.wrap([$$[$0-3+1-1]]), {
statement: true,
invert: true
});
break;
case 196:this.$ = new OpNode($$[$0-2+1-1], $$[$0-2+2-1]);
case 196:this.$ = new yy.OpNode($$[$0-2+1-1], $$[$0-2+2-1]);
break;
case 197:this.$ = new OpNode('-', $$[$0-2+2-1]);
case 197:this.$ = new yy.OpNode('-', $$[$0-2+2-1]);
break;
case 198:this.$ = new OpNode('+', $$[$0-2+2-1]);
case 198:this.$ = new yy.OpNode('+', $$[$0-2+2-1]);
break;
case 199:this.$ = new OpNode('--', $$[$0-2+2-1]);
case 199:this.$ = new yy.OpNode('--', $$[$0-2+2-1]);
break;
case 200:this.$ = new OpNode('++', $$[$0-2+2-1]);
case 200:this.$ = new yy.OpNode('++', $$[$0-2+2-1]);
break;
case 201:this.$ = new OpNode('--', $$[$0-2+1-1], null, true);
case 201:this.$ = new yy.OpNode('--', $$[$0-2+1-1], null, true);
break;
case 202:this.$ = new OpNode('++', $$[$0-2+1-1], null, true);
case 202:this.$ = new yy.OpNode('++', $$[$0-2+1-1], null, true);
break;
case 203:this.$ = new OpNode('?', $$[$0-3+1-1], $$[$0-3+3-1]);
case 203:this.$ = new yy.OpNode('?', $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 204:this.$ = new OpNode('+', $$[$0-3+1-1], $$[$0-3+3-1]);
case 204:this.$ = new yy.OpNode('+', $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 205:this.$ = new OpNode('-', $$[$0-3+1-1], $$[$0-3+3-1]);
case 205:this.$ = new yy.OpNode('-', $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 206:this.$ = new OpNode('==', $$[$0-3+1-1], $$[$0-3+3-1]);
case 206:this.$ = new yy.OpNode('==', $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 207:this.$ = new OpNode('!=', $$[$0-3+1-1], $$[$0-3+3-1]);
case 207:this.$ = new yy.OpNode('!=', $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 208:this.$ = new OpNode($$[$0-3+2-1], $$[$0-3+1-1], $$[$0-3+3-1]);
case 208:this.$ = new yy.OpNode($$[$0-3+2-1], $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 209:this.$ = new OpNode($$[$0-3+2-1], $$[$0-3+1-1], $$[$0-3+3-1]);
case 209:this.$ = new yy.OpNode($$[$0-3+2-1], $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 210:this.$ = new OpNode($$[$0-3+2-1], $$[$0-3+1-1], $$[$0-3+3-1]);
case 210:this.$ = new yy.OpNode($$[$0-3+2-1], $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 211:this.$ = new OpNode($$[$0-3+2-1], $$[$0-3+1-1], $$[$0-3+3-1]);
case 211:this.$ = new yy.OpNode($$[$0-3+2-1], $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 212:this.$ = new OpNode($$[$0-3+2-1], $$[$0-3+1-1], $$[$0-3+3-1]);
case 212:this.$ = new yy.OpNode($$[$0-3+2-1], $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 213:this.$ = new OpNode($$[$0-5+2-1], $$[$0-5+1-1], $$[$0-5+4-1]);
case 213:this.$ = new yy.OpNode($$[$0-5+2-1], $$[$0-5+1-1], $$[$0-5+4-1]);
break;
case 214:this.$ = new InNode($$[$0-3+1-1], $$[$0-3+3-1]);
case 214:this.$ = new yy.InNode($$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 215:this.$ = new OpNode('in', $$[$0-3+1-1], $$[$0-3+3-1]);
case 215:this.$ = new yy.OpNode('in', $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 216:this.$ = new OpNode('instanceof', $$[$0-3+1-1], $$[$0-3+3-1]);
case 216:this.$ = new yy.OpNode('instanceof', $$[$0-3+1-1], $$[$0-3+3-1]);
break;
case 217:this.$ = new OpNode($$[$0-4+2-1], new InNode($$[$0-4+1-1], $$[$0-4+4-1]));
case 217:this.$ = new yy.OpNode($$[$0-4+2-1], new yy.InNode($$[$0-4+1-1], $$[$0-4+4-1]));
break;
case 218:this.$ = new OpNode($$[$0-4+2-1], new ParentheticalNode(new OpNode('in', $$[$0-4+1-1], $$[$0-4+4-1])));
case 218:this.$ = new yy.OpNode($$[$0-4+2-1], new yy.ParentheticalNode(new yy.OpNode('in', $$[$0-4+1-1], $$[$0-4+4-1])));
break;
case 219:this.$ = new OpNode($$[$0-4+2-1], new ParentheticalNode(new OpNode('instanceof', $$[$0-4+1-1], $$[$0-4+4-1])));
case 219:this.$ = new yy.OpNode($$[$0-4+2-1], new yy.ParentheticalNode(new yy.OpNode('instanceof', $$[$0-4+1-1], $$[$0-4+4-1])));
break;
}
},
@ -701,7 +701,7 @@ exports.main = function commonjsMain(args) {
}
return exports.parser.parse(source);
}
if (typeof module !== "undefined" && require.main === module) {
if (typeof module !== 'undefined' && require.main === module) {
exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require("system").args);
}
}

View File

@ -12,7 +12,6 @@ if process?
Lexer = require('./lexer').Lexer
parser = require('./parser').parser
helpers = require('./helpers').helpers
helpers.extend global, require './nodes'
# TODO: Remove registerExtension when fully deprecated
if require.extensions
fs = require 'fs'
@ -82,3 +81,5 @@ parser.lexer =
@tokens = tokens
@pos = 0
upcomingInput: -> ""
parser.yy = require './nodes'

View File

@ -33,6 +33,7 @@ unwrap = /function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/
o = (patternString, action, options) ->
return [patternString, '$$ = $1;', options] unless action
action = if match = (action + '').match(unwrap) then match[1] else "(#{action}())"
action = action.replace /\b(?:[A-Z][a-z]+Node|Expressions)\b/g, 'yy.$&'
[patternString, "$$ = #{action};", options]
# Grammatical Rules