Alex Bethel
7bfefd3ba1
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
3e94e9e78c
Merge pull request #27 from AlexBethel/master
2021-05-29 17:14:25 -05:00
Alex Bethel
fcfa83a8a6
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
00e80e9740
Use single-letter identifiers as base-55 digits
2021-05-29 10:45:39 -05:00
Able
cedc52024c
Merge pull request #26 from Seppel3210/patch-1
2021-05-28 05:10:43 -05:00
Seppel3210
bbfc2351f9
Change "*" versions to explicit versions
...
Change "*" versions to explicit versions in Cargo.toml
2021-05-28 09:30:16 +02:00
Able
55a0d9923e
Update README.md
2021-05-27 17:51:08 -05:00
Able
7379f9650c
Merge pull request #24 from AlexBethel/master
2021-05-25 23:06:08 -05:00
Alex Bethel
51db37f1fe
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
7537b4ac98
Implement break
and hopback
statements
2021-05-25 21:22:38 -05:00
Alexander Bethel
e7560f9364
Better abstractions, implement scoping rules
2021-05-25 13:26:01 -05:00
Alexander Bethel
1c2032ab87
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
b37c189da9
Slightly more curse
2021-05-24 01:18:36 -05:00
Able
0f1a106381
Merge pull request #22 from AlexBethel/master
2021-05-21 12:29:03 -05:00
Alexander Bethel
e79fc9a005
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
464337bd53
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
e31b8fb00d
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
2febc944e4
Merge pull request #18 from T-Dark0/tdark-brainfuck
2021-05-15 20:34:29 -05:00
tdark
1306c797c8
Added support for specifying a tape size limit
2021-05-15 18:39:49 +02:00
tdark
99758a177b
Implemented brainfuck interpreter
2021-05-15 18:10:50 +02:00
Able
7f5576c119
Update README.md
2021-05-14 10:52:16 -05:00
Able
598917bf58
Update README.md
2021-05-11 13:39:41 -05:00
able
fafe6cf672
consider using able brand products
2021-05-05 07:33:40 -05:00
able
ac88a2e3c6
Brain fuck work
2021-05-04 22:23:17 -05:00
able
e2b7239992
README changes
2021-05-04 21:29:51 -05:00
able
f98c4d83d9
Minor Changes
2021-05-03 19:33:21 -05:00
Able
785ddda4cf
Merge pull request #15 from erindesu/master
...
Fixed some incompatible old code
2021-05-03 18:41:23 -05:00
Erin
1618262948
Tidy up
2021-05-03 23:02:19 +02:00
Erin
5bdbc2bbb0
Obeyed our paperclip overlord + fmt
2021-05-03 21:36:32 +02:00
Erin
7057c3cfef
Fixed some incompatible old code
...
- Added assignment support
- Reduced boilerplate
- Removed `else`
2021-05-03 21:35:43 +02:00
Erin
c0ecf5f2a3
Variable assignment implemented
2021-05-03 09:54:27 +02:00
Able
045ca17b52
Merge pull request #14 from erindesu/master
2021-05-03 02:17:38 -05:00
Erin
4b2d306ccb
Fixed #13
2021-05-03 08:47:52 +02:00
Able
a0b3f7c34a
Merge pull request #12 from erindesu/master
2021-05-02 12:49:30 -05:00
Erin
d80b5514ce
Added tests and loop flow
2021-05-02 18:12:51 +02:00
Erin
f8db60bc7c
Added T-Dark block
...
- obeyed clippy
2021-05-02 17:38:12 +02:00
Erin
ecd972e55d
Parser production ready
...
- TODO: T-Dark block
- cargo fmt
- Obeyed our clippy overlord
2021-05-02 16:48:33 +02:00
Erin
4a9b656093
Parser implements examples
...
- Function call is now stmt (muhehe)
2021-05-02 15:43:25 +02:00
Erin
91bd015e9b
Added basic math operations
...
- cargo fmt
2021-05-02 00:39:08 +02:00
Erin
d7cf1b013d
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
c26c4a14bb
Tidy up
2021-04-29 19:19:35 +02:00
Erin
5c00446c59
Implemented function calls
2021-04-29 18:50:51 +02:00
Erin
27a8de70fa
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
3e019621b2
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
345bed5f66
Merge pull request #10 from erindesu/master
...
Reimplemented parser
2021-04-27 09:26:29 -05:00
Erin
00a464321a
Added parsing of conditionals
2021-04-27 13:48:56 +02:00
Erin
fc8c3a3499
Made parser to throw error when unexpected EOF
2021-04-27 11:57:11 +02:00
Erin
2a0b2952d4
Redone original parser
...
= implemented original features
2021-04-27 11:49:07 +02:00
Erin
138b9efadc
Added testing for base55, new identifier lexing
2021-04-27 11:09:19 +02:00
Erin
83c549607c
Continue work on parser, improved lexer
...
- Added literal parsing (improved lexing)
- Revised error handling
2021-04-27 10:51:39 +02:00