greg
08798fb690
Move all LLVM functions into LLVMWrap
...
so I can kill the global unsafe
2017-09-19 22:10:57 -07:00
greg
e0eef5e58f
More moving functions around
2017-09-19 22:10:57 -07:00
greg
2107e6344e
More function wrapping
2017-09-19 22:10:57 -07:00
greg
2ad65a1c5d
Some in-progress work
2017-09-19 22:10:57 -07:00
greg
a01b6c874e
Small-step function arg evaluation
2017-09-19 22:10:57 -07:00
greg
907af38f44
Evaluate printing
2017-09-19 22:10:57 -07:00
greg
923566c4e9
Get rid of println's for token/ast debugging
...
Instead just explicitly stick them into the returned string.
This is necessary 'cause I'm gonna convert simplerepl to use ncurses
soon, so I can't have any side effects
2017-09-19 22:10:57 -07:00
greg
96c51a9b88
Move some more unsafe code into block
2017-09-19 22:10:57 -07:00
greg
8528c912bd
Added side effect framework
2017-09-19 22:10:57 -07:00
greg
47f4c25020
Doing some wrapping
2017-09-19 22:10:56 -07:00
greg
c18c1a639a
compilation does something usefl
...
Following along with:
http://blog.ulysse.io/2016/07/03/llvm-getting-started.html
2017-09-19 22:10:56 -07:00
greg
d3f6bbabaa
Starting to add actual LLVM generating code
2017-09-19 22:10:56 -07:00
greg
ee12e10ac6
Fix slice syntax
2017-09-19 22:10:56 -07:00
greg
6a0b50f278
Kill hashmap import for now
2017-09-19 22:10:56 -07:00
greg
6c44d295db
Framework for compilation
2017-09-19 22:10:56 -07:00
greg
cd69ebaa9d
Split main() into subfunctions
2017-09-19 22:10:56 -07:00
greg
3fe9ec95d5
Fix repl error message
2017-09-19 22:10:56 -07:00
greg
8b5d1ecd15
Kill compilation for now
...
Don't wanna deal with this right this second
2017-09-19 22:10:56 -07:00
greg
272fa92052
More fleshing out
2017-09-19 22:10:56 -07:00
greg
0c717c721e
Import Function type
2017-09-19 22:10:56 -07:00
greg
64d560a1fc
Still more work
2017-09-19 22:10:56 -07:00
greg
8a92d5ffa8
Partial LLVM work
2017-09-19 22:10:56 -07:00
greg
5ed0ed727b
Starting to add LLVM code
2017-09-19 22:10:56 -07:00
greg
5428810d2c
Add llvm dependencies
2017-09-19 22:10:56 -07:00
greg
b48c007bca
Get rid of old evaluator file
...
No longer need it
2017-09-19 22:10:56 -07:00
greg
5aa4c404a5
Added conditionals to grammar
2017-09-19 22:10:56 -07:00
greg
0e3aaa8b08
Add conditional expression support
2017-09-19 22:10:56 -07:00
greg
f33cfdadfe
Fix variable lookup order
...
Evaluator uses frames as a stack, so to find the most-recent variable
binding we have to iterate through it the reverse way. This fixes a bug
manifested by:
fn a(x)
x + 20
end
fn b(x)
a(x) + 20
end
2017-09-19 22:10:56 -07:00
greg
231de69084
Added infrastructure for reading files
2017-09-19 22:10:56 -07:00
greg
f014c1a9d9
Kill compiler warnings
2017-09-19 22:10:56 -07:00
greg
c36bc3377e
Fix lookup_binding in function call case
2017-09-19 22:10:56 -07:00
greg
5eba222679
Variable binding in fucntion call work
2017-09-19 22:10:56 -07:00
greg
dcf89aa429
Move lookup_function back onto Evaluator
...
THe problem was that we were borrowing the output of the inner HashMap,
if we clone it we don't borrow anything
2017-09-19 22:10:56 -07:00
greg
1ffbeb6472
Return last value out of function
2017-09-19 22:10:56 -07:00
greg
f8a521fc9b
Start making function calls work
...
This commit isn't fully done yet
2017-09-19 22:10:56 -07:00
greg
77f72806be
Add support for multiple frames
2017-09-19 22:10:56 -07:00
greg
dcde5d6018
Start function call reduction
...
Move the varmap and funcmap functions to the Evaluator, to mkae it
easier to facilitate separate frames
2017-09-19 22:10:56 -07:00
greg
6bb227d052
Rename methods
...
make reduce() the entry point to evaluation
2017-09-19 22:10:56 -07:00
greg
29d4cb53a4
Add infrastructure to do function evaluation
...
Right now you can successfully evaluate a function definition (returning
Null), but cannot call a function
2017-09-19 22:10:56 -07:00
greg
3915c1f035
Remove println from reduction
2017-09-19 22:10:56 -07:00
greg
b400796e4d
Get rid of test variable input
2017-09-19 22:10:56 -07:00
greg
96e6a87f64
Add string concat
2017-09-19 22:10:56 -07:00
greg
b1f9e5cefc
Fix variable lookup
2017-09-19 22:10:56 -07:00
greg
be36d4697d
Pretty-print evaluated AST nodes
2017-09-19 22:10:56 -07:00
greg
ce8c511929
Evaluate additional operators
2017-09-19 22:10:55 -07:00
greg
a8cafa8c64
Move Evaluator state into interpreter state
2017-09-19 22:10:55 -07:00
greg
229e6ae733
More expression parsing work
2017-09-19 22:10:55 -07:00
greg
e9dd0d9ae8
Add concept of Null expression
...
Finally, the null-only behavior is starting to manifest itself!
2017-09-19 22:10:55 -07:00
greg
15d4317191
Add null expression
2017-09-19 22:10:55 -07:00
greg
7114e446a4
Adding, subtracting works
2017-09-19 22:10:55 -07:00