Commit Graph

119 Commits

Author SHA1 Message Date
Nathan Braswell
754ff41226 C_generator can call raw function pointers now 2017-01-28 00:09:13 -05:00
Nathan Braswell
dad0f780bb Groundwork for closure lowering, run raw function pointer type 2017-01-26 23:58:48 -05:00
Nathan Braswell
987e6eb9a5 Cleaning up to bring into main. Speed problem seems to have dissapeard, but we have fixes and the ^ operator in here 2017-01-24 22:11:33 -05:00
Nathan Braswell
f0a657e80f Fix invalid malloc on slice 2017-01-23 23:00:26 -05:00
Nathan Braswell
3a7f73b711 sigh 2017-01-23 01:09:31 -05:00
Nathan Braswell
beb50b8e25 3 sec laptop speed improvement in hash_map 2017-01-22 16:36:04 -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
dc5fe39083 Added static to non extern non main functions in c_generator giving a 12 second compilation speedup - added a nodes touched pass, commented out in main, and fixed the test_extern test to use the right printf arguments. 2016-07-06 22:46:57 -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
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
15fe2aeba4 Moved copy_constructing into functions and destructing the results into obj_lower. Removed all defer_stack from c_generator. The last thing should be to move ref handling into obj_lower or maybe a pass after, then the rest of c_generator can be cleaned up and fixing interpreter (except for closures) should be easy. 2016-06-26 04:44:54 -07:00
Nathan Braswell
4cc0d26c4c Now && and || short circuiting is done in obj_lower 2016-06-25 23:56:07 -07:00
Nathan Braswell
dd8fbc0489 moved munging while and for into obj_lower 2016-06-25 16:02:53 -07:00
Nathan Braswell
e3607beabe Refactor parameter destruction into obj_lower 2016-06-24 01:42:48 -07:00
Nathan Braswell
29eff2a23e Fix defer_lower to handle return statements, starting on obj_lower which has now taken over calling destruct for declared varaibles. Some of the code from the c_generator has been commented out or bypassed to use the new system - it should be removed when it's complete. 2016-06-22 01:41:57 -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
4a33a94b15 Fixed, working unions. Had to move the is_union member to the end. I'm not sure if this is a C bug or an effect of me doing something weird somewhere 2016-06-16 23:06:38 -07:00
Nathan Braswell
3f89cb1e37 partial rollback, might still not work 2016-06-16 09:53:15 -07:00
Nathan Braswell
4de7dd1210 Added support for unions as a step towards lowering ADTs in the next pass to be written. 2016-06-15 22:26:03 -07:00
Nathan Braswell
d44293a48b Defer is now lowered in its own pass as a first step towards refactoring other things into their own passes as well 2016-06-15 01:36:59 -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
2c8c3af48a Some speed improvements 2016-06-11 00:45:18 -07:00
Nathan Braswell
12dfa837e3 Added in extern global variables and printing of *char and string to stderr with printlnerr, printerr. Note that this will still compile in a previous version, but instead of extern, stderr will be newly declared. This is ok, because this version of the compiler never uses it, so we'll only use it after this one is bootstrapped in. 2016-05-22 13:08:10 -07:00
Nathan Braswell
cfcaff7887 Add support for variadic extern functions, as it turns out that you can't just specialize them with declarations. I.e., int a_func(int, ...) is different from int a_func(int, int) even if you only ever call a_func(1,2), etc. This commit is in preperation for moving to correcty variadic extern functions for the c stdlib (like printf, snprintf) 2016-05-19 23:17:32 -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
bdb98ed85c Added pointers to interpreter 2016-05-13 18:34:06 -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
Nathan Braswell
02c77899b8 Add #link(lib) intrinsic, used in SquidPong 2016-04-30 16:52:56 -04:00
Nathan Braswell
7aa1d9983b Some bugfixes/added errors, convert most to not use simple_passthrough 2016-04-30 15:38:28 -04:00
Nathan Braswell
d126cbf24b Added short/long and unsigned types for all int based types 2016-04-29 16:19:23 -04:00
Nathan Braswell
ecbbcb4eda C extern implemented 2016-04-29 01:14:26 -04:00
Nathan Braswell
2051f54b55 Added in sizeof intrinsic + piping for more in the future. Inbetween commit before removing sizeof function 2016-04-28 18:47:53 -04:00
Nathan Braswell
8d0996fb47 Added in bitwise operators 2016-04-19 18:39:01 -04:00
Nathan Braswell
04d2af4168 Bugfixes, remove the cast_ptr function 2016-04-19 06:04:22 -04:00
Nathan Braswell
cf46fb13af Add casting as a language feature. Have not removed the function yet as we need an inbetween version for the bootstrap 2016-04-18 22:56:29 -04:00
Nathan Braswell
730e1a58ed Fix so defer defer / defer {} works. Note - defer defer almost definitly doesn't work the way you think it will 2016-04-13 21:45:21 -04:00
Nathan Braswell
09158cd2b9 Fix vector out of bounds access for parser, ast_transformation, and c_generator, remove many printlns in prep for better error handling, add features to captian.sh to facillitate development 2016-03-30 16:13:10 -04:00
Nathan Braswell
40c3e428c1 move test_compiler up to main kraken.krak and fix linker string, make paths work correctly 2016-03-28 17:12:53 -04:00
Nathan Braswell
756f2e71de SELF HOSTING 2016-03-26 05:29:20 -04:00
Nathan Braswell
1cc8fd294e Cephelapod-compiled Kalypso will compile Kalypso, but the result segfaults 2016-03-26 04:39:26 -04:00
Nathan Braswell
7d749e7ca5 running test_compiler on it self will complete now, though the resulting C has many errors 2016-03-26 00:43:01 -04:00
Nathan Braswell
b650a9af03 some bugfixes, getting closer 2016-03-24 21:32:28 -04:00
Nathan Braswell
2344ba917b Hopefully finished ADTs, still a bug preventing self-hosting 2016-03-20 05:14:26 -04:00
Nathan Braswell
884d71f007 mostly working ADT, I hope. Misses some destructs 2016-03-20 00:29:27 -04:00
Nathan Braswell
d864a58bb4 Saving a lot of work on ADTs. Finishing should mostly just be filling in the different operator functions in the c_generator 2016-03-19 21:45:07 -04:00
Nathan Braswell
6a1c210b8a 66 tests passing! Implemented the extra need_variable parameter to allow references of constants, etc. Need to check a few of the tests still failing. 2016-03-12 03:23:43 -05:00