Commit Graph
100 Commits
Author SHA1 Message Date
Nathan Braswell 36d7581cb0 further simplify the function call function 2017-08-22 20:52:27 -04:00
Nathan Braswell 4921371afe Cleaned up generate_function_call. It's quite understandable now! 2017-08-18 10:05:12 -04:00
Nathan Braswell 61feff50a8 Update captain.sh to be able to build the new function_value_lower version 2017-08-16 01:23:17 -04:00
Nathan Braswell 9621ce85a6 Always error, remove some chaff 2017-08-15 19:53:17 -04:00
Nathan Braswell 0cf9beb057 Function value lower can self-host! 2017-08-15 01:55:44 -04:00
Nathan Braswell bdb9e313b5 push forward. Current problem is double closed things 2017-06-21 02:12:00 -04:00
Nathan Braswell 18c53eb9be MOve it forwards a bit 2017-06-13 01:29:56 -04:00
Nathan Braswell 6f659ece49 Fix closing over raw function pointers 2017-06-13 00:40:29 -04:00
Nathan Braswell bd83156c12 work in progress 2017-06-12 23:52:12 -04:00
Nathan Braswell 8166db37ac Closures working! (in the basic case, anyway) 2017-06-06 01:33:18 -04:00
Nathan Braswell 7a2a76e6da wip 2017-05-16 11:12:05 -04:00
Nathan Braswell bfe65fd854 Now support parameters for lambdas 2017-05-15 21:25:40 -04:00
Nathan Braswell 265a994858 Can call non-closure no parameter lambdas 2017-04-17 21:15:14 -04:00
Nathan Braswell 524247d0d1 Work on creating the call function 2017-04-13 01:05:36 -04:00
Nathan Braswell a0c040da36 more lowering 2017-04-08 16:10:57 -04:00
Nathan Braswell 9662197c21 comment out the as value part 2017-03-16 19:05:45 -04:00
Nathan Braswell 8a676a1b5b More work. Doesn't compile at this point 2017-02-23 01:24:22 -05:00
Nathan Braswell cb8124afc0 baby steps 2017-02-17 01:22:27 -05:00
Nathan Braswell 425d75675e babier steps 2017-02-08 00:01:29 +00:00
Nathan Braswell 3fc0ea9bec baby steps 2017-02-04 01:29:22 -05:00
Nathan Braswell 1b0dce9ed1 Work on function value lower 2017-02-02 00:46:36 -05:00
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 caba8b310f Small speed improvement int trim by using stack (and DFS) instead of queue (and BFS) for remove and collapse, finally fix the unknown escape '\*' error 2017-01-25 01:47:05 -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 ebb34d5ba3 Replace visited list for pass_common with hash_set (which isn't complete, but has the basics) for a massive speedup (6xish) 2017-01-22 10:13:06 -05:00
Nathan Braswell 896e8a936c Merge branch 'ref_lower' 2017-01-21 22:50:59 -05:00
Nathan Braswell d9814a278a It does work! Commented out ctce_pass test because it chokes on the new iteration styrategery 2017-01-21 22:50:29 -05:00
Nathan Braswell 5a6f498043 Working! 2017-01-21 22:01:47 -05:00
Nathan Braswell 21f957195a Fix dreferencing function_call refs. Now need to make sure new pass method works with defer_lower, which currently does very crazy defer double stack chains 2017-01-20 01:31:28 -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 2a53d5539d Modify captain.sh to use /usr/bin/env bash 2016-11-23 23:57:01 +00:00
Nathan Braswell b0d2a6918d Regex rewrite for big speed gain, some extras (--no-c-compile), -O2 is default now 2016-08-02 01:33:16 -07:00
Nathan Braswell 523526f40e Improve arg parsing a bit, including parsing arbitrary flags for later use. Got (after a bunch of linker pain solved by just linking in LLVM-3.8 plain and not messing with llvm-config at all) a LLVM example working 2016-07-09 23:52:32 -07:00
Nathan Braswell c633cb5b04 CTCE Pass first implementation, but it's very slow. 2016-07-09 15:33:15 -07: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 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 a5deef8c30 Transitioned to using CTCE for Kraken compile information 2016-07-06 00:22:33 -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 cd21e7a1cc Add in simple CTCE test 2016-07-03 23:07:34 -07:00
Nathan Braswell 067c72f77c Finish transition to the new #link syntax 2016-07-03 22:53:05 -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 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 9de3e07715 forgot to add a dependency in captain.sh 2016-06-24 01:45:10 -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 59f5c6f667 found segfault member 2016-06-17 01:01:59 -04: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 1318e71efd Figured out why future crashed, added in simple threading library. Future isn't fixed yet, but could be with a similar approach 2016-06-11 11:27:48 -07:00
Nathan Braswell 2c8c3af48a Some speed improvements 2016-06-11 00:45:18 -07:00
Nathan Braswell 59969e7114 Add passthrough optimization levels 2016-06-07 23:14:52 -07:00
Nathan Braswell 889d93e16d GSS in parser now deletes old stack nodes on clear for some ram savings 2016-06-07 21:26:02 -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 26b5070242 Whoops, had to add a hotfix to captain.sh. The ext var commit needed it's own grammer 2016-05-22 15:09:45 -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 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 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 cf8090f825 Moved c stdlib variadic functions over to use ... 2016-05-19 23:34:29 -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 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 3fe72bc8e2 Merge branch 'master' of github.com:Limvot/kraken 2016-05-13 00:01:17 -04:00
Nathan Braswell 91bc03ccb8 Fixed off by one error in captain.sh bootstrapping 2016-05-12 23:59:13 -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 88f922f67b Added caching to captain.sh 2016-05-10 14:05:12 -04:00
Nathan Braswell 133bf29cdf Added straight-string optimization to regex, converted a bit more of the grammer 2016-05-10 01:23:37 -04:00