Snap
Snap copied to clipboard
Snap Compiler
Paper to be linked on implementation
Work so far for a compiled Snap to JavaScript
Advised by Brian Harvey
i was working on a prototype for Snap JIT... try it out! it uses a more assembly like approach.
it produces code that looks like this:
async function anonymous(...a
) {
// head
let r = new Array(3)
let v = new Array(0)
let o = new Array(4)
let p = a.pop()
let bop = op=>p[op].bind(p)
o[0] = bop("getVarNamed")
o[1] = bop("reportPower")
o[2] = bop("reportJoinWords")
o[3] = bop("reportAnd")
// body
// reportAnd {
// reportPower {
r[0] = await o[0](\"a\")
r[0] = await o[1](r[0],2)
// }
// reportPower {
// reportJoinWords {
r[1] = await o[2](WIP_multi_arg) //multi arg is work in progress
// }
// reportJoinWords {
r[2] = await o[2](WIP_multi_arg)
// }
r[1] = await o[1](r[1],r[2])
// }
r[0] = await o[3](r[0],r[1])
// }
return r[0];
}
edit: cleaned up from string conversion
Link to Project Report paper on implementation: https://www2.eecs.berkeley.edu/Pubs/TechRpts/2022/EECS-2022-157.html