Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NBFC(1)			  Chaos	Contributed Software		       NBFC(1)

NAME
       nbfc -- The new brainfuck compiler

SYNOPSIS
       nbfc [options] file

DESCRIPTION
       nbfc is a new, completely portable compiler for the brainfuck
       programming language. It	will generate and compile C code or as an
       option a	Java application.

       nbfc is quite different from the	original brainfuck compiler by the
       language's inventor Urban Mueller:

       -   It's	portable. The original bfc was for the Amiga only. nbfc	should
       run on any unix-like system.

       -   It uses standard tools for its implementation and doesn't try to
       obfuscate the code.

       -   It can compile to C and supports the	''write	once, run anywhere''
       concept with  its capability to generate	Java applications.

OPTIONS
       -o file
	   Generate  an	 executable  by	 the name of file. If the -j switch is
	   given, this will be the name	of the Java Class generated.

       -k  Keep	generated intermediate code (C or Java).  The  default	is  to
	   delete  the .c or .java file	that was generated by the compiler and
	   just	keep the executable or the .class file,	respectively.

       -j  Generate and	compile	a Java class instead of	a  C  executable.  The
	   default is to use C as an intermediate language.

       -v  Be  verbose.	 By  invoking this switch, nbfc	will print out lots of
	   messages about the state of compilation.

       -g  Don't compile, just generate	intermediate file (C  or  Java).  This
	   can	be  used  for  debugging.  This	 also tells the	compiler no to
	   delete the generated	intermediate file, as if  the  -k  option  was
	   given.

       -c  Display  the	 copying  license.  The	 license is BSD-style and very
	   liberal.

       -h  Display a short help	screen.

INVOCATION
       When called without any options,	nbfc will translate the	brainfuck file
       given on	the command line to C and call a  C  compiler  to  produce  an
       executable.

       The  executable will have the name bf.out (this can be changed with the
       -o option). The intermediate C file always has the  name	 bf.out.c  and
       will be deleted if the -k option	is not present.

       When  using Java	as the intermediate language, the default name for the
       application is bf.out.class, the	default	name  for  the	Java  file  is
       bf.out.java.  Both  the	class name and the intermediate	Java code file
       name can	be changed with	the -o option.

THE LANGUAGE
       brainfuck is a simple enough language to	include	 the  entire  official
       language	 describtion  in  this	man  page.  The	 following is from the
       original	    brainfuck	  distribution	    by	    Urban      Mueller
       <umueller@amiga.physik.unizh.ch>, who also invented the language:

       ''The language brainfuck	knows the following commands:

	Cmd  Effect				    Equivalent in C
	---  ------				    ---------------
	+    Increases element under pointer	    array[p]++;
	-    Decrases element under pointer	    array[p]--;
	>    Increases pointer			    p++;
	<    Decreases pointer			    p--;
	[    Starts loop, counter under	pointer	    while(array[p]) {
	]    Indicates end of loop		    }
	.    Outputs ASCII code	under pointer	    putchar(array[p]);
	,    Reads char	and stores ASCII under ptr  array[p]=getchar();

       All  other  characters  are ignored. The	30000 array elements and p are
       being initialized to zero at the	beginning.  Now	while this seems to be
       a pretty	useless	language, it can be proven that	it can	compute	 every
       solvable	 mathematical  problem	(if we ignore the array	size limit and
       the executable size limit).''

BUGS
       There is	no checking for	balanced brackets; if these are	not  balanced,
       strange	things	may happen. The	compiler doesnt	optimize. There	really
       should be a backend that	generates assembly language code (at least for
       Intel and PowerPC machines) instead of only C and Java.

AUTHOR
       Jens Ohlig <jo@koeln.ccc.de>

3rd Berkeley Distribution					       NBFC(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=nbfc&sektion=1&manpath=FreeBSD+Ports+15.0>

home | help