/bf-interpreter

CLI interpreter for Brainfuck

Primary LanguageTypeScriptMIT LicenseMIT

Brainfuck CLI Interpreter

NodeJS Brainfuck and Brainfuck ♭ console interpreter

Install and use

Prerequisites

  1. NodeJS

Install

  1. npm i -g bfrun

Use

Command Properties Description
start <file> --verbose Runs brainfuck file
debug <file> --verbose Debug brainfuck project, add * to add a debug breakpoint
test <spec file> <to eval file> Unit test a brainfuck file with brainfuck, compare the memory result
help Help from the CLI

Brainfuck Flat (BFF / B♭)

BFF is a Brainfuck derivative inspired by Brainfuck++, it expands standard Brainfuck in two ways:

  1. Having two different memory arrays
    a. The register array has a fixed 16 cells
    b. The standard memory has a dynamic length, it doubles everytime the memory pointer moves past its length
  2. Adds this commands:
Command Specification
^ Swaps between memory strip and registers strip.
# Reads filename until a null byte is reached, input buffer will now be said file, pointer returns to original cell. If file doesn't exists the program will exit.
: Reads filename until a null byte is reached, dumps all non-zero memory except filename in said file. If file doesn't exists the program will exit.
:: Reads filename until a null byte is reached, writes file with no content, if a file already existis it will replace it.

Unit testing

Now you can unit test a brainfuck file with another brainfuck file! To use it first create a new brainfuck file, preferably name it like the file you want to test with a _spec after the name and with extension .bf. Inside the file start with the input to test and finish the input with a !, everything before the exclamation mark will be read as input for the evaluated BF.

Insert in memory the final memory dump you expect on the evaluated file. Example: This an example of addition of a + 2 sum_spec.bf

3!
++++++++++++++++++++++++++++++++++++++++++++++++++++

sum.bf

,>++[<+>-]

Then run the command bfrun test sum_spec.bf sum.bf

(If you want header comments on your spec file add it after the exclamation mark)