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
Able
90773eea3d
Merge pull request #27 from AlexBethel/master
2021-05-29 17:14:25 -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
Able
7b21eaf48a
Merge pull request #26 from Seppel3210/patch-1
2021-05-28 05:10:43 -05:00
Seppel3210
d52c775ed1
Change "*" versions to explicit versions
...
Change "*" versions to explicit versions in Cargo.toml
2021-05-28 09:30:16 +02:00
Able
e02edbbd16
Update README.md
2021-05-27 17:51:08 -05:00
Able
18973333b0
Merge pull request #24 from AlexBethel/master
2021-05-25 23:06:08 -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
Able
84016d3dcd
Merge pull request #22 from AlexBethel/master
2021-05-21 12:29:03 -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
Able
0ad680cadd
Merge pull request #18 from T-Dark0/tdark-brainfuck
2021-05-15 20:34:29 -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
c0b7bd2f34
Update README.md
2021-05-14 10:52:16 -05:00
Able
396650ae95
Update README.md
2021-05-11 13:39:41 -05: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
57d86b9f92
README changes
2021-05-04 21:29:51 -05:00
able
bdf27c83da
Minor Changes
2021-05-03 19:33:21 -05:00
Able
143ae613d8
Merge pull request #15 from erindesu/master
...
Fixed some incompatible old code
2021-05-03 18:41:23 -05:00
Erin
72cd540728
Tidy up
2021-05-03 23:02:19 +02:00
Erin
798c1807db
Obeyed our paperclip overlord + fmt
2021-05-03 21:36:32 +02:00
Erin
30eedbc854
Fixed some incompatible old code
...
- Added assignment support
- Reduced boilerplate
- Removed `else`
2021-05-03 21:35:43 +02:00
Erin
29bf01935c
Variable assignment implemented
2021-05-03 09:54:27 +02:00
Able
e8a2b87c6e
Merge pull request #14 from erindesu/master
2021-05-03 02:17:38 -05:00
Erin
8c6f415ac9
Fixed #13
2021-05-03 08:47:52 +02:00
Able
e080fc65e3
Merge pull request #12 from erindesu/master
2021-05-02 12:49:30 -05:00
Erin
051f6e781f
Added tests and loop flow
2021-05-02 18:12:51 +02:00
Erin
ecce080378
Added T-Dark block
...
- obeyed clippy
2021-05-02 17:38:12 +02:00
Erin
5a8dd5051f
Parser production ready
...
- TODO: T-Dark block
- cargo fmt
- Obeyed our clippy overlord
2021-05-02 16:48:33 +02:00
Erin
c90d242b0f
Parser implements examples
...
- Function call is now stmt (muhehe)
2021-05-02 15:43:25 +02:00
Erin
18a1343e11
Added basic math operations
...
- cargo fmt
2021-05-02 00:39:08 +02:00
Erin
3794fd3c8f
Divided token types
...
- Item = Expr | Stmt
- Added REPL (AST dump)
- Removed operator parsing because it was horrible and I need to redo it
2021-05-01 13:44:58 +02:00
Erin
eef7ec16fa
Tidy up
2021-04-29 19:19:35 +02:00
Erin
ca60f818eb
Implemented function calls
2021-04-29 18:50:51 +02:00
Erin
17a32a8df7
Bugfix: Peeking
...
- Fixed `PeekableLexer` next to not-be passtrough to iterator
- Made error handling depend on state of Option
2021-04-29 09:47:29 +02:00
Erin
e45afeac5e
Added Peekable Lexer
...
- Added wrapper for Lexer with `peek()` method
- Renamed `token` module to `lexer` as it more describe it's function
- Started work on operator flow
2021-04-28 22:52:19 +02:00
Able
b4d3f0c9b6
Merge pull request #10 from erindesu/master
...
Reimplemented parser
2021-04-27 09:26:29 -05:00
Erin
f3779deeb5
Added parsing of conditionals
2021-04-27 13:48:56 +02:00
Erin
3f9e6b72cc
Made parser to throw error when unexpected EOF
2021-04-27 11:57:11 +02:00
Erin
39a8bf6a54
Redone original parser
...
= implemented original features
2021-04-27 11:49:07 +02:00
Erin
d2160a3a4a
Added testing for base55, new identifier lexing
2021-04-27 11:09:19 +02:00
Erin
3b8ce34c2b
Continue work on parser, improved lexer
...
- Added literal parsing (improved lexing)
- Revised error handling
2021-04-27 10:51:39 +02:00