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
ee12e10ac6
Fix slice syntax
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
8a92d5ffa8
Partial LLVM work
2017-09-19 22:10:56 -07:00
greg
231de69084
Added infrastructure for reading files
2017-09-19 22:10:56 -07:00
greg
a8cafa8c64
Move Evaluator state into interpreter state
2017-09-19 22:10:55 -07:00
greg
16e8d969be
Add basic evaluation
2017-09-19 22:10:55 -07:00
greg
fdaf4c302c
Fix all compiler warnings
2017-09-19 22:10:55 -07:00
greg
087402ece6
Add more tests
...
Need to use box patterns
2017-09-19 22:10:55 -07:00
greg
09b67dc3f7
Change error message
2017-09-19 22:10:54 -07:00
greg
a613fa73e5
Basic parsing framework
2017-09-19 22:10:54 -07:00
greg
8662a3ba0e
Make tokenize error-able
2017-09-19 22:10:54 -07:00
greg
5ca98c7d77
Print tokeniziation
2017-09-19 22:10:54 -07:00
greg
09d524c74a
Changing how parsing works again
...
Someone wrote a port of the LLVM kaleidoscope tutorial to rust, namely
https://github.com/jauhien/iron-kaleidoscope
I'm just gonna follow this along
2017-09-19 22:10:54 -07:00
greg
1c23329656
Add boilerplate for evaluation
...
Just wires everything up, doesn't actually evaluate yet
2017-09-19 22:10:54 -07:00
greg
509ab80b9c
I can now parse one thing
2017-09-19 22:10:54 -07:00
greg
247638c4db
Get parsing REPL working
2017-09-19 22:10:54 -07:00
greg
16dfbb27d5
Use state features from simplerepl
2017-09-19 22:10:53 -07:00
greg
3af7e6a409
Refactoring Schala
...
Gonna work on Schala in earnest now! Using the simplerepl crate instead
of a build-in REPL, temporarily dropping parsing and evaluation code.
2017-09-19 22:10:53 -07:00
greg
123f388711
Rename language to "Schala"
2017-09-19 22:10:53 -07:00
greg
caa331ecdc
Read from file as well as repl
2017-09-19 22:10:53 -07:00
greg
eb5ce2ef9e
Don't print newline for empty REPL result
2017-09-19 22:10:53 -07:00
greg
72b26755a7
Make ParseResult just a normal Result type
...
No reason for it to be different
2017-09-19 22:10:53 -07:00
greg
c27c900e7f
Add operators % and **
...
semantics for these are hard with floats handle later
2017-09-19 22:10:53 -07:00
greg
582a7fd6dc
Make parse and tokens optional
2017-09-19 22:10:53 -07:00
greg
79619025ea
Add directive to print precedence chart
2017-09-19 22:10:53 -07:00
greg
56b338a6a8
Move to global precedence table
2017-09-19 22:10:53 -07:00
greg
8e3a571d67
.env dirctive to display environment
2017-09-19 22:10:53 -07:00
greg
f88f115567
Environment persistent across repl loop
2017-09-19 22:10:53 -07:00
greg
34fdf2be00
Add machinery for evaluation environments
2017-09-19 22:10:53 -07:00
greg
d2108f0f97
First pass at evaluation
...
Very incomplete
2017-09-19 22:10:52 -07:00
greg
1342a76786
Added support for interpreter directives
2017-09-19 22:10:52 -07:00
greg
1059a88ee6
Separate parsing into module
2017-09-19 22:10:52 -07:00
greg
429ace73bd
Move tokenizing into separate module
2017-09-19 22:10:52 -07:00
greg
044e7a6a26
Rename ASTNode -> AST
...
saves typing
2017-09-19 22:10:52 -07:00
greg
dbdae42c1b
Add string to AST
2017-09-19 22:10:52 -07:00
greg
fc3dcf792d
Start writing recursive descent parser
...
I think I get the idea now
2017-09-19 22:10:52 -07:00
greg
02b34ca105
Wrote expect()
...
Hopefully correctly?
2017-09-19 22:10:52 -07:00
greg
9f4330889a
Starting parsing work
2017-09-19 22:10:52 -07:00
greg
3058af4f05
Break on ctrl-D
2017-09-19 22:10:52 -07:00
greg
4f17d5a0dc
Add number tokenizing
2017-09-19 22:10:52 -07:00
greg
8e3774ffca
Comma as separate token
2017-09-19 22:10:52 -07:00
greg
c6059ada7d
Separators and parens
...
Separator = ; or \n, they are equivalent
2017-09-19 22:10:52 -07:00
greg
2aaa600d53
More tokenizer stuff
2017-09-19 22:10:51 -07:00
greg
c6a92728ee
Scaffolding for evaluation function
2017-09-19 22:10:51 -07:00
greg
b2e23bed86
Print tokens and parse
2017-09-19 22:10:51 -07:00
greg
3fdacf018e
Basic repl
2017-09-19 22:10:51 -07:00