2baad06e8cAdd string literals and symbols, print support for both as well as lists and vectors
Nathan Braswell
2020-04-22 21:10:46 -04:00
19ae75b819Fix the quoting compile
Nathan Braswell
2020-04-20 01:22:45 -04:00
d726705845Add creation and indexing of lists and vectors, with their literal forms. Compiling quote has a bug though, and passes through - will have to consider how to fix
Nathan Braswell
2020-04-20 01:16:34 -04:00
f70cc8030efix comment handling (including at beginning of files)
Nathan Braswell
2020-03-31 15:46:03 -04:00
ed33f967ceMake adding grammer rules way more ergonomic from k_prime, implmeent reader macros with it now! Note I changed splice-unqote from ~@ to , as ~@ is legal as unquote deref and causes ambigious parses
Nathan Braswell
2020-03-31 15:15:45 -04:00
494e22007dFix hardcoded reader macros, add eval-read-string, fix niceness of whitespace between forms in repl and files. Next should be to redo the parser api to be way nicer from within kraken'
Nathan Braswell
2020-03-30 19:51:01 -04:00
2d6c1880ffMaL implementation in Kraken
Nathan Braswell
2020-03-10 12:57:28 -04:00
2bc9ce497bFINALLY FIXED THE PROBLEM - was using set instead of set_single, so it set it's child as well, causing the type loop. Also, the binding replace child evaluated the parameters first, changing t's parent before t->parent->replace_child happened
Nathan Braswell
2019-07-13 18:01:04 -04:00
148d70e2d4Man, I was just missing initting to null and it would have run
Nathan Braswell
2019-01-06 22:04:56 -05:00
c2495a04f8binding epochs compile, but segfault. too late tonight to keep going
Nathan Braswell
2019-01-06 01:06:15 -05:00
ed57d2b2a9Added sizeof and fixed inferencing from explicitly instantiated template functions so that new and delete work! (though not traits yet...)
Nathan Braswell
2018-12-29 16:35:47 -05:00
235775c077Basic veriadic, ext, and declaration only support, allowing us to use printf! Unifying with veriadic might need work (does it need ref treatment?)
Nathan Braswell
2018-12-29 14:50:58 -05:00
4ec59690cfString value support
Nathan Braswell
2018-12-29 13:32:32 -05:00
eccc4c87a6Finally, ref lowering! A little hacky, but not terrible...
Nathan Braswell
2018-12-29 12:19:54 -05:00
b356b793aaGroundwork for ref_lower pass
Nathan Braswell
2018-12-28 01:14:54 -05:00
deda17e18bgroundwork for refs, moved ref indicator into fun type
Nathan Braswell
2018-12-27 15:14:28 -05:00
2cf4a2f664emit structs with poset to fix C ordering. Structs might fully work now! Still need to do testing around templated versions and pointers
Nathan Braswell
2018-12-27 00:59:26 -05:00
ca082c29bdAdd in a top_level_type_resolve pass so that we properly have all the identifiers in our top level types resolved by the time we get to the meater resolve type passes, which may have to use them for scoping (with access op, etc)
Nathan Braswell
2018-12-26 20:34:06 -05:00
5eb9c08fd0Fix naming problem by realizing that we should allow variable shadowing anyway (anything that's not a function, that is) and we know what is and isn't a function based on the type of the binding from our type unification, so we just check to see if we're not a function type, and if so, just take our first result
Nathan Braswell
2018-12-19 17:32:41 -05:00
66f82062baAlmost have scoped . working, in fact it is, but having objects with member names has problems (like o.o) if the member function is in scope. (it thinks maybe you're trying to call o on itself...)
Nathan Braswell
2018-12-18 02:51:44 -05:00
eadadd5576Combine resolve_possiblities and name_type_resolve in prep for scopes depending on types
Nathan Braswell
2018-12-13 01:04:16 -05:00
862132ba88fix indentation for one case
Nathan Braswell
2018-12-13 00:21:30 -05:00
92e2844616Add in normal method style
Nathan Braswell
2018-12-12 23:56:14 -05:00
0153054a4cwork on k
Nathan Braswell
2018-12-05 23:43:24 -05:00
caafc6f4e4Allow <= and >= as overloadable operators and add in a string <= function (though some refactoring to do <, >, and => would be good) and a sorted to vec
Nathan Braswell
2018-12-06 04:39:40 +00:00
d2011640f7templated structs starting to work, if grammer freeup
Nathan Braswell
2018-11-04 19:03:55 -05:00
8177bc7fd0Add struct access! Uses new translation_unit_generative pass depended on by scope lookups to generate compiler_intrinsics that access members of structs'
Nathan Braswell
2018-10-27 18:00:26 -04:00
db3004329dStarting support for structs - can declare them and variables of them. Not actually access any members, or template them...
Nathan Braswell
2018-10-25 01:17:09 -04:00
0ae2fbaae6Prep for templated functions
Nathan Braswell
2018-10-02 23:51:26 -04:00
3d8be84472Break and continue weren't all the way implemented
Nathan Braswell
2018-10-02 00:07:02 -04:00
7993d1d980Basic looping (for and while)
Nathan Braswell
2018-10-02 00:02:14 -04:00
ae2f40bcc7Treat assignment like other operators
Nathan Braswell
2018-10-01 23:32:46 -04:00
fb179cfcf7Added primitive math ops, and realized when chaining them that overload resolution had to happen for different functions at different times (esp now that we don't just go outside in). Added a iterative resolver to solve the overloads, which iterates over each one and binds the one that only has one option and unifing types based on that, then running through them all again. If progress is not made for a whole iteration, it errors out and shows the first ambigious call. It could show all ambigious calls...
Nathan Braswell
2018-10-01 01:19:51 -04:00
dea34f0821Add in all primitive comparators. Gonna add other primitive ops next - pointers are gonna be interesting and will probs have to wait till generic functions (to make them generic operators)
Nathan Braswell
2018-09-30 16:21:24 -04:00
4d5e65e962Groundwork for primitive operations, including > for ints
Nathan Braswell
2018-09-30 16:06:07 -04:00
9f26472b97Clean up error messages
Nathan Braswell
2018-09-24 00:26:06 -04:00
4dcf102cb0Also regular overloading works now, by counting remaining unknowns as equal during overload filtering time (so that function calls as statements, which get an inferenced return type of _unknown can match a function with any return type
Nathan Braswell
2018-09-24 00:21:39 -04:00
2148577523HM-style return type overloaded function infrencing works!
Nathan Braswell
2018-09-24 00:08:07 -04:00
9178c2a29dMore unification for typechecking:
Nathan Braswell
2018-09-22 20:10:56 -04:00
6c7f313075Very limited HM-style type inference works! (Just var v = value, but still. The machinery is mostly in place)
Nathan Braswell
2018-09-22 16:41:36 -04:00
0505a0e7d6Move types into binding also
Nathan Braswell
2018-09-22 14:54:52 -04:00
38133b8bc3Pull binding out into it's own templated object so we can use it for types for unification
Nathan Braswell
2018-09-22 10:44:02 -04:00
08b5e29b70Fix poset to handle circular closed dependencies (they're propegated recursively to open dependencies) and some indentation fixes
Nathan Braswell
2018-09-19 00:43:49 -04:00
3e3564ea54Add basic if statement
Nathan Braswell
2018-09-18 09:04:05 -04:00
2d9f5dc6feAdd in support for top-level-declarations in k and erroring out if no progress is made in poset. A bug I encountered during devleopment of this reminds me of the need to deal with cycles in the poset in the future - probabally by not adding a close dependency if doing so would make a close dependency cycle? This might not actually be fully legitimate
Nathan Braswell
2018-09-18 00:37:16 -04:00
cf4a006958Fix bug in func calling, pass in argc and argv. Next up will be to get rid of the f of fmain by adding name mangling
Nathan Braswell
2018-09-17 23:52:23 -04:00
0e0ca8d7b4Big changes to k - now all passes are top-level-item focused, does dead simple scope lookup. Added an error message when trying to match on not an ADT
Nathan Braswell
2018-09-17 23:36:26 -04:00
0cad409b07Some small cleanup
Nathan Braswell
2018-08-26 22:59:39 -04:00
235fb3c141Can just barely compile a return int
Nathan Braswell
2018-08-26 22:46:38 -04:00
87bc88cde4Transition to new pass/poset setup
Nathan Braswell
2018-08-26 21:45:38 -04:00
1cae1b1504parse types into initial ast
Nathan Braswell
2018-06-22 23:13:08 -04:00
e851d0eac5Add basis for types in k, and move to new poset setup (depend on individual imports, functions, types, and global variables)
Nathan Braswell
2018-06-22 20:58:47 -04:00
6ffe7aee46Basic support for templates in ast, rest will come with types
Nathan Braswell
2018-06-22 09:02:30 -04:00
a8d4b4eb7fParses everything but templates into new AST, including imports adding to dependency poset
Nathan Braswell
2018-06-20 00:49:49 -04:00