brainfuck: Remove concept of operations now that it is compiled.
parent
67a36883fe
commit
2a5db1abd9
|
@ -8,13 +8,10 @@ IN: brainfuck
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
TUPLE: brainfuck pointer memory ops ;
|
TUPLE: brainfuck pointer memory ;
|
||||||
|
|
||||||
: <brainfuck> ( -- brainfuck )
|
: <brainfuck> ( -- brainfuck )
|
||||||
0 H{ } clone 0 brainfuck boa ;
|
0 H{ } clone brainfuck boa ;
|
||||||
|
|
||||||
: max-ops? ( brainfuck -- brainfuck )
|
|
||||||
[ 1 + dup 10000 > [ "Max operations" throw ] when ] change-ops ;
|
|
||||||
|
|
||||||
: get-memory ( brainfuck -- brainfuck value )
|
: get-memory ( brainfuck -- brainfuck value )
|
||||||
dup [ pointer>> ] [ memory>> ] bi at 0 or ;
|
dup [ pointer>> ] [ memory>> ] bi at 0 or ;
|
||||||
|
@ -23,25 +20,25 @@ TUPLE: brainfuck pointer memory ops ;
|
||||||
over [ pointer>> ] [ memory>> ] bi set-at ;
|
over [ pointer>> ] [ memory>> ] bi set-at ;
|
||||||
|
|
||||||
: (+) ( brainfuck -- brainfuck )
|
: (+) ( brainfuck -- brainfuck )
|
||||||
get-memory 1 + 255 bitand set-memory max-ops? ;
|
get-memory 1 + 255 bitand set-memory ;
|
||||||
|
|
||||||
: (-) ( brainfuck -- brainfuck )
|
: (-) ( brainfuck -- brainfuck )
|
||||||
get-memory 1 - 255 bitand set-memory max-ops? ;
|
get-memory 1 - 255 bitand set-memory ;
|
||||||
|
|
||||||
: (?) ( brainfuck -- brainfuck t/f )
|
: (?) ( brainfuck -- brainfuck t/f )
|
||||||
max-ops? get-memory 0 = not ;
|
get-memory 0 = not ;
|
||||||
|
|
||||||
: (.) ( brainfuck -- brainfuck )
|
: (.) ( brainfuck -- brainfuck )
|
||||||
get-memory 1string write max-ops? ;
|
get-memory 1string write ;
|
||||||
|
|
||||||
: (,) ( brainfuck -- brainfuck )
|
: (,) ( brainfuck -- brainfuck )
|
||||||
read1 set-memory max-ops? ;
|
read1 set-memory ;
|
||||||
|
|
||||||
: (>) ( brainfuck -- brainfuck )
|
: (>) ( brainfuck -- brainfuck )
|
||||||
[ 1 + ] change-pointer max-ops? ;
|
[ 1 + ] change-pointer ;
|
||||||
|
|
||||||
: (<) ( brainfuck -- brainfuck )
|
: (<) ( brainfuck -- brainfuck )
|
||||||
[ 1 - ] change-pointer max-ops? ;
|
[ 1 - ] change-pointer ;
|
||||||
|
|
||||||
: compose-all ( seq -- quot )
|
: compose-all ( seq -- quot )
|
||||||
[ ] [ compose ] reduce ;
|
[ ] [ compose ] reduce ;
|
||||||
|
|
Loading…
Reference in New Issue