greg
b0e38f7f5b
Refactor
2018-07-26 00:52:46 -07:00
greg
276662d98a
Some code rearrangements
2018-07-26 00:52:46 -07:00
greg
e8e9265b26
Use less verbose match syntax
2018-07-26 00:52:46 -07:00
greg
cb316a973e
Getting back to hindley-milner
...
First, clear out some of this cruft in the compiler warnings
2018-07-26 00:52:46 -07:00
greg
e64861b602
Some eval tests
2018-07-26 00:52:46 -07:00
greg
1673fd1cf9
Fix test
2018-07-26 00:52:46 -07:00
greg
c00effcbdd
Add _
2018-07-26 00:52:46 -07:00
greg
8378170fbd
Kill comments
2018-07-26 00:52:46 -07:00
greg
7ab385d398
Bring custom ADTs to the repl
2018-07-26 00:52:46 -07:00
greg
9fb148bb02
Make compile again
2018-07-26 00:52:46 -07:00
greg
97df2fa344
I dunno
2018-07-26 00:52:46 -07:00
greg
a08134a747
Delete old code in eval
2018-07-26 00:52:46 -07:00
greg
3ac50f974d
Pass around reference to type context in evaluator
2018-07-26 00:52:46 -07:00
greg
afc4281e7f
Evaluate function arguments in context before applying them
2018-07-26 00:52:46 -07:00
greg
8d6fea942f
Handle function definition before use
...
And some other ReducedAST - Evaluation niceties
2018-07-26 00:52:46 -07:00
greg
6d93c758a2
Add function to symbol table
2018-07-26 00:52:46 -07:00
greg
aff421cd99
Working with symbol table
...
Note that symbol table is a different object now than the previous
binding table that was used for type-checking. That binding table is not
currently debugged and should be debugged in a separate debug output with
typechecking proper.
2018-07-26 00:52:46 -07:00
greg
493d76da0b
Add symbol table data structure to typechecking
2018-07-26 00:52:46 -07:00
greg
eb681fbff9
Make parse error message nicer
2018-07-26 00:52:46 -07:00
greg
f3e3843528
Decomplexify delimited!
2018-07-26 00:52:46 -07:00
greg
6b90e19eb1
Simplify expect! macro
...
Ends up printing a debug print, but whatever, will fix later
2018-07-26 00:52:46 -07:00
greg
210ae47c8b
Get rid of lambda
2018-07-26 00:52:46 -07:00
greg
70794d8ff1
For expression parsing
2018-07-26 00:52:46 -07:00
greg
532c8c45b4
Parse while expressions
...
Decided to add while expressions to the language to make for-parsing
easier. Plus some other random notes
2018-07-26 00:52:46 -07:00
greg
24b532df06
This doesn't need to be a closure
2018-07-26 00:52:46 -07:00
greg
ac576be604
Trim newline in getline()
...
Ineffiicent but whatever
2018-07-26 00:52:46 -07:00
greg
6bf106a1a3
Equality
2018-07-26 00:52:46 -07:00
greg
44e585fca2
Conditionals
2018-07-26 00:52:46 -07:00
greg
3f836eb74f
Kill some warnings
2018-07-26 00:52:46 -07:00
greg
abf25d648d
Change repl behavior of strings
2018-07-26 00:52:46 -07:00
greg
1f6e6d9b31
Tuples
2018-07-26 00:52:46 -07:00
greg
e2703121d8
Kill unneeded import
2018-07-26 00:52:46 -07:00
greg
e5b6b41422
Error msg
2018-07-26 00:52:46 -07:00
greg
6c5e3dea5d
Assignment
2018-07-26 00:52:46 -07:00
greg
bd8bf1945c
Super simple janky input
2018-07-26 00:52:46 -07:00
greg
9e393d2753
Kill old type structure
2018-07-26 00:52:46 -07:00
greg
822420a9d5
Add an eval test
2018-07-26 00:52:46 -07:00
greg
6f8dc9bedd
rename IntLiteral -> NatLiteral
2018-07-26 00:52:46 -07:00
greg
e0cec8b8a6
print, println as builtins
2018-07-26 00:52:46 -07:00
greg
1a84f62818
Kill some old code, make very_simple example print
2018-07-26 00:52:46 -07:00
greg
b1966d7199
Function calling works kind of
2018-07-26 00:52:46 -07:00
greg
fdbb21990d
Retrieve function from memory when called
2018-07-26 00:52:46 -07:00
greg
1011ff08f3
Use new rust 1.26 less verbose syntax
2018-07-26 00:52:46 -07:00
greg
6d8d2aecbd
Functions
2018-07-26 00:52:46 -07:00
greg
848306ad1a
Reduce defined function
2018-07-26 00:52:46 -07:00
greg
e6f0710e41
Debug ast rewrite
2018-07-26 00:52:46 -07:00
greg
78ba4e1ed3
Variable lookup
2018-07-26 00:52:46 -07:00
greg
481afb0f87
Fix debugging and debug eval
2018-07-26 00:52:46 -07:00
greg
01986e7474
starting bindings
2018-07-26 00:52:46 -07:00
greg
9cf5260d4b
Use impl Trait to simplify type signatures
2018-07-26 00:52:46 -07:00
greg
18c8176134
Get rid of unneeded imports
2018-07-26 00:52:46 -07:00
greg
2cb7d35008
Use EvalResult type
2018-07-26 00:52:46 -07:00
greg
bd1eed884f
State type manipulations
2018-07-26 00:52:46 -07:00
greg
67917612e6
Swap over eval code to new paradigm
...
While keeping the old code commented for reference
2018-07-26 00:52:46 -07:00
greg
b4a16cdc55
Prefix ops
2018-07-26 00:52:46 -07:00
greg
4d5ab95946
Fix bug with / parsing
2018-07-26 00:52:46 -07:00
greg
ce71254b69
Implement a lot more ops
2018-07-26 00:52:46 -07:00
greg
065e58f87e
Successfully interpreting addition
2018-07-26 00:52:46 -07:00
greg
6768cebc48
Literals
2018-07-26 00:52:46 -07:00
greg
ec5580d20b
prefix op reduction
2018-07-26 00:52:46 -07:00
greg
9de66a9af3
Unimplemented sigil
2018-07-26 00:52:46 -07:00
greg
633b4fe7a4
Nats, some binop reduction
2018-07-26 00:52:46 -07:00
greg
87c3b8e234
Some work
2018-07-26 00:52:46 -07:00
greg
16a463b1a0
Method-style
2018-07-26 00:52:46 -07:00
greg
c3be644133
Optional scope name
2018-07-26 00:52:46 -07:00
greg
e7615fda8b
Add new_frame method
2018-07-26 00:52:46 -07:00
greg
111657b567
Add generic stack data structure
...
I'll want to use this soon enough
2018-07-26 00:52:46 -07:00
greg
c5e8d3e080
Random notes re: symbol table
...
I'm proably gonna want to redo the symbol table stuff after reading Language
Implementation Patterns, esp. to accomodate scopes
2018-07-26 00:52:46 -07:00
greg
4f49c183b0
Float + reduce binop/prefixop
2018-07-26 00:52:46 -07:00
greg
81368179bb
More boilerplate
2018-07-26 00:52:46 -07:00
greg
30128d7d34
Easy work
2018-07-26 00:52:46 -07:00
greg
6c718e5d4f
Start AST-reducing
2018-07-26 00:52:46 -07:00
greg
774ddd665b
Infrastructure to evaluate reduced AST
2018-07-26 00:52:46 -07:00
greg
0bb0ecea76
Add new ast reducing pass
2018-07-26 00:52:46 -07:00
greg
7686707602
Type alias Vec<String> -> Block
2018-07-26 00:52:46 -07:00
greg
890e6bd4c5
Minor wording changes
2018-07-26 00:52:46 -07:00
greg
8826d5b0d4
For now, don't error out with typechecking
2018-07-26 00:52:46 -07:00
greg
8ad5dd9056
Rename passes
2018-07-26 00:52:46 -07:00
greg
fb168da8bd
Kill comments
2018-07-26 00:52:46 -07:00
greg
86e88ee1bf
Greatly fleshed out custom derive
2018-07-26 00:52:46 -07:00
greg
d1a2473bb2
More derive work
2018-07-26 00:52:46 -07:00
greg
e498e19ffc
Use extra attribute
2018-07-26 00:52:46 -07:00
greg
51cdedb9cc
Actually autogenerate the trait
2018-07-26 00:52:46 -07:00
greg
50236ac942
Kill unused mut
2018-07-26 00:52:46 -07:00
greg
7ba8c9dab9
Tokenize errors
2018-07-26 00:52:46 -07:00
greg
774ab5f72e
Token errors WIP
2018-07-26 00:52:46 -07:00
greg
a10df92ab8
Debug work
2018-07-26 00:52:46 -07:00
greg
27885500fd
Show debug stages
2018-07-26 00:52:46 -07:00
greg
5d69b530c5
Remove comments
2018-07-26 00:52:46 -07:00
greg
832d0d4ee3
Add more debug jank entries
2018-07-26 00:52:46 -07:00
greg
2c5ebd636f
Pass EvalOptions to macro
2018-07-26 00:52:46 -07:00
greg
06638dc030
Minor syntax changes
2018-07-26 00:52:46 -07:00
greg
3a181dd0ac
Add passing debug into via &mut pointer
2018-07-26 00:52:46 -07:00
greg
1d1a5fb6fc
Pass mutable handle to unfinishedcomputation
2018-07-26 00:52:46 -07:00
greg
3d960d5697
Implement most of pipeline
2018-07-26 00:52:46 -07:00
greg
1f4228b887
Successfully passing state handle to pass functions
2018-07-26 00:52:46 -07:00
greg
5abaadc0ca
Add self
2018-07-26 00:52:46 -07:00
greg
fd89de77cc
Making pipeline macro nicer
2018-07-26 00:52:46 -07:00
greg
a305610a39
Some kind of pipeline working
...
thanks to the rust syn crate guy for the macro idea
2018-07-26 00:52:46 -07:00
greg
14f31a5186
Adding proc macro for codegen
...
This should hopefully make the compiler pass thing I want to do possible
2018-07-26 00:52:46 -07:00