aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-15 22:56:35 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-15 22:56:35 -0400
commit79e3fc3540eca37828e6f8d5ce22941fec25020d (patch)
tree0d0dffdd864be58e7df628ba2931815bcfa05fa2
parentaf95d94b3f13217b3ea933e8e5c033716021429b (diff)
Use multiple assignments instead of list assignment from the "stack"
-rw-r--r--docs/bqn.js32
1 files changed, 16 insertions, 16 deletions
diff --git a/docs/bqn.js b/docs/bqn.js
index 4ebf74d0..19b9478f 100644
--- a/docs/bqn.js
+++ b/docs/bqn.js
@@ -38,22 +38,22 @@ let genjs = (B, p) => { // Bytecode -> Javascript compiler
loop: while(true) { r+="\n";
if (p>B.length) err();
switch(B[p++]) {
- case 0: { r+= rP("O["+num()+"]"); break; }
- case 3: case 4: { let n=num(); rD-= n; r+= rP("list(["+(new Array(n).fill().map((_,i)=>rV(rD+i)).join(","))+"])"); break; }
- case 5: case 16: { let [ f,x]=[ rG(),rG()]; r+=rP("call("+f+","+x +")"); break; }
- case 6: case 17: { let [w,f,x]=[rG(),rG(),rG()]; r+=rP("call("+f+","+x+","+w+")"); break; }
- case 7: { let [f,m ]=[rG(),rG() ]; r+="if("+m+".m!==1)err();"+rP(m+"("+f +")"); break; }
- case 8: { let [f,m,g]=[rG(),rG(),rG()]; r+="if("+m+".m!==2)err();"+rP(m+"("+f+","+g+")"); break; }
- case 9: { let [ g,h]=[ rG(),rG()]; r+=rP("(( g,h)=>(x,w)=>call(g,call(h,x,w))"+ ")(" +g+","+h+")"); break; }
- case 10:case 19: { let [f,g,h]=[rG(),rG(),rG()]; r+=rP("((f,g,h)=>(x,w)=>call(g,call(h,x,w),has(f)?call(f,x,w):f))("+f+","+g+","+h+")"); break; }
- case 11: { let [i, v]=[rG(), rG()]; r+=rP("set(1,"+i+","+v +")"); break; }
- case 12: { let [i, v]=[rG(), rG()]; r+=rP("set(0,"+i+","+v +")"); break; }
- case 13: { let [i,f,x]=[rG(),rG(),rG()]; r+=rP("set(0,"+i+",call("+f+","+x+",get("+i+")))"); break; }
- case 14: { rD--; break; }
- case 15: { r+= rP("D["+num()+"](e)"); break; }
- case 21: { r+= rP(ge(num())+"["+num()+"]")+"if("+rV(rD-1)+"===null)err();"; break; }
- case 22: { r+= rP("{e:"+ge(num())+",p:"+num()+"}"); break; }
- case 25: { if(rD!==1)err(); r+= "return v0;"; break loop; }
+ case 0: { r+= rP("O["+num()+"]"); break; }
+ case 3: case 4: { let n=num(); rD-= n; r+=rP("list(["+(new Array(n).fill().map((_,i)=>rV(rD+i)).join(","))+"])"); break; }
+ case 5: case 16: { let f=rG(),x=rG(); r+=rP("call("+f+","+x +")"); break; }
+ case 6: case 17: { let w=rG(),f=rG(),x=rG(); r+=rP("call("+f+","+x+","+w+")"); break; }
+ case 7: { let f=rG(),m=rG(); r+="if("+m+".m!==1)err();"+rP(m+"("+f +")"); break; }
+ case 8: { let f=rG(),m=rG(),g=rG(); r+="if("+m+".m!==2)err();"+rP(m+"("+f+","+g+")"); break; }
+ case 9: { let g=rG(),h=rG(); r+=rP("(( g,h)=>(x,w)=>call(g,call(h,x,w))"+ ")(" +g+","+h+")"); break; }
+ case 10:case 19: { let f=rG(),g=rG(),h=rG(); r+=rP("((f,g,h)=>(x,w)=>call(g,call(h,x,w),has(f)?call(f,x,w):f))("+f+","+g+","+h+")"); break; }
+ case 11: { let i=rG(), v=rG(); r+=rP("set(1,"+i+","+v +")"); break; }
+ case 12: { let i=rG(), v=rG(); r+=rP("set(0,"+i+","+v +")"); break; }
+ case 13: { let i=rG(),f=rG(),x=rG(); r+=rP("set(0,"+i+",call("+f+","+x+",get("+i+")))"); break; }
+ case 14: { rD--; break; }
+ case 15: { r+= rP("D["+num()+"](e)"); break; }
+ case 21: { r+= rP(ge(num())+"["+num()+"]")+"if("+rV(rD-1)+"===null)err();"; break; }
+ case 22: { r+= rP("{e:"+ge(num())+",p:"+num()+"}"); break; }
+ case 25: { if(rD!==1)err(); r+= "return v0;"; break loop; }
}
}
return "let "+new Array(szM).fill().map((_,i)=>rV(i)).join(',')+";"+r;