bef.markdown @master — view markup · raw · history · blame
bef - interpret a Befunge-93 program
bef [-d] [-o] [-u] [-q] [-i] [-=] [-l] [-t]
[-r INPUTFILE] [-w OUTFILE] [-s STACKFILE] [-y DELAY]
Load the file BEFFILE as a Befunge-93 program and interpret it, terminating when the Befunge-93 program terminates.
bef takes a few options.
-d Run the program with a visual display of the playfield as it runs (debugger). See IDIOSYNCRACIES below for important notes. -o Old versions of `bef` contained an off-by-one error; this flag reproduces that behaviour, should it ever be needed to maintain backwards compatibility. -u Old versions of `bef` had undefined behaviour (inherited from C) if an EOF occurred during a `&` instruction; this flag reproduces that behaviour, should it ever be needed to maintain backwards compatibility. (The current behaviour is to push -1 onto the stack.) -q Suppress all output except for the output that the Befunge program itself produces. -i Suppress the warning that is displayed when `bef` attempts to execute an unsupported instruction. -= Instruct `bef` to interpret Befunge-97-style directives embedded in the source code as directives rather than as Befunge-93 instructions. -l Old versions of `bef`, when given an input program line longer than 80 characters, would wrap it into the next line when loading it; this flag reproduces that behaviour, should it ever be needed to maintain backwards compatibility. (The current behaviour is to truncate such lines.) -t Old versions of `bef`, when an `#` instruction was present at the very edge of the playfield, would wrap inconsistently when executing it; this flag reproduces that behaviour, should it ever be needed to maintain backwards compatibility. -r INPUTFILE Have the Befunge program, when it performs input (`~` or `&`), take that input from INPUTFILE instead of from standard input. -w OUTPUTFILE Have the Befunge program, when it performs output (`,` or `.`), send that output to OUTPUTFILE instead of to standard output. -s STACKFILE As the Befunge program runs, log the contents of the stack at each step to STACKFILE. -y DELAY Specify the delay, in milliseconds, between executing each instruction, when `-d` is being used. Has no meaning when `-d` is not being used.
If BEFFILE does not end with a file extension,
bef will helpfully
.bf to it before trying to load it, even if a file-extensionless
file by that name exists.
In most setups, if
-d is given, but
-r) is not given, then
&) will have no effect at all; in particular,
they will not pop anything or push anything onto the stack. This can
result in surprising behaviour when attempting to debug programs with I/O.
The simplest workaround is to give
-r options whenever the
-d option is used.
Originally written by Chris Pressey; bugfixes and contributions from several contributors. See comments in the source code for more details.
bef2c(1), befprof(1), every other Befunge-93 implementation ever(1)