2baad06e8c
Add string literals and symbols, print support for both as well as lists and vectors
Nathan Braswell
2020-04-22 21:10:46 -04:00
19ae75b819
Fix the quoting compile
Nathan Braswell
2020-04-20 01:22:45 -04:00
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 Braswell
2020-04-20 01:16:34 -04:00
f70cc8030e
fix comment handling (including at beginning of files)
Nathan Braswell
2020-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 Braswell
2020-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 Braswell
2020-03-30 19:51:01 -04:00
2d6c1880ff
MaL implementation in Kraken
Nathan Braswell
2020-03-10 12:57:28 -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 Braswell
2019-07-13 18:01:04 -04:00
148d70e2d4
Man, I was just missing initting to null and it would have run
Nathan Braswell
2019-01-06 22:04:56 -05:00
c2495a04f8
binding epochs compile, but segfault. too late tonight to keep going
Nathan Braswell
2019-01-06 01:06:15 -05:00
06df819e72
Port (though ineffecently) defer_lower!
Nathan Braswell
2018-12-29 20:58:34 -05:00
ed57d2b2a9
Added 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
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 Braswell
2018-12-29 14:50:58 -05:00
4ec59690cf
String value support
Nathan Braswell
2018-12-29 13:32:32 -05:00
eccc4c87a6
Finally, ref lowering! A little hacky, but not terrible...
Nathan Braswell
2018-12-29 12:19:54 -05:00
b356b793aa
Groundwork for ref_lower pass
Nathan Braswell
2018-12-28 01:14:54 -05:00
deda17e18b
groundwork for refs, moved ref indicator into fun type
Nathan Braswell
2018-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 Braswell
2018-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 Braswell
2018-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 Braswell
2018-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 Braswell
2018-12-18 02:51:44 -05:00
eadadd5576
Combine resolve_possiblities and name_type_resolve in prep for scopes depending on types
Nathan Braswell
2018-12-13 01:04:16 -05:00
862132ba88
fix indentation for one case
Nathan Braswell
2018-12-13 00:21:30 -05:00
92e2844616
Add in normal method style
Nathan Braswell
2018-12-12 23:56:14 -05:00
0153054a4c
work on k
Nathan Braswell
2018-12-05 23:43:24 -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 Braswell
2018-12-06 04:39:40 +00:00
d2011640f7
templated structs starting to work, if grammer freeup
Nathan Braswell
2018-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 Braswell
2018-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 Braswell
2018-10-25 01:17:09 -04:00
ae2f40bcc7
Treat assignment like other operators
Nathan Braswell
2018-10-01 23:32:46 -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 Braswell
2018-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 Braswell
2018-09-30 16:21:24 -04:00
4d5e65e962
Groundwork for primitive operations, including > for ints
Nathan Braswell
2018-09-30 16:06:07 -04:00
9f26472b97
Clean up error messages
Nathan Braswell
2018-09-24 00:26:06 -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 Braswell
2018-09-24 00:21:39 -04:00
2148577523
HM-style return type overloaded function infrencing works!
Nathan Braswell
2018-09-24 00:08:07 -04:00
9178c2a29d
More unification for typechecking:
Nathan Braswell
2018-09-22 20:10:56 -04:00
6c7f313075
Very 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
0505a0e7d6
Move types into binding also
Nathan Braswell
2018-09-22 14:54:52 -04:00
38133b8bc3
Pull 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
08b5e29b70
Fix 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
3e3564ea54
Add basic if statement
Nathan Braswell
2018-09-18 09:04:05 -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 Braswell
2018-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 Braswell
2018-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 Braswell
2018-09-17 23:36:26 -04:00
0cad409b07
Some small cleanup
Nathan Braswell
2018-08-26 22:59:39 -04:00
235fb3c141
Can just barely compile a return int
Nathan Braswell
2018-08-26 22:46:38 -04:00
87bc88cde4
Transition to new pass/poset setup
Nathan Braswell
2018-08-26 21:45:38 -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 Braswell
2018-06-22 20:58:47 -04:00
6ffe7aee46
Basic support for templates in ast, rest will come with types
Nathan Braswell
2018-06-22 09:02:30 -04:00
a8d4b4eb7f
Parses everything but templates into new AST, including imports adding to dependency poset
Nathan Braswell
2018-06-20 00:49:49 -04:00