Commit Graph

39 Commits

Author SHA1 Message Date
Nathan Braswell
d85f388792 Shorter AST names 2018-05-22 20:14:15 -04:00
Nathan Braswell
eefa752d55 shortening of str and vec 2018-05-22 19:43:54 -04:00
Nathan Braswell
3a7f73b711 sigh 2017-01-23 01:09:31 -05:00
Nathan Braswell
e2639989c9 ref_lower now generates C, though a ton of syntax errors 2017-01-20 01:11:06 -05:00
Nathan Braswell
fb63eee9e8 Commit pre enabling CTCE pass (which is quite slow, but does work). Had to add walking through cast nodes for finding variables to close over. Also had to remove the static in front of functions to prevent gcc compiling it so that it segfaults (doesn't segfault if compiled with clang, but wanted to make sure.) 2016-07-09 15:08:57 -07:00
Nathan Braswell
ddd250e7f3 Fixed baking the right integer types into values from #ctce, added the rest of the integer type literals (10ul, etc), fixed/added struct padding/alignment in interpreter 2016-07-09 00:45:40 -07:00
Nathan Braswell
f71b5f3576 Init globals before lowering CTCE, allows CTCE to use imported functions, etc. 2016-07-06 00:16:39 -07:00
Nathan Braswell
0f2ac1421a Basic CTCE working! In between commit because #link(a) syntax changed to #link(a) 2016-07-03 22:50:42 -07:00
Nathan Braswell
6fee942756 Refactored interpreter into just functions, added a REPL to the main kraken. 2016-07-03 15:32:45 -07:00
Nathan Braswell
87c2b1d2c1 Interpreter up to 71/73 tests passing, the only ones that don't yet are the future ones. Struct size is still wrong though 2016-07-03 01:55:32 -07:00
Nathan Braswell
2e80682f01 small double fix for interpreter 2016-07-01 09:37:14 -07:00
Nathan Braswell
9291003af7 Fixed interpreter not returning ref correctly, 65/73 tests passing 2016-06-30 22:41:32 -07:00
Nathan Braswell
b4d0d20883 Fix returning functions 2016-07-01 00:08:41 -04:00
Nathan Braswell
4bf8572d21 Move functions to use a pointer to a map for closures instead of a raw map, as we cannot currently ensure that the object is made with the right size (type_size doesn't do padding, etc) 2016-06-30 17:06:34 -04:00
Nathan Braswell
76e78a2ac0 transfer work on interpreted closures 2016-06-30 09:57:41 -07:00
Nathan Braswell
4195da6492 Added union and ref = ptr workaround to interpreter (fixing adt matching), allowing test_union and test_adt to pass. 2016-06-28 01:35:54 -07:00
Nathan Braswell
284d8ac9c7 Fixed up interpreter, ADT is close to working but something's weird about what match statements are translated into 2016-06-27 01:21:24 -07:00
Nathan Braswell
26e7ee249a Now using adt_lower, which also makes the backing deconstruct a reference, which makes sense 2016-06-20 01:52:28 -07:00
Nathan Braswell
27fea0e90c work on multithread, interpreter, and prototyped a #line-in-simple-passthrough ast changing pass turned on with -g 2016-06-14 02:14:25 -07:00
Nathan Braswell
008cc01c70 Lambdas and function values starting to work - using the parameters or return value crashes 2016-06-01 23:28:32 -07:00
Nathan Braswell
8cbd2f667f Swap over to using a map from *ast_node to value for variables instead of string to value 2016-05-31 22:02:00 -07:00
Nathan Braswell
cf8656a538 Some fixes and added in globals 2016-05-31 21:29:05 -07:00
Nathan Braswell
593877eb84 Fixed returning out of loops/if as well as math and triple quoted strings 2016-05-29 23:54:54 -07:00
Nathan Braswell
ce2eff42a6 Moved over compiler information printing and error to use stderr, enabled interpreter testing in tester. The interpreter passes 34/74 tests 2016-05-22 14:10:19 -07:00
Nathan Braswell
a64e79c789 Bugfix - properly use old enclosing_object to interpret parameters to method, use new_enclosing_object for interpreting the actual function itself 2016-05-22 12:17:17 -07:00
Nathan Braswell
c239f8acb1 Added ref in and out 2016-05-22 02:55:45 -07:00
Nathan Braswell
b63d85c587 Parameters copy constructed into functions and the return value copy constructed out are now both destructed, some bug fixes. Oddly, string += thing works, but string + thing does not. Maybe it has to do with ref, I'm unsure 2016-05-22 00:40:48 -07:00
Nathan Braswell
4ff7137c81 Added copy_constructing retun values out and destructing them later, though for now the destruct is added to the defer stack and so doesn't happen until the end of the scope. 2016-05-21 14:38:57 -07:00
Nathan Braswell
828f36daab Adding in proper copy_construct into function calls and destruct afterwards. Doesn't correctly destruct return values yet. 2016-05-21 11:20:29 -07:00
Nathan Braswell
ce1afa45f4 Added a lot to the interpreter, but some odd problem where snprintf seems to print the wrong thing something like a 10th of the time. Debugged it for a while over two days, and I've narrowed it down to the actual snprintf call. It seems to happen under some different circumstances for compiled versions too, so I'm just going to keep it like this for now. 2016-05-18 23:11:00 -07:00
Nathan Braswell
4dcd4f9715 Added basic in single method access of member variables 2016-05-15 22:05:12 -07:00
Nathan Braswell
2dd381f7ea Implmented structs in the kraken interpreter! (nothing object-y implemented yet) 2016-05-15 18:36:13 -07:00
Nathan Braswell
029d44ac81 Add fflush and some bugfix to extern calling - io can be used now for primitives 2016-05-15 11:47:02 -07:00
Nathan Braswell
967ae3d68e Added malloc/free with extern as well as all the other primitives and added pointer arithmatic and [] 2016-05-15 11:09:12 -07:00
Nathan Braswell
bdb98ed85c Added pointers to interpreter 2016-05-13 18:34:06 -04:00
Nathan Braswell
7d751221c9 Added if statements, while loops, and for loops to interpreter 2016-05-13 16:31:55 -04:00
Nathan Braswell
5183a02c64 Implemented variables as well as ++, -- 2016-05-13 15:14:19 -04:00
Nathan Braswell
e63b7cf770 Enough interpreter to do math on constant integers 2016-05-13 03:10:36 -04:00
Nathan Braswell
947384cced Started work on interpreter, commit to fix issues it will depend on 2016-05-12 02:03:20 -04:00