From c26ab169b4a4dc6894832575bb7093c706ef06f4 Mon Sep 17 00:00:00 2001 From: Nuno Pereira Date: Sun, 11 Feb 2024 02:07:14 +0000 Subject: [PATCH] Changed project name --- Cargo.toml | 2 +- README.md | 2 +- src/config/mod.rs | 2 +- src/interpreter/mod.rs | 4 ++-- test.bf | 46 +++++++++++++++++++++++++++++++++++++++--- 5 files changed, 48 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 94f814d..d92d2ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "bRainSuck" +name = "crusterfuck" version = "0.1.0" edition = "2021" diff --git a/README.md b/README.md index cf74cad..a791114 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# BrainSuck +# crusterfuck Rust interpreter for Brainfuck diff --git a/src/config/mod.rs b/src/config/mod.rs index 9d5fab0..831c835 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -13,7 +13,7 @@ pub struct Config { pub verbosity: Verbosity, } -pub static CONFIG_FILE_PATH: &'static str = "~/.config/bRainSuck/config.toml"; +pub static CONFIG_FILE_PATH: &'static str = "~/.config/crusterfuck/config.toml"; pub fn parse

(path: P) -> Result where diff --git a/src/interpreter/mod.rs b/src/interpreter/mod.rs index 1fac7c6..9b497d2 100644 --- a/src/interpreter/mod.rs +++ b/src/interpreter/mod.rs @@ -25,8 +25,8 @@ impl Interpreter { match token { Token::Inc => self.data[self.pointer] += 1, Token::Dec => self.data[self.pointer] -= 1, - Token::MoveLeft => self.pointer -= 1, - Token::MoveRight => self.pointer += 1, + Token::MoveLeft => self.pointer -= 1, // TODO: bounds checks + Token::MoveRight => self.pointer += 1, // TODO: bounds checks Token::Print => { let current_byte = self.data[self.pointer]; diff --git a/test.bf b/test.bf index 977d024..a86edf9 100644 --- a/test.bf +++ b/test.bf @@ -1,3 +1,43 @@ ->++++++++[<+++++++++>-]<.>++++[<+++++++>-]<+.+++++++..+++.>>++++++[<+++++++>-]<+ -+.------------.>++++++[<+++++++++>-]<+.<.+++.------.--------.>>>++++[<++++++++>- -]<+. \ No newline at end of file +[ This program (taken from https://en.wikipedia.org/wiki/Brainfuck) prints "Hello World!" and a newline to the screen; its + length is 106 active command characters. [It is not the shortest.] + + This loop is an "initial comment loop", a simple way of adding a comment + to a BF program such that you don't have to worry about any command + characters. Any ".", ",", "+", "-", "<" and ">" characters are simply + ignored, the "[" and "]" characters just have to be balanced. This + loop and the commands it contains are ignored because the current cell + defaults to a value of 0; the 0 value causes this loop to be skipped. +] +++++++++ Set Cell #0 to 8 +[ + >++++ Add 4 to Cell #1; this will always set Cell #1 to 4 + [ as the cell will be cleared by the loop + >++ Add 2 to Cell #2 + >+++ Add 3 to Cell #3 + >+++ Add 3 to Cell #4 + >+ Add 1 to Cell #5 + <<<<- Decrement the loop counter in Cell #1 + ] Loop until Cell #1 is zero; number of iterations is 4 + >+ Add 1 to Cell #2 + >+ Add 1 to Cell #3 + >- Subtract 1 from Cell #4 + >>+ Add 1 to Cell #6 + [<] Move back to the first zero cell you find; this will + be Cell #1 which was cleared by the previous loop + <- Decrement the loop Counter in Cell #0 +] Loop until Cell #0 is zero; number of iterations is 8 + +The result of this is: +Cell no : 0 1 2 3 4 5 6 +Contents: 0 0 72 104 88 32 8 +Pointer : ^ + +>>. Cell #2 has value 72 which is 'H' +>---. Subtract 3 from Cell #3 to get 101 which is 'e' ++++++++..+++. Likewise for 'llo' from Cell #3 +>>. Cell #5 is 32 for the space +<-. Subtract 1 from Cell #4 for 87 to give a 'W' +<. Cell #3 was set to 'o' from the end of 'Hello' ++++.------.--------. Cell #3 for 'rl' and 'd' +>>+. Add 1 to Cell #5 gives us an exclamation point +>++. And finally a newline from Cell #6 \ No newline at end of file