Commit Graph

75 Commits

Author SHA1 Message Date
Nathan Braswell
c4c2d73469 Compilation and pretty-printing of environments. Still need to look at exactly why the additive length constant for the upper-env is 5 when I'm less tired 2021-12-14 00:50:48 -05:00
Nathan Braswell
3538de9498 Add in compiling and printing of array values 2021-12-12 15:32:52 -05:00
Nathan Braswell
f865bccdda Add support for negative integers 2021-12-08 22:35:44 -05:00
Nathan Braswell
b724493926 Add support for (positive) integer printing, not just a single digit! 2021-12-08 01:22:18 -05:00
Nathan Braswell
7dfe4e0d7c Add symbol emitting, rearrange encoding to make things nicer, implement more sophisticated to string setup with length etc 2021-12-06 01:58:38 -05:00
Nathan Braswell
b3dfd577cd String constants working, which involved more work than expected. Lots of fixes for strings, LEB128, etc, and making the top level section func return arrays so that I can programatically generate a concatted array of them and insert it no problem. Technically, you can now compile Hello, World! for Kraken, since it prints the string constant you compile :D 2021-12-04 01:11:55 -05:00
Nathan Braswell
025239947f Add i32 and i64 condition operations, hex escapes to data strings, and add ability to print out true and false to generated code 2021-12-02 00:24:40 -05:00
Nathan Braswell
25615815b2 bugfixes func type splitter, add more ins, trivial malloc and free, start working on print. 2021-11-29 01:51:54 -05:00
Nathan Braswell
f7f425b32f Ultra tiny skeleton starting compiler - will read, trivially partially evaluate, then near trivally generate wasm that prints a single digit literal 2021-11-28 01:25:46 -05:00
Nathan Braswell
505dc46998 Add an extra level of lambda and pass around name dict in order to get around not having vau (+ quotation on symbols when referenced) 2021-11-28 00:57:35 -05:00
Nathan Braswell
de8073d1fc Actually make the demo runnable 2021-11-27 22:13:07 -05:00
Nathan Braswell
4956596f30 Port (slightly hackilly) the rest of wasm.kp 2021-11-27 21:49:41 -05:00
Nathan Braswell
65c9d0b486 Port basic (non vau syntax coolness) WASM emiting code, can output empty file at least (haven't tested more complex yet, but the code is there) 2021-11-26 23:28:06 -05:00
Nathan Braswell
e0244d0489 Hay recursion works! 2021-11-26 12:31:39 -05:00
Nathan Braswell
8ab15fff41 Add hashing (interestingly, arbitrary long hashes with Scheme's infinite precision) 2021-11-25 23:57:23 -05:00
Nathan Braswell
a036936e3b It all works! I belive all test cases from the prior partial_eval.kp work in partial_eval.csc now :D 2021-11-24 00:45:44 -05:00
Nathan Braswell
f3525def87 Fix, some more tests. Need to figure out the prim comb things 2021-11-23 22:49:54 -05:00
Nathan Braswell
60cd7b1ffa First Vau call working! 2021-11-23 22:16:24 -05:00
Nathan Braswell
96ea2fad8d Port over most of the rest, some left commented out. Need to figure out how we actually want to handle prim_combs putting themselves in the output. This comes up a lot with give_up_eval_params. Also, '() = nil counts as true for if in Scheme, need to figure that out :/ 2021-11-23 01:54:20 -05:00
Nathan Braswell
7c32c3811a Fix indexing bug, first partial eval! 2021-11-22 01:46:59 -05:00
Nathan Braswell
d26fcee9b6 Port more, start fixing bugs. Something weird with slice/drop/take 2021-11-22 01:28:05 -05:00
Nathan Braswell
b3261f3db0 Bunch more ported, including all of the actual partial_eval function 2021-11-20 01:13:22 -05:00
Nathan Braswell
551e60cfe1 Destructuring lambda, fix for compiling 2021-11-19 01:08:27 -05:00
Nathan Braswell
d4ff61ade5 Some work from previously, and also now an implementation of destructuring let 2021-11-16 00:15:53 -05:00
Nathan Braswell
627ccb4aa0 Begin port of partial_eval to Chicken Scheme, with a bunch of stuff to define a vaguely kraken-like environment in scheme 2021-11-09 00:35:58 -05:00