From bd3a2cd51c2085d1197b0efc7028334a35c5cc6f Mon Sep 17 00:00:00 2001 From: Geoff Date: Thu, 18 Aug 2022 00:18:26 +0200 Subject: [PATCH] added readme --- README.md | 15 +++++++++++++++ demo.png | Bin 0 -> 40862 bytes 2 files changed, 15 insertions(+) create mode 100644 README.md create mode 100644 demo.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..6c1d44c --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# brainfuck + +This is a brainfuck interpreter with an interractive mode written in rust which can read from files; you can also read from piped data but reading user input "," will not work. +It can also run in --interractive mode (-i) or with --verbose (-v) which for now only shows what the memory looks like after the code is executed. +If a file is specified in interractive mode it will run first. +You can quit with Control-C. + +## Building from source +You need to have rust and cargo installed and be in the project directory + + cargo build --release + +You can then find the executable at `target/release/brainfuck` or run with `cargo run --release` directly + +![demo](./demo.png) diff --git a/demo.png b/demo.png new file mode 100644 index 0000000000000000000000000000000000000000..57dc3dec2ce94a6bed583ad7c78b455ef05969ef GIT binary patch literal 40862 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