d726705845
Add 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 Braswell2020-04-20 01:16:34 -04:00
f70cc8030e
fix comment handling (including at beginning of files)
Nathan Braswell2020-03-31 15:46:03 -04:00
ed33f967ce
Make 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 Braswell2020-03-31 15:15:45 -04:00
494e22007d
Fix 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 Braswell2020-03-30 19:51:01 -04:00
2bc9ce497b
FINALLY 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 Braswell2019-07-13 18:01:04 -04:00
148d70e2d4
Man, I was just missing initting to null and it would have run
Nathan Braswell2019-01-06 22:04:56 -05:00
c2495a04f8
binding epochs compile, but segfault. too late tonight to keep going
Nathan Braswell2019-01-06 01:06:15 -05:00
ed57d2b2a9
Added sizeof and fixed inferencing from explicitly instantiated template functions so that new and delete work! (though not traits yet...)
Nathan Braswell2018-12-29 16:35:47 -05:00
235775c077
Basic veriadic, ext, and declaration only support, allowing us to use printf! Unifying with veriadic might need work (does it need ref treatment?)
Nathan Braswell2018-12-29 14:50:58 -05:00
deda17e18b
groundwork for refs, moved ref indicator into fun type
Nathan Braswell2018-12-27 15:14:28 -05:00
2cf4a2f664
emit structs with poset to fix C ordering. Structs might fully work now! Still need to do testing around templated versions and pointers
Nathan Braswell2018-12-27 00:59:26 -05:00
ca082c29bd
Add 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 Braswell2018-12-26 20:34:06 -05:00
5eb9c08fd0
Fix 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 Braswell2018-12-19 17:32:41 -05:00
66f82062ba
Almost 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 Braswell2018-12-18 02:51:44 -05:00
eadadd5576
Combine resolve_possiblities and name_type_resolve in prep for scopes depending on types
Nathan Braswell2018-12-13 01:04:16 -05:00
caafc6f4e4
Allow <= 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 Braswell2018-12-06 04:39:40 +00:00
d2011640f7
templated structs starting to work, if grammer freeup
Nathan Braswell2018-11-04 19:03:55 -05:00
8177bc7fd0
Add struct access! Uses new translation_unit_generative pass depended on by scope lookups to generate compiler_intrinsics that access members of structs'
Nathan Braswell2018-10-27 18:00:26 -04:00
db3004329d
Starting support for structs - can declare them and variables of them. Not actually access any members, or template them...
Nathan Braswell2018-10-25 01:17:09 -04:00
fb179cfcf7
Added 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 Braswell2018-10-01 01:19:51 -04:00
dea34f0821
Add 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 Braswell2018-09-30 16:21:24 -04:00
4d5e65e962
Groundwork for primitive operations, including > for ints
Nathan Braswell2018-09-30 16:06:07 -04:00
4dcf102cb0
Also 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 Braswell2018-09-24 00:21:39 -04:00
2148577523
HM-style return type overloaded function infrencing works!
Nathan Braswell2018-09-24 00:08:07 -04:00
6c7f313075
Very limited HM-style type inference works! (Just var v = value, but still. The machinery is mostly in place)
Nathan Braswell2018-09-22 16:41:36 -04:00
38133b8bc3
Pull binding out into it's own templated object so we can use it for types for unification
Nathan Braswell2018-09-22 10:44:02 -04:00
08b5e29b70
Fix poset to handle circular closed dependencies (they're propegated recursively to open dependencies) and some indentation fixes
Nathan Braswell2018-09-19 00:43:49 -04:00
2d9f5dc6fe
Add 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 Braswell2018-09-18 00:37:16 -04:00
cf4a006958
Fix 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 Braswell2018-09-17 23:52:23 -04:00
0e0ca8d7b4
Big 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 Braswell2018-09-17 23:36:26 -04:00
e851d0eac5
Add basis for types in k, and move to new poset setup (depend on individual imports, functions, types, and global variables)
Nathan Braswell2018-06-22 20:58:47 -04:00
6ffe7aee46
Basic support for templates in ast, rest will come with types
Nathan Braswell2018-06-22 09:02:30 -04:00
a8d4b4eb7f
Parses everything but templates into new AST, including imports adding to dependency poset
Nathan Braswell2018-06-20 00:49:49 -04:00