made ForNode avoid needless cachings

This commit is contained in:
satyr
2010-10-02 07:26:37 +09:00
parent 341f511bbd
commit 2ea549ce5f
8 changed files with 112 additions and 114 deletions

View File

@@ -1,5 +1,5 @@
(function() {
var Parser, _i, _j, _len, _len2, _ref, _ref2, _ref3, _result, alt, alternatives, grammar, name, o, operators, token, tokens, unwrap;
var Parser, _i, _j, _len, _len2, _ref, _result, alt, alternatives, grammar, name, o, operators, token, tokens, unwrap;
var __hasProp = Object.prototype.hasOwnProperty;
Parser = require('jison').Parser;
unwrap = /function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/;
@@ -612,18 +612,17 @@
};
operators = [["right", '?'], ["left", 'CALL_START', 'CALL_END'], ["nonassoc", '++', '--'], ["right", 'UNARY'], ["left", 'MATH'], ["left", '+', '-'], ["left", 'SHIFT'], ["left", 'COMPARE'], ["left", 'INSTANCEOF'], ["left", '==', '!='], ["left", 'LOGIC'], ["right", 'COMPOUND_ASSIGN'], ["left", '.'], ["nonassoc", 'INDENT', 'OUTDENT'], ["right", 'WHEN', 'LEADING_WHEN', 'IN', 'OF', 'BY', 'THROW'], ["right", 'IF', 'UNLESS', 'ELSE', 'FOR', 'WHILE', 'UNTIL', 'LOOP', 'SUPER', 'CLASS', 'EXTENDS'], ["right", '=', ':', 'RETURN'], ["right", '->', '=>', 'UNLESS', 'POST_IF', 'POST_UNLESS']];
tokens = [];
_ref = grammar;
for (name in _ref) {
if (!__hasProp.call(_ref, name)) continue;
alternatives = _ref[name];
for (name in grammar) {
if (!__hasProp.call(grammar, name)) continue;
alternatives = grammar[name];
grammar[name] = (function() {
_result = []; _ref2 = alternatives;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
alt = _ref2[_i];
_result = [];
for (_i = 0, _len = alternatives.length; _i < _len; _i++) {
alt = alternatives[_i];
_result.push((function() {
_ref3 = alt[0].split(' ');
for (_j = 0, _len2 = _ref3.length; _j < _len2; _j++) {
token = _ref3[_j];
_ref = alt[0].split(' ');
for (_j = 0, _len2 = _ref.length; _j < _len2; _j++) {
token = _ref[_j];
if (!(grammar[token])) {
tokens.push(token);
}