How ruarq/br4in works
Br4in is a C++ Brainfuck interpreter with two entry modes: run a source file or interact through a REPL. Both ultimately execute bytecode in a virtual machine; the REPL also exposes the VM’s memory view. The graph follows the sampled runtime code. The README’s optimization and GUI debugger items are planned, not implemented capabilities, so they are omitted.
Main entry points: Repl.cpp Interactive REPL · VirtualMachine.cpp Virtual machine · RunFile.cpp File runner · Parser.cpp Parser
Components 14
Entry modes
- CLI dispatch
source/Main.cpp - File runner
source/RunFile.cpp - Interactive REPL
source/Repl.cpp
Language frontend
- Tokenizer
source/Tokenizer.cpp - Token stream
source/Token.hpp - Parser
source/Parser.cpp - Parse tree
source/ParseTreeNodes.hpp
Compilation and execution
- Compiler
source/Compiler.cpp - Bytecode chunk
source/Chunk.cpp - Virtual machine
source/VirtualMachine.cpp - VM memory
source/VirtualMachine.hpp
Other components
- User
- Brainfuck file
- Console I/O
Connections 25
- User → CLI dispatch: select mode
- CLI dispatch → File runner: runs file
- CLI dispatch → Interactive REPL: starts REPL
- User → Brainfuck file: provides program
- Brainfuck file → File runner: file contents
- File runner → Virtual machine: interprets source
- User → Interactive REPL: enters code
- Interactive REPL → Tokenizer: tokenizes input
- Interactive REPL → Parser: parses tokens
- Interactive REPL → Compiler: compiles tree
- Interactive REPL → Virtual machine: interprets chunk
- Interactive REPL → VM memory: reads memory
- Tokenizer → Token stream: produces
- Parser → Token stream: consumes
- Parser → Parse tree: builds
- Compiler → Parse tree: visits
- Compiler → Bytecode chunk: writes bytecode
- Virtual machine → Tokenizer: tokenizes source
- Virtual machine → Parser: parses tokens
- Virtual machine → Compiler: compiles tree
- Virtual machine → Bytecode chunk: executes
- Virtual machine → VM memory: updates
- Virtual machine → Console I/O: reads and writes
- Interactive REPL → Console I/O: prompts and reports
- File runner → Console I/O: reports errors