Commit Graph

737 Commits

Author SHA1 Message Date
greg
1a74e16af5 Use UVars in type signatures of functions 2018-07-26 00:52:45 -07:00
greg
df88e33579 Introduced fresh type variable method 2018-07-26 00:52:45 -07:00
greg
9d72a92f0b Continuing work 2018-07-26 00:52:45 -07:00
greg
fa6c2a6f45 Re-added symbol table infra 2018-07-26 00:52:45 -07:00
greg
92e6830979 Some logic for function call inferring 2018-07-26 00:52:45 -07:00
greg
ef9cd04605 Starting on function application typechecking 2018-07-26 00:52:45 -07:00
greg
1eaf201145 Move some code around 2018-07-26 00:52:45 -07:00
greg
876373c9fd Function calls work 2018-07-26 00:52:45 -07:00
greg
63f5f155ae Temporarily disable type-erroring
and tighten some code
2018-07-26 00:52:45 -07:00
greg
51cf8a4824 Handle variable lookups 2018-07-26 00:52:45 -07:00
greg
e0cc12276c Evaluate binding declarations 2018-07-26 00:52:45 -07:00
greg
d69970a806 Separate Value and NamedStruct syntactic categories 2018-07-26 00:52:45 -07:00
greg
522d9fc951 Fixed | 2018-07-26 00:52:45 -07:00
greg
63c3e0a4db More operator stuff 2018-07-26 00:52:45 -07:00
greg
547def990e Operator changes 2018-07-26 00:52:45 -07:00
greg
6e105bac55 Fixed tests w/ respect to binop
There's a few unnecessary conversions of &str 's to Rc<String> and back
2018-07-26 00:52:45 -07:00
greg
a396c448ec Centralize data for prefix ops too 2018-07-26 00:52:45 -07:00
greg
d3ef980dc5 Added type information to binop definitions
Also started centralizing precedence there too
2018-07-26 00:52:45 -07:00
greg
df86e0c16e Make sigil field private 2018-07-26 00:52:45 -07:00
greg
274bf80b5d Function evaluation work 2018-07-26 00:52:45 -07:00
greg
f0a39ac88a Give State a pointer to its parent
For function call lookups
2018-07-26 00:52:45 -07:00
greg
85e65273fe Finished initial BinOp/PrefixOp 2018-07-26 00:52:45 -07:00
greg
413c5afe67 Starting to munge BinOp types
Incomplete, doesn't yet compile
2018-07-26 00:52:45 -07:00
greg
36174140bc ReplState -> State
Not everythign is a repl
2018-07-26 00:52:45 -07:00
greg
75ecfb4e86 Move bx! macro up to mod.rs
And make use of it in parser
2018-07-26 00:52:45 -07:00
greg
e86d401c90 Move anno-to-type to a method on TypeName 2018-07-26 00:52:45 -07:00
greg
b2319f0971 Fix tests too 2018-07-26 00:52:45 -07:00
greg
d423e88845 Separate tokenizing module
Parsing was getting too long
2018-07-26 00:52:45 -07:00
greg
5cb0e6715d Some work on binops 2018-07-26 00:52:45 -07:00
greg
5bb2c319e8 Some more type-checking work 2018-07-26 00:52:45 -07:00
greg
440783bb64 More work on evaluating applications
for later testing + to kill a compiler warning
2018-07-26 00:52:45 -07:00
greg
9834ee295e Fix traits, silence warnings 2018-07-26 00:52:45 -07:00
greg
9346bb9581 type of a declaration should be Void, not Unit
I think this makes sense

