Anonymous user
Category:Brainf***: Difference between revisions
Added some more description of the BF language and made it more consistent.
(Reasons for naming.) |
(Added some more description of the BF language and made it more consistent.) |
||
Line 1:
{{language|Brainf***|bnf=http://ninh.nl/blog/2008/10/25/brainfck-birds-of-a-feather-session-take-2/}}Also known as '''Brainfuck''', but identified as '''Brainf***''' for reasons described [[Rosetta Code:Brainf***|here]]. Created by Urban Müller in 1993 in an attempt to create the world's smallest Turing-complete compiler. It is noted as an [[:Category:Esoteric_Languages|esoteric programming language]], as it is not ordinarily used for applications development, but it also noted as being a minimalist language.
The
The complete specification for the language (the available state transitions of the Turing machine) can be summed up with the following eight symbols:
{| class="wikitable"
Line 14 ⟶ 16:
|-
|style="text-align:center"|<tt>+</tt>
||increment (increase by one) the
|-
|style="text-align:center"|<tt>-</tt>
||decrement (decrease by one) the
|-▼
|style="text-align:center"|<tt>.</tt>▼
||output the value of the byte at the pointer (usually interpreted to a character).▼
|-▼
|style="text-align:center"|<tt>,</tt>▼
||accept one byte of input (usually interpreted from a character), storing its value in the byte at the pointer.▼
|-
|style="text-align:center"|<tt>[</tt>
||jump forward to the command after the corresponding <tt>]</tt> if the
|-
|style="text-align:center"|<tt>]</tt>
||jump back to the command after the corresponding <tt>[</tt> if the
▲|-
▲|style="text-align:center"|<tt>.</tt>
▲|-
▲|style="text-align:center"|<tt>,</tt>
▲||accept one
|}
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
All other symbols, including traditional whitespace characters, are interpreted as comments.
Line 38 ⟶ 40:
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.
The definition of the <tt>.</tt> and <tt>,</tt> in the above table still has some ambiguities due to the many ways of converting 'numbers' to 'characters'. Urban Müller's ''smallest compiler'' converted between characters and numbers using the ASCII character set. The newline character is number ''10'' and a end of file on input is signalled by the cell value being unchanged when the <tt>,</tt> command completes. The <tt>,</tt> command uses line editing and waits for for the return key to be pressed.
==See also==
* [[RCBF]] - BF interpreters as a Rosetta Code task
|