UNPKG

forthtranspiler

Version:
86 lines (85 loc) 3.96 kB
<!-- saved from url=(0045)file:///C:/ksana2015/forthtranspiler/test.htm --> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="test.css"> <script src="bundle.js"></script> <script src="jefvm.v3.js"></script> <script src="jefvm.v3_ext.js"></script> <script> function init(){ msgJs.innerText=''; var f2js =Transpile.transpile; window.transpile=function(forthCode){ var jsCode =f2js(forthCode); var result =eval(jsCode); console.log('trans -->',result.out); return result; } window.trace=Transpile.trace; } function clicked(){ btnRunJs.style.color='black'; var old=msgJs.style.color; eval(tool.value); msgJs.innerText="after clicking button, to wait until done needs several minutes" msgJs.style.color='red'; setTimeout(function(){ jef(test1.value,1); jef(test2.value,2); trans(test3.value,3); trans(test4.value,4); js1(test5.value,5); js2(test6.value,6); msgJs.style.color=old, btnRunJs.style.color='red' },0); } </script> </head><body onload="init()"> <textarea id="tool">window.jef=function(leftCode,i){ var t0=new Date().getTime(); vm.exec(leftCode.replace(/\\n/g,'\n')); var t=new Date().getTime()-t0; msgJs.innerText+='\nrun code '+i+' "'+leftCode+'" by jef needs '+t+' ms'; } window.trans=function(leftCode,i){ var t0=new Date().getTime(); transpile(leftCode.replace(/\\n/g,'\n')); var t=new Date().getTime()-t0; msgJs.innerText+='\nrun code '+i+' "'+leftCode+'" by trans needs '+t+' ms'; } window.js1=function(leftCode,i){ var t0=new Date().getTime(); eval(leftCode.replace(/\\n/g,'\n')); var t=new Date().getTime()-t0; msgJs.innerText+='\nrun code '+i+' "'+leftCode+'" by js1 needs '+t+' ms'; } window.js2=function(leftCode,i){ var t0=new Date().getTime(), js; eval('js=function(){'+leftCode.replace(/\\n/g,'\n')+'}'), js(); var t=new Date().getTime()-t0; msgJs.innerText+='\nrun code '+i+' "'+leftCode+'" by js2 needs '+t+' ms'; }</textarea><br> <script> var click1=function(){ eval(tool.value); jef(test1.value,1); } var click2=function(){ eval(tool.value); jef(test2.value,2); } var click3=function(){ eval(tool.value); trans(test3.value,3); } var click4=function(){ eval(tool.value); trans(test4.value,4); } var click5=function(){ eval(tool.value); js1(test5.value,5); } var click6=function(){ eval(tool.value); js2(test6.value,6); } </script> <button id="btnRunJs" onclick="clicked()" style="color:red">click to test the following 6 codes (needs several minutes)</button><br> <span>1.</span><textarea id="test1"> 0 4000000 for 1 + next .</textarea><button onclick="click1()">run code 1 by jef</button><br> <span>2.</span><textarea id="test2">: x 4000000 for 1 + next . ; 0 x</textarea><button onclick="click2()">run code 2 by jef</button><br> <span>3.</span><textarea id="test3">: x 0 9 begin ?dup while swap over + swap 1- repeat . ; x</textarea><button onclick="click3()">run code 3 by trans</button><br> <span>4.</span><textarea id="test4">: x 4000000 for 1 + next . ; 0 x</textarea><button onclick="click4()">run code 4 by trans</button><br> <span>5.</span><textarea id="test5">var _i=4000000,_n=0;while(_i-->=0){_n=_n+1};console.log(_n)</textarea><button onclick="click5()">run code 5 by js1</button><br> <span>6.</span><textarea id="test6">var _i=4000000,_n=0;while(_i-->=0){_n=_n+1};console.log(_n)</textarea><button onclick="click6()">run code 6 by js2</button> <pre id="msgJs">after clicking button, to wait until done needs several minutes run code 1 " 0 4000000 for 1 + next ." by jef needs 8234 ms run code 2 ": x 4000000 for 1 + next . ; 0 x" 2 by jef needs 4290 ms run code 3 " 0 4000000 for 1+ next ." by trans needs 42 ms run code 4 ": x 4000000 for 1+ next . ; 0 x" by trans needs 43 ms run code 5 "var _i=4000000,_n=0;while(_i-->=0){_n=_n+1};console.log(_n)" by js1 needs 2088 ms run code 6 "var _i=4000000,_n=0;while(_i-->=0){_n=_n+1};console.log(_n)" by js2 needs 13 ms</pre> </body></html>