var compile = exports.compile = function (ast, source) { var getSource = function(){ var a = source.split('\n'); var remap = [0]; a.forEach(function(s){ remap.push(remap[remap.length - 1] + s.length + 1) }); var mins = 0 return function(s, t){ for(var i = mins; i < remap.length; i++) if(remap[i] > s) for(var j = i; i < remap.length; j++) if(remap[j] > t) { mins = j + 1; return source.slice(remap[i - 1], remap[j]).replace(/\s+$/, '') }; return '' } }() var trees = ast.scopes; var enter = trees[0]; var enterText = "var undefined;\n" + function(){ var s = ''; for(var item in eisa.runtime) if(OWNS(eisa.runtime, item)) { s += 'var EISA_' + item + ' = ' + PART(C_TEMP('RUNTIME'), item) + ';\n'; }; return s; }(); var generator = Generator(trees); var generatedSource = generator(enter); if(ast.debugQ){ generatedSource = generatedSource.replace(/^\s*\/\*@LFC-DEBUG (\d+),(\d+)@\*\/.*$/gm, function(m, $1, $2){ return getSource($1 - 0, $2 - 0).split('\n').filter(function(s){ return !!s }) .map(function(s){ return STRIZE('[LFC-DEBUG]: ' + s) + ";" }).join('\n') }) } var finalSource = enterText + 'return ' + generatedSource; var f = Function(C_TEMP('RUNTIME'), C_TEMP('INIT'), finalSource); return { func: f, source: finalSource, generatedSource: generatedSource, wrappedSource: 'function(' + [C_TEMP('RUNTIME'), C_TEMP('INIT')].join(',') + '){' + finalSource + '}' } };
var enterText = "var undefined;\n" + function(){ var s = ''; for(var item in eisa.runtime) if(OWNS(eisa.runtime, item)) { s += 'var EISA_' + item + ' = ' + PART(C_TEMP('RUNTIME'), item) + ';\n'; }; return s; }();