UNPKG

earlgrey

Version:

Programming language compiling to JavaScript, featuring macros, dynamic typing annotations and pattern matching.

4 lines (2 loc) 14.8 kB
'use strict';require('earlgrey-runtime/5');var $targ$12=void 0;var $targ$13=void 0;var $0$0=void 0;var __lt____lt____colon__$0=void 0;var s$0=void 0;var varstats$0=void 0;var replaceVars$0=void 0;var eliminate_spurious_variables$0=void 0;var hoist$0=void 0;var hoistable$0=void 0;var not_hoistable$0=void 0;var hoist_helper$0=void 0;$0$0=require("./location");__lt____lt____colon__$0=getProperty($0$0,"<<:","./location");s$0=function s(stats$0,v$0){var $targ$0=void 0;if(!Object.hasOwnProperty.call(stats$0,v$0)){$targ$0={"assigns":0,"uses":0,"transfers":[],"replaceable":false};stats$0[v$0]=$targ$0;void 0;}return send(stats$0,v$0);};varstats$0=function varstats(temp$0$0,stats$1){var t0$0=void 0;var x$0=void 0;var m$0=void 0;var m$1=void 0;var m$2=void 0;var acc$0=void 0;var temp$1=void 0;var other$0=void 0;var vars$1=void 0;var body$1=void 0;var generator$0=void 0;var vars$0=void 0;var body$0=void 0;var v$1=void 0;var v1$1=void 0;var expr$1=void 0;var v1$0=void 0;var v2$0=void 0;var $$20476$0=void 0;var $$20477$0=void 0;var $$20478$0=void 0;var $$20479$0=void 0;var $$20480$0=void 0;var $$20481$0=void 0;var $$20482$0=void 0;var $$20483$0=void 0;var $$20484$0=void 0;var t0$1=void 0;var t1$0=void 0;var t2$0=void 0;var t3$0=void 0;var t4$0=void 0;var t5$0=void 0;var expr$0=void 0;var ph$0$0=void 0;t0$0=temp$0$0;expr$0=t0$0;ph$0$0=t0$0;t0$1=ph$0$0;t1$0=t0$1.length;if(($$20478$0=t1$0===3)&&($$20479$0=t0$1[0]==="assign")&&(t2$0=t0$1[1],($$20481$0=Array.isArray(t2$0))&&(t3$0=t2$0.length,($$20483$0=t3$0===2)&&($$20484$0=t2$0[0]==="variable")&&(v1$0=t2$0[1],t4$0=t0$1[2],Array.isArray(t4$0)&&(t5$0=t4$0.length,t5$0===2&&t4$0[0]==="variable"))))){v2$0=t4$0[1];s$0(stats$1,v1$0)["assigns"]=s$0(stats$1,v1$0).assigns+1;s$0(stats$1,v2$0)["uses"]=s$0(stats$1,v2$0).uses+1;return s$0(stats$1,v2$0).transfers.push(v1$0);}else{if($$20484$0){v1$1=t2$0[1];expr$1=t0$1[2];s$0(stats$1,v1$1)["assigns"]=s$0(stats$1,v1$1).assigns+1;return varstats$0(expr$1,stats$1);}else{if(t1$0===2&&t0$1[0]==="variable"){v$1=t0$1[1];return s$0(stats$1,v$1)["uses"]=s$0(stats$1,v$1).uses+1;}else{if(x$0=ph$0$0,x$0 instanceof Array&&x$0[0]==="value"){return undefined;}else{t0$1=ph$0$0;t1$0=t0$1.length;if(t1$0===3&&t0$1[0]==="scope"){vars$0=t0$1[1];body$0=t0$1[2];m$0=null;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{$1:for(var _iterator=vars$0[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){m$0=_step.value;var $targ$1=void 0;var v$2=void 0;var t0$2=void 0;var t1$1=void 0;t0$2=m$0;if(Array.isArray(t0$2)&&(t1$1=t0$2.length,t1$1===2&&t0$2[0]==="variable")){v$2=t0$2[1];$targ$1=true;s$0(stats$1,v$2)["replaceable"]=$targ$1;void 0;}else{___match_error(m$0);}}}catch(err){_didIteratorError=true;_iteratorError=err;}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return();}}finally{if(_didIteratorError){throw _iteratorError;}}}return varstats$0(body$0,stats$1);}else{if(t1$0>=3&&t1$0<=4&&t0$1[0]==="lambda"){vars$1=t0$1[1];body$1=t0$1[2];if(3>=t1$0){generator$0=null;}else{generator$0=t0$1[3];}m$1=null;var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{$2:for(var _iterator2=vars$1[Symbol.iterator](),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){m$1=_step2.value;var v$3=void 0;var t0$3=void 0;var t1$2=void 0;t0$3=m$1;if(Array.isArray(t0$3)&&(t1$2=t0$3.length,t1$2===2&&t0$3[0]==="variable")){v$3=t0$3[1];s$0(stats$1,v$3)["assigns"]=s$0(stats$1,v$3).assigns+1;}else{___match_error(m$1);}}}catch(err){_didIteratorError2=true;_iteratorError2=err;}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return();}}finally{if(_didIteratorError2){throw _iteratorError2;}}}return varstats$0(body$1,stats$1);}else{other$0=ph$0$0;acc$0=[];temp$1=null;m$2=null;var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{$3:for(var _iterator3=other$0.slice(1)[Symbol.iterator](),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){m$2=_step3.value;var x$1=void 0;x$1=m$2;temp$1=varstats$0(x$1,stats$1);acc$0.push(temp$1);}}catch(err){_didIteratorError3=true;_iteratorError3=err;}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return();}}finally{if(_didIteratorError3){throw _iteratorError3;}}}return acc$0;}}}}}}};replaceVars$0=function replaceVars(temp$2$0,repl$0){var t0$4=void 0;var x$2=void 0;var x$3=void 0;var m$3=void 0;var newvars$0=void 0;var m$4=void 0;var acc$1=void 0;var temp$3=void 0;var newrest$0=void 0;var other$1=void 0;var x$4=void 0;var rest$0=void 0;var vars$3=void 0;var body$3=void 0;var generator$1=void 0;var vars$2=void 0;var body$2=void 0;var v1$2=void 0;var v2$1=void 0;var v$4=void 0;var $$20646$0=void 0;var $$20647$0=void 0;var $$20648$0=void 0;var t0$5=void 0;var t1$3=void 0;var t2$1=void 0;var t3$1=void 0;var t4$1=void 0;var t5$1=void 0;var bridge$$20641$0=void 0;var expr$2=void 0;var ph$1$0=void 0;t0$4=temp$2$0;expr$2=t0$4;ph$1$0=t0$4;t0$5=ph$1$0;if(($$20647$0=Array.isArray(t0$5))&&(t1$3=t0$5.length,t1$3===2&&t0$5[0]==="variable"&&(v$4=t0$5[1],Object.hasOwnProperty.call(repl$0,v$4)&&send(repl$0,v$4)))){return __lt____lt____colon__$0(["variable",send(repl$0,v$4)],expr$2);}else{if($$20647$0&&t1$3===3&&t0$5[0]==="assign"&&(t2$1=t0$5[1],Array.isArray(t2$1)&&(t3$1=t2$1.length,t3$1===2&&t2$1[0]==="variable"&&(v1$2=t2$1[1],t4$1=t0$5[2],Array.isArray(t4$1)&&(t5$1=t4$1.length,t5$1===2&&t4$1[0]==="variable"&&(v2$1=t4$1[1],equal(send(repl$0,v1$2),v2$1)||equal(send(repl$0,v2$1),v1$2))))))){return __lt____lt____colon__$0(["multi"],expr$2);}else{bridge$$20641$0=ph$1$0;if((x$2=bridge$$20641$0,x$2 instanceof Array&&x$2[0]==="variable")||(x$3=bridge$$20641$0,x$3 instanceof Array&&x$3[0]==="value")){return expr$2;}else{t0$5=ph$1$0;t1$3=t0$5.length;if(t1$3===3&&t0$5[0]==="scope"){vars$2=t0$5[1];body$2=t0$5[2];newvars$0=[];m$3=null;var _iteratorNormalCompletion4=true;var _didIteratorError4=false;var _iteratorError4=undefined;try{$4:for(var _iterator4=vars$2[Symbol.iterator](),_step4;!(_iteratorNormalCompletion4=(_step4=_iterator4.next()).done);_iteratorNormalCompletion4=true){m$3=_step4.value;var _var$0=void 0;var v$5=void 0;var t0$6=void 0;var t1$4=void 0;t0$6=m$3;_var$0=t0$6;if(Array.isArray(t0$6)&&(t1$4=t0$6.length,t1$4===2&&t0$6[0]==="variable")){v$5=t0$6[1];if(Object.hasOwnProperty.call(repl$0,v$5)){if(send(repl$0,v$5)!==false){newvars$0.push(__lt____lt____colon__$0(["variable",send(repl$0,v$5)],_var$0));}}else{newvars$0.push(_var$0);}}else{___match_error(m$3);}}}catch(err){_didIteratorError4=true;_iteratorError4=err;}finally{try{if(!_iteratorNormalCompletion4&&_iterator4.return){_iterator4.return();}}finally{if(_didIteratorError4){throw _iteratorError4;}}}return __lt____lt____colon__$0(["scope",newvars$0,replaceVars$0(body$2,repl$0)],expr$2);}else{if(t1$3>=3&&t1$3<=4&&t0$5[0]==="lambda"){vars$3=t0$5[1];body$3=t0$5[2];if(3>=t1$3){generator$1=null;}else{generator$1=t0$5[3];}return __lt____lt____colon__$0(["lambda",vars$3,replaceVars$0(body$3,repl$0),generator$1],expr$2);}else{if(t1$3>=1){x$4=t0$5[0];rest$0=Array.prototype.slice.call(t0$5,1);acc$1=[];temp$3=null;m$4=null;var _iteratorNormalCompletion5=true;var _didIteratorError5=false;var _iteratorError5=undefined;try{$5:for(var _iterator5=rest$0[Symbol.iterator](),_step5;!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=true){m$4=_step5.value;var elem$0=void 0;elem$0=m$4;temp$3=replaceVars$0(elem$0,repl$0);acc$1.push(temp$3);}}catch(err){_didIteratorError5=true;_iteratorError5=err;}finally{try{if(!_iteratorNormalCompletion5&&_iterator5.return){_iterator5.return();}}finally{if(_didIteratorError5){throw _iteratorError5;}}}newrest$0=acc$1;return __lt____lt____colon__$0([x$4].concat(newrest$0),expr$2);}else{other$1=ph$1$0;console.error(other$1);throw ErrorFactory(["replaceVars"]).create("Unknown: "+String(other$1));}}}}}}};eliminate_spurious_variables$0=function eliminate_spurious_variables(expr$3){var m$5=void 0;var stats$2=void 0;var repl$1=void 0;stats$2={};varstats$0(expr$3,stats$2);repl$1={};m$5=null;var _iteratorNormalCompletion6=true;var _didIteratorError6=false;var _iteratorError6=undefined;try{$6:for(var _iterator6=items(stats$2)[Symbol.iterator](),_step6;!(_iteratorNormalCompletion6=(_step6=_iterator6.next()).done);_iteratorNormalCompletion6=true){m$5=_step6.value;var t0$8=void 0;var t1$6=void 0;var $targ$3=void 0;var $targ$4=void 0;var $targ$5=void 0;var $targ$6=void 0;var $targ$2=void 0;var tr$0=void 0;var st2$0=void 0;var v$6=void 0;var st$0=void 0;var t0$7=void 0;var t1$5=void 0;t0$7=m$5;if(Array.isArray(t0$7)&&(t1$5=t0$7.length,t1$5===2)){v$6=t0$7[0];st$0=t0$7[1];if(equal(st$0.uses,1)&&equal(st$0.assigns,1)&&equal(st$0.transfers.length,1)&&st$0.replaceable){$targ$2=st$0.transfers;t0$8=$targ$2;if(Array.isArray(t0$8)&&(t1$6=t0$8.length,t1$6===1)){tr$0=t0$8[0];}else{___match_error($targ$2,"{tr}");}st2$0=s$0(stats$2,tr$0);if(equal(st2$0.assigns,1)&&st2$0.replaceable){$targ$3=tr$0;repl$1[v$6]=$targ$3;$targ$4=false;repl$1[tr$0]=$targ$4;$targ$5=false;st$0["replaceable"]=$targ$5;$targ$6=false;st2$0["replaceable"]=$targ$6;void 0;}}}else{___match_error(m$5);}}}catch(err){_didIteratorError6=true;_iteratorError6=err;}finally{try{if(!_iteratorNormalCompletion6&&_iterator6.return){_iterator6.return();}}finally{if(_didIteratorError6){throw _iteratorError6;}}}return replaceVars$0(expr$3,repl$1);};hoist$0=function hoist(expr$4){var t0$9=void 0;var t1$7=void 0;var $targ$7=void 0;var b$0=void 0;var inner$0=void 0;$targ$7=hoist_helper$0(expr$4);t0$9=$targ$7;if(Array.isArray(t0$9)&&(t1$7=t0$9.length,t1$7===2)){b$0=t0$9[0];inner$0=t0$9[1];}else{___match_error($targ$7,"{b, inner}");}[b$0,inner$0];return["scope",inner$0,b$0];};hoistable$0=["send","array","object","multi","if","assign","js_break","js_continue","js_return","js_delete","js_throw","js_try","js_new","js_yield"];not_hoistable$0=["void","js_while","js_for","js_for_in","js_for_of","js_label","js_class"];hoist_helper$0=function hoist_helper(temp$4$0){var t0$10=void 0;var x$5=void 0;var x$6=void 0;var bridge$$20900$0=void 0;var x$7=void 0;var t0$12=void 0;var t1$9=void 0;var $targ$8=void 0;var newbody$0=void 0;var inner$1=void 0;var t0$13=void 0;var t1$10=void 0;var $targ$9=void 0;var newbody$1=void 0;var inner$2=void 0;var newlambda$0=void 0;var m$6=void 0;var acc$2=void 0;var temp$5=void 0;var accum$0=void 0;var newargs$0=void 0;var m$7=void 0;var acc$3=void 0;var temp$6=void 0;var newargs$1=void 0;var other$3=void 0;var type$1=void 0;var args$1=void 0;var type$0=void 0;var args$0=void 0;var vars$5=void 0;var body$5=void 0;var generator$2=void 0;var vars$4=void 0;var body$4=void 0;var $$20906$0=void 0;var $$20907$0=void 0;var $$20908$0=void 0;var $$20909$0=void 0;var bridge$$20899$0=void 0;var t0$11=void 0;var t1$8=void 0;var expr$5=void 0;var ph$2$0=void 0;t0$10=temp$4$0;expr$5=t0$10;ph$2$0=t0$10;bridge$$20899$0=ph$2$0;if((bridge$$20900$0=bridge$$20899$0,(x$5=bridge$$20900$0,x$5 instanceof Array&&x$5[0]==="symbol")||(x$6=bridge$$20900$0,x$6 instanceof Array&&x$6[0]==="value"))||(x$7=bridge$$20899$0,x$7 instanceof Array&&x$7[0]==="variable")){return[expr$5,[]];}else{t0$11=ph$2$0;t1$8=t0$11.length;if(t1$8===3&&t0$11[0]==="scope"){vars$4=t0$11[1];body$4=t0$11[2];$targ$8=hoist_helper$0(body$4);t0$12=$targ$8;if(Array.isArray(t0$12)&&(t1$9=t0$12.length,t1$9===2)){newbody$0=t0$12[0];inner$1=t0$12[1];}else{___match_error($targ$8,"{newbody, inner}");}[newbody$0,inner$1];return[newbody$0,inner$1.concat(vars$4)];}else{if(t1$8===4&&t0$11[0]==="lambda"){vars$5=t0$11[1];body$5=t0$11[2];generator$2=t0$11[3];$targ$9=hoist_helper$0(body$5);t0$13=$targ$9;if(Array.isArray(t0$13)&&(t1$10=t0$13.length,t1$10===2)){newbody$1=t0$13[0];inner$2=t0$13[1];}else{___match_error($targ$9,"{newbody, inner}");}[newbody$1,inner$2];newlambda$0=__amp____colon__(["lambda",vars$5,__lt____lt____colon__$0(["scope",inner$2,newbody$1],body$5),generator$2],{"name":expr$5.name});return[__lt____lt____colon__$0(newlambda$0,expr$5),[]];}else{if(($$20907$0=Array.isArray(t0$11))&&(t1$8=t0$11.length,($$20909$0=t1$8>=1)&&(type$0=t0$11[0],args$0=Array.prototype.slice.call(t0$11,1),hoistable$0.indexOf(type$0)!==-1))){accum$0=[];acc$2=[];temp$5=null;m$6=null;var _iteratorNormalCompletion7=true;var _didIteratorError7=false;var _iteratorError7=undefined;try{$7:for(var _iterator7=args$0[Symbol.iterator](),_step7;!(_iteratorNormalCompletion7=(_step7=_iterator7.next()).done);_iteratorNormalCompletion7=true){m$6=_step7.value;var t0$14=void 0;var t1$11=void 0;var $targ$10=void 0;var b$1=void 0;var inner$3=void 0;var arg$0=void 0;arg$0=m$6;$targ$10=hoist_helper$0(arg$0);t0$14=$targ$10;if(Array.isArray(t0$14)&&(t1$11=t0$14.length,t1$11===2)){b$1=t0$14[0];inner$3=t0$14[1];}else{___match_error($targ$10,"{b, inner}");}[b$1,inner$3];accum$0=accum$0.concat(inner$3);temp$5=b$1;acc$2.push(temp$5);}}catch(err){_didIteratorError7=true;_iteratorError7=err;}finally{try{if(!_iteratorNormalCompletion7&&_iterator7.return){_iterator7.return();}}finally{if(_didIteratorError7){throw _iteratorError7;}}}newargs$0=acc$2;return[__lt____lt____colon__$0([type$0].concat(newargs$0),expr$5),accum$0];}else{if($$20909$0&&(type$1=t0$11[0],args$1=Array.prototype.slice.call(t0$11,1),not_hoistable$0.indexOf(type$1)!==-1)){acc$3=[];temp$6=null;m$7=null;var _iteratorNormalCompletion8=true;var _didIteratorError8=false;var _iteratorError8=undefined;try{$8:for(var _iterator8=args$1[Symbol.iterator](),_step8;!(_iteratorNormalCompletion8=(_step8=_iterator8.next()).done);_iteratorNormalCompletion8=true){m$7=_step8.value;var t0$15=void 0;var t1$12=void 0;var other$2=void 0;var t0$16=void 0;var m$8$0=void 0;var $targ$11=void 0;var b$2=void 0;var inner$4=void 0;var arg$1=void 0;arg$1=m$7;$targ$11=hoist_helper$0(arg$1);t0$15=$targ$11;if(Array.isArray(t0$15)&&(t1$12=t0$15.length,t1$12===2)){b$2=t0$15[0];inner$4=t0$15[1];}else{___match_error($targ$11,"{b, inner}");}[b$2,inner$4];m$8$0=inner$4;if(Array.isArray(m$8$0)&&(t0$16=m$8$0.length,t0$16===0)){temp$6=b$2;}else{other$2=m$8$0;temp$6=["scope",inner$4,b$2];}acc$3.push(temp$6);}}catch(err){_didIteratorError8=true;_iteratorError8=err;}finally{try{if(!_iteratorNormalCompletion8&&_iterator8.return){_iterator8.return();}}finally{if(_didIteratorError8){throw _iteratorError8;}}}newargs$1=acc$3;return[__lt____lt____colon__$0([type$1].concat(newargs$1),expr$5),[]];}else{other$3=ph$2$0;throw ErrorFactory(["syntax","illegal"]).create("Illegal node -- this should not happen.",{"node":other$3});}}}}}};$targ$12=hoist$0;exports["hoist"]=$targ$12;$targ$13=eliminate_spurious_variables$0;exports["eliminate_spurious_variables"]=$targ$13;void 0; //# sourceMappingURL=opt.js.map