Commit Graph

238 Commits

Author SHA1 Message Date
greg e5ee072b00 Convert tokenizer to large match statement
In the hopes of making it shorter
2017-09-19 22:10:58 -07:00
greg 9b62efc830 Fix conditional parsing
Needed to account for semicolons/newlines. Maybe need to generalize
delimiter-separated list of things
2017-09-19 22:10:58 -07:00
greg f626ca1427 Add test for conditional parsing 2017-09-19 22:10:57 -07:00
greg 82c52ede48 Finish evaluating conditionals 2017-09-19 22:10:57 -07:00
greg 7f52b20d97 Conditional eval partway implemented
Need to change the AST representation to support compound statements I
think
2017-09-19 22:10:57 -07:00
greg 12fee6158c Vector'd expressions don't need to be boxed 2017-09-19 22:10:57 -07:00
greg 2d21de7cc3 Added support for conditionals to parser
Not to eval yet
2017-09-19 22:10:57 -07:00
greg 9cc9c5977d Fixed evaluation of function calls
This bit still isn't quite small-step but maybe that's okay for
functions
2017-09-19 22:10:57 -07:00
greg ed9d1312d1 Change representation of variables 2017-09-19 22:10:57 -07:00
greg 29d9e50311 All environment changes represented explicitly
Start the work of rewriting the evluator to be a true small-step
evaluator - that is, all state changes are represented explicitly as
SideEffect types, and not as methods called on the evaluator, except at
the very top of the evaluation loop
2017-09-19 22:10:57 -07:00
greg e84550f3ec Kill two compilation warnings 2017-09-19 22:10:57 -07:00
greg 3063de1242 Run rustfmt on the rest of them 2017-09-19 22:10:57 -07:00
greg e1d07b4e66 Rustfmt on llvm_wrap 2017-09-19 22:10:57 -07:00
greg af45004afa Run rustfmt on some files 2017-09-19 22:10:57 -07:00
greg d4d61ce5ad Use process::exit in main 2017-09-19 22:10:57 -07:00
greg 743311d18a Convert Tokenize to Result 2017-09-19 22:10:57 -07:00
greg 17f9846bb9 Make tests pass w/ new match syntax 2017-09-19 22:10:57 -07:00
greg fe8418edbe Kill some extraneous spaces 2017-09-19 22:10:57 -07:00
greg 1d8102b9fa Make compilation controllable 2017-09-19 22:10:57 -07:00
greg aac3ca40fe Add getopts 2017-09-19 22:10:57 -07:00
greg c389b44bf8 Compile statements with variables 2017-09-19 22:10:57 -07:00
greg db52f9b716 Package compilation context into one struct 2017-09-19 22:10:57 -07:00
greg d3a743442b = should have high precedence 2017-09-19 22:10:57 -07:00
greg e46d840d96 Move more code to llvm_wrap
And silence a few compiler warnings
2017-09-19 22:10:57 -07:00
greg 3d406f1dd2 Move llmv wrapper into separate file 2017-09-19 22:10:57 -07:00
greg fca307d3ab Package more functions in LLVMWrapper 2017-09-19 22:10:57 -07:00
greg a65544356c Fix bug in delete routine 2017-09-19 22:10:57 -07:00
greg 10d51cc29c Compile binexps 2017-09-19 22:10:57 -07:00
greg 95b773de7f Compilation sequence
-move all steps of the llvm IR compilation process into the binary
2017-09-19 22:10:57 -07:00
greg c032da712f Successfully compiling a main function 2017-09-19 22:10:57 -07:00
greg cfb93d9dea Compilation that returns an output code works 2017-09-19 22:10:57 -07:00
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 6ed67cd325 Add test .schala file 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 5d0648b9c0 Ignore Cargo.lock 2017-09-19 22:10:56 -07:00
greg ba7a2e658f Don't track Cargo.lock 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