Erin
711ad27e00
Basic BfFunctio support
2021-06-11 17:52:47 +02:00
Alex Bethel
41316f5696
Re-enable assignment semantics
2021-06-11 10:05:48 -05:00
Erin
6f16d2594b
Added variable assignment to parser
...
- Fixed parse error, that `rlyeh` returned HopBack
2021-06-11 16:59:40 +02:00
HTG-YT
dd28ff985f
add nevergonnagiveyouup
constant
2021-06-11 15:26:30 +08:00
HTG-YT
77749bc32b
add interessant
and funny
constants
2021-06-11 15:19:27 +08:00
Alex Bethel
7d7c1e4a1b
Fix interpreter variable persistence bug
2021-06-08 19:21:33 -05:00
Alex Bethel
dc5ef63fef
Better error handling in REPL
...
We have much better spanned expression support, so now we get to show
it off!
2021-06-07 20:08:38 -05:00
Alex Bethel
a0c1f93392
Remove 0..0 placeholder from unexpected_eof()
2021-06-07 20:03:26 -05:00
Alex Bethel
ce20611c07
Fix all 0..0 span placeholders in interpret.rs
2021-06-07 19:57:44 -05:00
Alex Bethel
d8f462e0b5
Fix unit tests
2021-06-07 17:35:49 -05:00
Alex Bethel
addda8fc87
Remove giant comment block left in by mistake
2021-06-07 16:28:27 -05:00
Alex Bethel
426aee6a2b
Repair interpreter after parser changes
2021-06-07 16:20:20 -05:00
Erin
903b1a3809
Added T-Dark test
2021-06-07 23:06:13 +02:00
Erin
8bd61a4a65
Added tests, Bugfix
...
- Originally, it spanned from operator (bug)
2021-06-07 22:58:28 +02:00
Erin
1f78cb0ee1
Added missing mut
2021-06-07 22:24:43 +02:00
Erin
902d8b914c
Unified span terminology
...
- Add more derivations, because it's required by another parts of project
2021-06-07 22:21:21 +02:00
Erin
f893e24aed
Changed position terminology
2021-06-07 21:28:24 +02:00
Erin
2084ebeed1
Removed unwraps, added Rlyeh
2021-06-07 11:07:50 +02:00
Erin
b7464f6ad3
Implement function calls
...
- And printing
- Revised terminology in Lexer
- Control flow
2021-06-07 11:00:06 +02:00
Erin
b6bce72b94
Added logical operators
2021-06-07 09:17:30 +02:00
Erin
97f0271534
Binary operator boilerplate reduction
2021-06-07 09:17:18 +02:00
Erin
a5a048728c
Added basic parsing
...
- Expressions
- If, Functio
2021-06-07 00:09:45 +02:00
Erin
b04bd77672
Initial chthulic error impl in Lexer
...
- See discussions #17
2021-06-06 23:15:11 +02:00
Erin
93065e7dc9
AST revamp
...
- Unified terminology of span in error.rs
2021-06-06 23:13:48 +02:00
Erin
6fd95f3cc2
Updated AST
2021-06-06 21:09:18 +02:00
Erin
afe6588c05
Removed custom Lexer, reorganised Token
definition
...
- As peeking will not be involved in parsing, it was removed
2021-06-06 20:28:13 +02:00
Erin
2c15f3dc17
Deleted old parser
2021-06-06 20:05:18 +02:00
Alex Bethel
4bda25c9f3
Correct spelling of "occurred"
2021-06-05 08:50:20 -05:00
Alex Bethel
6c2d5cc84a
Prettier error handling
2021-06-04 18:56:26 -05:00
Alex Bethel
528de718dc
Clean up eval_expr
some more
...
I keep going back and forth on how I want this block to look :P
Anyway, this is *probably* its final-ish form, until the parser gets
re-written.
2021-06-02 18:41:20 -05:00
Alex Bethel
ce02aebd91
Use impl Value
rather than trait BfWriter
...
It probably makes more sense to be writing values with
`Value::bf_write` than to go for the complexity of using a trait to
allow `Writer::write_value` (which also looks ambiguous because it's
not immediately clear that a generic name like "write_value" relates
to BF or AbleScript).
2021-06-02 18:20:30 -05:00
Alex Bethel
326d0511e7
Add Brainfuck functio interpretation
...
BF functios can now be declared and called from AbleScript code.
Function parameters supplied from AbleScript are serialized manually
into byte sequences using the `BfWriter` trait, and are available from
BF code using the input operator, `,`.
At the moment, BF functios simply write output to stdout, and are
therefore incapable of communicating results to the rest of the
program; this might change in the future if we can get something close
to pass-by-reference working.
2021-06-02 15:29:31 -05:00
Alex Bethel
07195d4cf6
Fix panic on arithmetic error
...
Divide by zero and add, subtract, or multiply with overflow are all
caught now and reported as an ArithmeticError, rather than causing the
interpreter to panic.
2021-05-30 13:32:29 -05:00
Alex Bethel
acfd81ead2
More thorough unit tests
2021-05-30 13:32:29 -05:00
Alex Bethel
344a11084e
Add some unit tests to interpret.rs
...
Currently `overflow_should_not_panic` and `variable_persistence` both
fail due to bugs in the interpreter.
2021-05-30 13:32:29 -05:00
Alex Bethel
099b9e23d6
Make base-55 encoding & decoding match
...
Changed "U"'s encoding to -210, so now when the README claims "U =
-210", it's actually accurate :)
2021-05-29 14:24:46 -05:00
Alex Bethel
585bf2e19f
Use single-letter identifiers as base-55 digits
2021-05-29 10:45:39 -05:00
Alex Bethel
c906366e3f
Improve name & documentation accuracy
...
Renamed ControlFlow -> HaltStatus because that's what the enum really
is -- a status on why something halted. Also reviewed `interpret.rs`'s
documentation and fixed a few things that were out of date.
2021-05-25 21:55:02 -05:00
Alexander Bethel
ec81ead3ea
Implement break
and hopback
statements
2021-05-25 21:22:38 -05:00
Alexander Bethel
669f379700
Better abstractions, implement scoping rules
2021-05-25 13:26:01 -05:00
Alexander Bethel
109c77eeb2
Implement more statements
...
Added variable declaration, `if` statements, `loop` statements,
variable assignment, and variable banning to go along with
printing (which was already implemented). We still need function
declarations, brainfuck declarations, function calls, and the control
flow operators "break" and "hopback".
2021-05-24 10:50:26 -05:00
Able
c27837a807
Slightly more curse
2021-05-24 01:18:36 -05:00
Alexander Bethel
b625a71711
Allow abool -> bool coercion
...
The expression `sometimes & true` now evaluates to `true` 50% of the
time and false 50% of the time, rather than throwing a type error
because `sometimes` is not a bool.
2021-05-21 12:25:37 -05:00
Alexander Bethel
ea211fc3b0
Make ablescript -f
run interpreter
...
`ablescript -f foo.able` will now both parse and interpret `foo.able`,
rather than just parsing it.
2021-05-20 18:24:18 -05:00
Alexander Bethel
eccc00ff81
Implement basic interpreter
...
Added code for interpreting parsed AbleScript expressions and
statements, and hooked it up to the REPL.
2021-05-20 18:18:01 -05:00
tdark
1b195dc955
Added support for specifying a tape size limit
2021-05-15 18:39:49 +02:00
tdark
7b5ae34bfd
Implemented brainfuck interpreter
2021-05-15 18:10:50 +02:00
able
87139c4448
consider using able brand products
2021-05-05 07:33:40 -05:00
able
9b7367353d
Brain fuck work
2021-05-04 22:23:17 -05:00
able
bdf27c83da
Minor Changes
2021-05-03 19:33:21 -05:00