Category:Brainf***: Difference between revisions

From Rosetta Code
Content added Content deleted
m (Eso link)
(Fixed code tags)
Line 7: Line 7:
!align="left" |Meaning
!align="left" |Meaning
|-
|-
|style="text-align:center"|<code>></code>
|style="text-align:center"|<tt>></tt>
||increment the pointer (to point to the next cell to the right).
||increment the pointer (to point to the next cell to the right).
|-
|-
|style="text-align:center"|<code><</code>
|style="text-align:center"|<tt><</tt>
||decrement the pointer (to point to the next cell to the left).
||decrement the pointer (to point to the next cell to the left).
|-
|-
|style="text-align:center"|<code>+</code>
|style="text-align:center"|<tt>+</tt>
||increment (increase by one) the byte at the pointer.
||increment (increase by one) the byte at the pointer.
|-
|-
|style="text-align:center"|<code>-</code>
|style="text-align:center"|<tt>-</tt>
||decrement (decrease by one) the byte at the pointer.
||decrement (decrease by one) the byte at the pointer.
|-
|-
|style="text-align:center"|<code>.</code>
|style="text-align:center"|<tt>.</tt>
||output the value of the byte at the pointer.
||output the value of the byte at the pointer.
|-
|-
|style="text-align:center"|<code>,</code>
|style="text-align:center"|<tt>,</tt>
||accept one byte of input, storing its value in the byte at the pointer.
||accept one byte of input, storing its value in the byte at the pointer.
|-
|-
|style="text-align:center"|<code>[</code>
|style="text-align:center"|<tt>[</tt>
||jump forward to the command after the corresponding <code>]</code> if the byte at the pointer is zero.
||jump forward to the command after the corresponding <tt>]</tt> if the byte at the pointer is zero.
|-
|-
|style="text-align:center"|<code>]</code>
|style="text-align:center"|<tt>]</tt>
||jump back to the command after the corresponding <code>[</code> if the byte at the pointer is nonzero.
||jump back to the command after the corresponding <tt>[</tt> if the byte at the pointer is nonzero.
|}
|}


Alternatively, the <code>]</code> command may instead be translated as an unconditional jump '''to''' the corresponding <code>[</code> command, or vice versa; programs will behave the same but will run more slowly.
Alternatively, the <tt>]</tt> command may instead be translated as an unconditional jump '''to''' the corresponding <tt>[</tt> command, or vice versa; programs will behave the same but will run more slowly.


All other symbols, including traditional whitespace characters, are interpreted as comments.
All other symbols, including traditional whitespace characters, are interpreted as comments.

Revision as of 19:36, 26 January 2009

Language
Brainf***
This programming language may be used to instruct a computer to perform a task.
See Also:


Listed below are all of the tasks on Rosetta Code which have been solved using Brainf***.

Also known as Brainfuck. Created by Urban Müller in 1993 in an attempt to create the world's smallest Turing-complete compiler. It is noted as an esoteric programming language, as it is not ordinarily used for applications development, but it also noted as being a minimalist language.

The complete specification for the language can be summed up with the following eight symbols:

Character Meaning
> increment the pointer (to point to the next cell to the right).
< decrement the pointer (to point to the next cell to the left).
+ increment (increase by one) the byte at the pointer.
- decrement (decrease by one) the byte at the pointer.
. output the value of the byte at the pointer.
, accept one byte of input, storing its value in the byte at the pointer.
[ jump forward to the command after the corresponding ] if the byte at the pointer is zero.
] jump back to the command after the corresponding [ if the byte at the pointer is nonzero.

Alternatively, the ] command may instead be translated as an unconditional jump to the corresponding [ command, or vice versa; programs will behave the same but will run more slowly.

All other symbols, including traditional whitespace characters, are interpreted as comments.

Due to this minimal instruction set, Brainf*** is used as an introduction to compilers and has even been successfully implemented as a microprocessor core and the foundation to an operating system using a slightly extended syntax for output.

See also

  • RCBF - BF interpreters as a Rosetta Code task

Citations