git @ Cat's Eye Technologies Befunge-93 / develop-2.25 doc / bef.markdown
develop-2.25

Tree @develop-2.25 (Download .tar.gz)

bef.markdown @develop-2.25view markup · raw · history · blame

bef(1)

NAME

bef - interpret a Befunge-93 program

SYNOPSIS

bef [-d] [-o] [-u] [-q] [-i] [-=] [-l] [-t] [-r INPUTFILE] [-w OUTFILE] [-s STACKFILE] [-y DELAY] BEFFILE

DESCRIPTION

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.

IDIOSYNCRACIES

If BEFFILE does not end with a file extension, bef will helpfully append .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 -w (resp. -r) is not given, then , and . (resp. ~ and &) 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 -w and -r options whenever the -d option is used.

AUTHOR

Originally written by Chris Pressey; bugfixes and contributions from several contributors. See comments in the source code for more details.

SEE ALSO

bef2c(1), befprof(1), every other Befunge-93 implementation ever(1)