Execute Brain****/Forth: Difference between revisions
Content added Content deleted
(→Source: bug) |
No edit summary |
||
Line 3: | Line 3: | ||
==Usage== |
==Usage== |
||
Load the code your preferred Forth environment. The code will define the word '''bf''' |
Load the code your preferred Forth environment. The code will define the word ''':bf"''' |
||
===Compiling Brainf*** code=== |
===Compiling Brainf*** code=== |
||
Let's say you have this sequence that prints a capital A: |
Let's say you have this sequence that prints a capital A: |
Revision as of 01:14, 4 December 2007
Execute Brain****/Forth is an implementation of Brainf***.
Other implementations of Brainf***.
Execute Brain****/Forth is part of RCBF. You may find other members of RCBF at Category:RCBF.
A Brainf*** compiler written by Ian Osgood in Forth.
Usage
Load the code your preferred Forth environment. The code will define the word :bf"
Compiling Brainf*** code
Let's say you have this sequence that prints a capital A:
++++++[>+++++++++++<-]>-.
You can compile it by using the bf word:
:bf" printA ++++++[>+++++++++++<-]>-."
Your Brainf*** code is now compiled in your Forth environment as the word printA. If you want to use a different word, replace printA with your preferred word.
Running the compiled Brainf*** code
Assuming you used the word printA from the above example, you can execute your code by running the word:
printA
Source
Tested in: GNU Forth
\ brainfuck compiler 1024 constant size : init ( -- p *p ) here size erase here 0 ; : right ( p *p -- p+1 *p ) over c! 1+ dup c@ ; : left ( p *p -- p-1 *p ) over c! 1- dup c@ ; \ range check? : compile-bf-char ( c -- ) case [char] [ of postpone begin postpone dup postpone while endof [char] ] of postpone repeat endof [char] + of postpone 1+ endof [char] - of postpone 1- endof [char] > of postpone right endof [char] < of postpone left endof [char] , of postpone drop postpone key endof [char] . of postpone dup postpone emit endof \ ignore all other characters endcase ; : :bf" ( name bfcode" -- ) : [char] " parse \ " postpone init bounds do i c@ compile-bf-char loop postpone swap postpone c! postpone ; ;