Added some examples to test the interpreter
This commit is contained in:
1
examples/hello-world.bf
Normal file
1
examples/hello-world.bf
Normal file
@@ -0,0 +1 @@
|
||||
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
|
||||
29
examples/print-0-99.bf
Normal file
29
examples/print-0-99.bf
Normal file
@@ -0,0 +1,29 @@
|
||||
++++++++++
|
||||
>++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
>++++++++++
|
||||
[
|
||||
|
||||
>++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
>++++++++++
|
||||
[
|
||||
|
||||
>++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
>++++++++++
|
||||
[
|
||||
<<<<<.
|
||||
>>.
|
||||
>>.+
|
||||
<<<<<.
|
||||
>>>>>>-
|
||||
]
|
||||
<----------------------------------------------------------
|
||||
|
||||
<<+
|
||||
>-
|
||||
]
|
||||
<----------------------------------------------------------
|
||||
|
||||
<<+
|
||||
>
|
||||
-
|
||||
]
|
||||
28
examples/rot13.bf
Normal file
28
examples/rot13.bf
Normal file
@@ -0,0 +1,28 @@
|
||||
-,+[ Read first character and start outer character reading loop
|
||||
-[ Skip forward if character is 0
|
||||
>>++++[>++++++++<-] Set up divisor (32) for division loop
|
||||
(MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero)
|
||||
<+<-[ Set up dividend (x minus 1) and enter division loop
|
||||
>+>+>-[>>>] Increase copy and remainder / reduce divisor / Normal case: skip forward
|
||||
<[[>+<-]>>+>] Special case: move remainder back to divisor and increase quotient
|
||||
<<<<<- Decrement dividend
|
||||
] End division loop
|
||||
]>>>[-]+ End skip loop; zero former divisor and reuse space for a flag
|
||||
>--[-[<->+++[-]]]<[ Zero that flag unless quotient was 2 or 3; zero quotient; check flag
|
||||
++++++++++++<[ If flag then set up divisor (13) for second division loop
|
||||
(MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero)
|
||||
>-[>+>>] Reduce divisor; Normal case: increase remainder
|
||||
>[+[<+>-]>+>>] Special case: increase remainder / move it back to divisor / increase quotient
|
||||
<<<<<- Decrease dividend
|
||||
] End division loop
|
||||
>>[<+>-] Add remainder back to divisor to get a useful 13
|
||||
>[ Skip forward if quotient was 0
|
||||
-[ Decrement quotient and skip forward if quotient was 1
|
||||
-<<[-]>> Zero quotient and divisor if quotient was 2
|
||||
]<<[<<->>-]>> Zero divisor and subtract 13 from copy if quotient was 1
|
||||
]<<[<<+>>-] Zero divisor and add 13 to copy if quotient was 0
|
||||
] End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3)
|
||||
<[-] Clear remainder from first division if second division was skipped
|
||||
<.[-] Output ROT13ed character from copy and clear it
|
||||
<-,+ Read next character
|
||||
] End character reading loop
|
||||
20
examples/simple-adder.bf
Normal file
20
examples/simple-adder.bf
Normal file
@@ -0,0 +1,20 @@
|
||||
++ Cell c0 = 2
|
||||
> +++++ Cell c1 = 5
|
||||
|
||||
[ Start your loops with your cell pointer on the loop counter (c1 in our case)
|
||||
< + Add 1 to c0
|
||||
> - Subtract 1 from c1
|
||||
] End your loops with the cell pointer on the loop counter
|
||||
|
||||
At this point our program has added 5 to 2 leaving 7 in c0 and 0 in c1
|
||||
but we cannot output this value to the terminal since it is not ASCII encoded
|
||||
|
||||
To display the ASCII character "7" we must add 48 to the value 7
|
||||
We use a loop to compute 48 = 6 * 8
|
||||
|
||||
++++ ++++ c1 = 8 and this will be our loop counter again
|
||||
[
|
||||
< +++ +++ Add 6 to c0
|
||||
> - Subtract 1 from c1
|
||||
]
|
||||
< . Print out c0 which has the value 55 which translates to "7"!
|
||||
Reference in New Issue
Block a user