Also kill some compiler warnings
2018-07-26 00:52:45 -07:00
greg
f46f593c44 Types in bindings 2018-07-26 00:52:45 -07:00
greg
ec7d185ed5 Simplified match 2018-07-26 00:52:45 -07:00
greg
3f1cf1d975 Added trait declaration 2018-07-26 00:52:45 -07:00
greg
39ee550b54 More static type work 2018-07-26 00:52:45 -07:00
greg
d5df868f10 Finished basic constant type inference 2018-07-26 00:52:45 -07:00
greg
55629e6d9d More type implementing - WIP
This has a borrowing bug currently
2018-07-26 00:52:45 -07:00
greg
9d99971f49 Fix some integer overflows with binary and hex 2018-07-26 00:52:45 -07:00
greg
76575e9ba3 Starting basic type stuff 2018-07-26 00:52:45 -07:00
greg
a50d8d9e3f Starting over with types 2018-07-26 00:52:45 -07:00
greg
e6a015090c More type things 2018-07-26 00:52:45 -07:00
greg
c18bf9c29f Type singletons test work 2018-07-26 00:52:45 -07:00
greg
cfc507a2df TypeSingletonName broken out 2018-07-26 00:52:45 -07:00
greg
f7e88c7cab Fix struct literals in if expressions
With special case-ing, sigh :( Also will need to do this for match
expressions but I'll cross that bridge when I come to it
2018-07-26 00:52:45 -07:00
greg
4d0bfa2a52 Don't need clone() here 2018-07-26 00:52:45 -07:00
greg
99e5d86764 Kill separate is_digit method
I care about 10 vs 16 distinction
2018-07-26 00:52:45 -07:00
greg
17e8ebe789 Hex parsing done 2018-07-26 00:52:45 -07:00
greg
967e5cc436 Added a bunch of notes 2018-07-26 00:52:45 -07:00
greg
7a6ace5db1 Fix parse level calculation 2018-07-26 00:52:45 -07:00
greg
129af43e69 Proper indentation of parser debug 2018-07-26 00:52:45 -07:00
greg
17dccf65c8 Move some code around 2018-07-26 00:52:45 -07:00
greg
95c6a23bf1 Better hex literals 2018-07-26 00:52:45 -07:00
greg
2bff53846c Starting hex parsing 2018-07-26 00:52:45 -07:00
greg
514d117c7e Simplify some code 2018-07-26 00:52:45 -07:00
greg
9ec983dc20 unified BoolAtom 2018-07-26 00:52:45 -07:00
greg
8f6c80ac8c Print operation 2018-07-26 00:52:45 -07:00
greg
7f546fa879 Refactoring 2018-07-26 00:52:45 -07:00
greg
48a35aa382 Delete some unneeded code 2018-07-26 00:52:45 -07:00
greg
0c64b14be0 Forgot to change name here 2018-07-26 00:52:45 -07:00
greg
5d9fa6679b Name change
builtin -> primitive
2018-07-26 00:52:45 -07:00
greg
ea24ae1bb5 Get rid of some printlns 2018-07-26 00:52:45 -07:00
greg
0d2a0e3536 Implement lambda application 2018-07-26 00:52:45 -07:00
greg
339e3464e3 Plus and multiply 2018-07-26 00:52:45 -07:00
greg
c35b684bdd Builtins - + 2018-07-26 00:52:45 -07:00
greg
d11c518721 Framework for multiple environments 2018-07-26 00:52:45 -07:00
greg
8dde8c7381 Apply wokr 2018-07-26 00:52:45 -07:00
greg
47cad3712c Fixing quote 2018-07-26 00:52:45 -07:00
greg
ffcc0ef379 Starting builtins 2018-07-26 00:52:45 -07:00
greg
6766791627 Lambda abstraction 2018-07-26 00:52:45 -07:00
greg
05de5ebe61 Kill this linker thing 2018-07-26 00:52:45 -07:00
greg
29ebd35165 Kill unused code 2018-07-26 00:52:45 -07:00
greg
622b50a40c Some lambda work 2018-07-26 00:52:45 -07:00
greg
9f916c7c02 Remove a unimplemented 2018-07-26 00:52:45 -07:00
greg
85375bb9df Add fn literal variant 2018-07-26 00:52:45 -07:00
greg
d11500c643 Even more concise 2018-07-26 00:52:45 -07:00
greg
8493233b69 Refactoring 2018-07-26 00:52:45 -07:00
greg
60644ba3d7 Starting lambdas 2018-07-26 00:52:45 -07:00
greg
254f2ae4b8 Make var methods better 2018-07-26 00:52:45 -07:00
greg
e243b99d3b If expressions 2018-07-26 00:52:45 -07:00
greg
3d023a6704 Rukka - Variables 2018-07-26 00:52:45 -07:00
greg
73612d1465 Define half-working 2018-07-26 00:52:45 -07:00
greg
d1a15b64ff Get rid of old import 2018-07-26 00:52:45 -07:00
greg
66e8643382 eq? 2018-07-26 00:52:45 -07:00
greg
ad58fc1ad1 True and False primitives 2018-07-26 00:52:45 -07:00
greg
adc7be30a9 Some primitive implementations 2018-07-26 00:52:45 -07:00
greg
72097fa125 Fix pointer alias problem 2018-07-26 00:52:45 -07:00
greg
ae9d93f6dc Still tryign to make the pointer-munging work 2018-07-26 00:52:45 -07:00
greg
3d421c7039 This has broken sexp parsing 2018-07-26 00:52:45 -07:00
greg
166bc3b3cb Fix print bug 2018-07-26 00:52:45 -07:00
greg
2f263de8ba Convert to more lispish Cons 2018-07-26 00:52:45 -07:00
greg
46ae176498 Special forms list 2018-07-26 00:52:45 -07:00
greg
d84def35e7 Unwraps 2018-07-26 00:52:45 -07:00
greg
07e55ca04e Handle top-level empty list 2018-07-26 00:52:45 -07:00
greg
6dcf5c7945 print list 2018-07-26 00:52:45 -07:00
greg
568ee88f3a Tighten code 2018-07-26 00:52:45 -07:00
greg
8749ed984d Some more code 2018-07-26 00:52:45 -07:00
greg
559eaf54de Type simplification 2018-07-26 00:52:45 -07:00
greg
bf42b58ca5 State for eval 2018-07-26 00:52:45 -07:00