Commits
- moved script logic from publish-macos-arm into its own script
- each individual platform has a wrapper script that calls
publish-artifact with appropriate architecture and target vars
swap argument order to show path before options in examples
better middle ground. also the unreachable line itself was...
unreachable
- evaluator tests are now organized and properly fleshed out
- new tests for future optimization testing and benchmarks
delay & data_oob were conflicted as both auto-dervived 'd' for their
flags. decided to specify all of them just to be safe
- implemented Arc to solve excessive cloning
- implemented NamedSource for richer errors
- updated tests
- bumped version to 0.8.0
- checked off ROADMAP milestone
miette prints relevant information with NamedSource alone, making this
redundant
used for miette pretty errors
each Token is now constructed/pushed into the vector directly
makes argument intent much clearer
- use slice pattern matching with Ok([]) instead of using r.is_empty()
- removed redundant closures from .map_err
- removed redundant return keyword in parser.rs
no longer considering it for this project
- split DataPointerOutOfBounds into DataPointerOutsideTapeLength and
DataPointerNegative
- split CellOutOfBounds into CellUnderflow and CellOverflow
- split IoError into IoReadError and IoWriteError
- removed a leftover comment
- current token in run loop now gets passed into each vm instruction
function for updated errors to access
- updated tokenizer to produce Token values instead of raw bytes,
storing byte value along with source position
- adjusted parse_brackets and VM::run to destructure the new Token type
for comparison and display
- paves the way for nicer error messages in the future
pairs well with tracing, allows you to watch your brainfuck scripts step
through in real-time
prints the current cell on tape, the value within, the current
instruction the interpreter is on, and where in the instructions the
VM::run function is at*
* although as of right now its just an integer pointing at the tokenized
string, not very useful if you have line breaks and such... still, its
a start!
- updated repeat test to account for new behavior
also bumped version number to 0.4.2
prints the current cell on tape, the value within, the current
instruction the interpreter is on, and where in the instructions the
VM::run function is at*
* although as of right now its just an integer pointing at the tokenized
string, not very useful if you have line breaks and such... still, its
a start!