Brainfuck/Esointerpreters

:This list is currently incomplete, please help add on anything that belongs.
This page contains brainfuck interpreters in other esolangs.
== Standard ==
===Exechars===
 (2b+1v)(2d-1v)(2ci1v)(2eo1v)(3e-1)(3c+1?1=0-1)(5b?1v=0/0)(0?5v=6-4?5v=7+4+5?0<4/0)(5d?1v!0/1)(1+4/2)(2-5?5v=6+4?5v=7-4?0<4/2)(3i5v?5v!8/4?5v=8/6)(4?5v=9/6+5/3)(6r5v-5rc+5/7)
 (7^5v>0*0>a?5v=8t0?5v=9t0/av+1v-1v?1v<0/5?b<1v/8+5/7)(5r100+1v)(8^1v>0*0>arav-1v)+0-0-1+4-4rc+5r5d+6r5b+7rffff+8r21+9rff+b/3t
(Cells wrap at 256, tape is infinite in one direction, using < at cell 0 does nothing, enter the code as ASCII values separated by commas, input is the "code" after a !)
(Remove the newline when actually running)
===Fueue===
*A nicer formatted version (but still utterly unreadable to known humanity) is available.
This interpreter simulates 8-bit cells, and makes no attempt to prepare for I/O characters larger than 255 if you should get a Fueue interpreter which takes Unicode seriously. It will treat input characters ≤0 all the same, and assumes EOF has this form, which I think so far only applies to the C interpreter. However it also supports the common ! convention for ending the code, thus allowing the brainfuck program to get input.
):[)~$)[[)[~~~~()+1])][0]$%~~1)][[)~<[)$%+-~)~~~43[)[~:~~~)<[)~~[)$--1[)~]<~~<)<[)$$7--1]][~~~)%[~~)~:(+-
)(~)+-1*256]+-~)255:]~]]!]~][)~<[)$%+-~)~~~45[)[~:~~~)<[)~~[)$--1[)~]<~~<)<[)$$6-%0]][~~~)*[)~(:+~~-)+1]-
--256%):]~]]!]~][)~<[)$%+-~)~~~62[)[~:~~~)<[)~~[)$--1[)~]<~~<)<[)$--%0]][))(($3~)<(]~]]!]~][)~<[)$%+-~)~~
~60[)[~:~~~)<[)~~[)$--1[)~]<~~<)<[)$--%0]][~~)<~~~(]~]]!]~][)~<[)$%+-~)~~~91[)[)~~[)~<[<<<~(~~~<)~][)[))$
12~[:]<<$4~~~<[)$--1[$8~)$4<[)$$6-%0[)]]<]~)~:~]~[!~)~~[)[)$--1[)~~~[)$4~[~):~~[~:~)~[)$$6-%0~~[$~])~]<~]
<~<]$3~[)$~~~%~~)]<~(~~<]~~<<~[0]]<<<:]]]<<[1)]])(~~)~]~~]<~[[~)~~!]):]]!]~][)~<[)$%+-~)~~~93[)[[85 110
109 97 116 99 104 101 100 32 93 46H][)~[))$11~<<~:(~:<]]~)~~~]!]~][)~<[)$%+-~)~~~46[)[~:~~~)<[)~~[)$--1[)
~]<~~<)<[)$%0]][):]~]]!]~][)~<[)$%+-~)~~~44[)[~:~~~)<[~~~~<)[)))~$([[)[~~~~()+1])][0]$%~~1)][)[)[~[0]~])]
[~!]]]~]]!]~][)~<[)$%+-~)~~~33[)[[)~[)[H]]~!][85 110 109 97 116 99 104 101 100 32 91 46H]~)~~~]!]~][)~<[)
$%+-~)~~~0[)[[)~[)[H]]~!][85 110 109 97 116 99 104 101 100 32 91 46H]~)~~~]!]~][)[~:)~]!]:]:]:]:]:]:]:]:]
:]:][0]~]][[0]:[[0]<:[[0]<:]][73 110 116 101 114 110 97 108 32 101 114 114 111 114 58 32 116 111 112 108
101 118 101 108 32 114 117 110 116 105 109 101 32 93 46H])~!][~)]
===Funciton===
Funciton/Brainfuckiton
===Glass===
{B[(c__)k<1>=j<1>=u<0>=][(af)/kkB!(_e)$(_e)*kv.?\k*][(ae)/jjB
!(_e)$(_e)*jw.?\j*][pu*][wk1=,][vj1=,][qu1=,]}{C[(c__)aA!iI!o
O!sS!r""(_f)ic.?=(_d)ie.?<0>ae.?=/(_d)(_f)*sa.?(_f)ic.?=(_d)i
e.?<0>ae.?=(_g)(_d)*=/(_g)(_d)(_f)*";"se.?<0>ae.?=(_g)<0>=\\=
tr*sl.?=b<0>=h$gB!][(ai)gp.?<1>as.?(_a)1<-1>ae.?=/(_a),<255>
(_a)<0>=\gq.?][(ah)(_a)b*t*a(lt).?=/(_a)h(ag).?b0*<1>a0.?=
(_a)b*t*a(lt).?=\][(ag)(_b)r*b*si.?=(_a)(_b)*"+"se.?=/(_a)h
(ad).?^\(_a)(_b)*"-"se.?=/(_a)h(ai).?^\(_a)(_b)*">"se.?=/(_a)
hy.?^\(_a)(_b)*"<"se.?=/(_a)hz.?^\(_a)(_b)*"["se.?=/(_a)h(ab)
.?^\(_a)(_b)*"]"se.?=/(_a)h(aa).?^\(_a)(_b)*"."se.?=/(_a)hx.?
^\(_a)(_b)*","se.?=/(_a)h(ac).?^\][(ad)gp.?<1>a0.?<256>a(mod)
.?gq.?][(ac)ic.?(_h)ie.?=/(_h)<0>gq.?,^\s(sn).?gq.?][(ab)(_a)
gp.?=/(_a)^\(_c)<1>=/(_c)b0*<1>a0.?=(_a)b*t*a(gt).?=/(_a)^\
(_b)r*b*si.?=(_a)(_b)*"["se.?=/(_a)(_c)0*<1>a0.?=(_a)<0>=\
(_a)(_b)*"]"se.?=/(_a)(_c)0*<1>as.?=(_a)<0>=\\][(aa)(_a)gp.?
<0>ae.?=/(_a)^\(_c)<1>=/(_c)b0*<1>as.?=(_a)b*<0>a(le).?=
/(_a)^\(_b)r*b*si.?=(_a)(_b)*"["se.?=/(_a)(_c)0*<1>as.?=(_a)
<0>=\(_a)(_b)*"]"se.?=/(_a)(_c)0*<1>a0.?=(_a)<0>=\\][zg(af).
?g1=,][yg(ae).?g1=,][xgp.?s(ns).?o0.?]}{M[m(_i)C!(_i)(ah).?]
}
===Kawa===
Raw text version at Kawa/Raw programs#brainfuck implementation
===MoreMathRPN===
MoreMathRPN/Brainfuck_interpreter
===Piet===
here
===Stringle===
 s "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++."
 
 a " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~?""
 g ":"
 @g 255
 g "." g
 
 #s 
 
 h .s h
 s :s
 c "c" #p
 f ""
 b ""
 m ""
 .h ">" p p "."
 .h "<" p :p
 .h "+" *c *c "."
 .h "-" *c :*c
 
 .h "." m "o"
 m "o" k #*c
 m "o" k1 #:::::::::::::::::::::::::::::::*c
 m "o" k 10 $ o
 m "o" k 10 o ""
 m "o" k !10 g1 g
 m "o" k !10 #g1 k1
 m "o" k !10 g1 g1 "a"
 m "o" k !10 o o *g1
 
 .h "," m "i"
 m "i" #i 0 i $
 m "i" k @i
 m "i" i :i
 m "i" g1 g
 m "i" #g1 k
 m "i" *c g1
 
 .h "[" *c "" f "."
 #f
 #f !0 h .s h
 #f !0 s :s
 #f !0 .h "[" f f "."
 #f !0 .h "]" f :f
 #f
 
 .h "]" *c !"" b "."
 #b
 #b !0 s .h s
 #b !0 h :h
 #b !0 .h "[" b :b
 #b !0 .h "]" b b "."
 #b
 
 #s
 
 $ o
 o ""
===Textile===
Textile/brainfuck
===Thue===
by User:Jan jelo
(input and output are unary numbers(each output wrapped by ( and )),the value of each cell is an unbounded natural number)
{0>}+::=+{0>}
{0>}-::=-{0>}
{0>}<::=<{0>}
{0>}>::=>{0>}
{0>}[::=[{0>}
{0>}]::=]{0>}
{0>}.::=.{0>}
{0>},::=,{0>}
{0>}p+::=p+{+|>}
{0>}p-::=p-{-|>}
{0>}p<::=p<{<|>}
{0>}p>::=p>{>|>}
{0>}p[::=p[{[|>}
{0>}p]::=p]{]|>}
{0>}p.::=p.{.|>}o(o
{0>}p,::=p,{,|>}
{+|>}+::=+{+|>}
{+|>}-::=-{+|>}
{+|>}<::=<{+|>}
{+|>}>::=>{+|>}
{+|>}[::=[{+|>}
{+|>}]::=]{+|>}
{+|>}.::=.{+|>}
{+|>},::=,{+|>}
{+|>}!::=!{+|>}
{+|>}|::=|{+|>}
{+|>}*::=*{+|>}
{+|>}q::={<1}q*
+{<1}::={<1}+
-{<1}::={<1}-
<{<1}::={<1}<
>{<1}::={<1}>
[{<1}::={<1}[
]{<1}::={<1}]
.{<1}::={<1}.
,{<1}::={<1},
!{<1}::={<1}!
|{<1}::={<1}|
*{<1}::={<1}*
p{<1}+::={0>}+p
p{<1}-::={0>}-p
p{<1}<::={0>}::={0>}>p
p{<1}[::={0>}p[
p{<1}]::={0>}p]
p{<1}.::={0>}.p
p{<1},::={0>},p
*q{<1}::=q{<1}*
|q{<1}::=|{<1}q
!q{<1}::=!|q{<1}
{-|>}+::=+{-|>}
{-|>}-::=-{-|>}
{-|>}<::=<{-|>}
{-|>}>::=>{-|>}
{-|>}[::=[{-|>}
{-|>}]::=]{-|>}
{-|>}.::=.{-|>}
{-|>},::=,{-|>}
{-|>}!::=!{-|>}
{-|>}|::=|{-|>}
{-|>}*::=*{-|>}
{-|>}q*::={<1}q
{-|>}q|::={<1}q|
{-|>}q)::={-|>}q|)
{<|>}+::=+{<|>}
{<|>}-::=-{<|>}
{<|>}<::=<{<|>}
{<|>}>::=>{<|>}
{<|>}[::=[{<|>}
{<|>}]::=]{<|>}
{<|>}.::=.{<|>}
{<|>},::=,{<|>}
{<|>}!::=!{<|>}
{<|>}|::=|{<|>}
{<|>}*::=*{<|>}
*{<|>}q::={<|>}q*
|{<|>}q::=q{<1}|
!{<|>}q::=!|{<|>}q
{>|>}+::=+{>|>}
{>|>}-::=-{>|>}
{>|>}<::=<{>|>}
{>|>}>::=>{>|>}
{>|>}[::=[{>|>}
{>|>}]::=]{>|>}
{>|>}.::=.{>|>}
{>|>},::=,{>|>}
{>|>}!::=!{>|>}
{>|>}|::=|{>|>}
{>|>}*::=*{>|>}
{>|>}q*::=*{>|>}q
{>|>}q|::=|{<1}q
{>|>}q)::={>|>}q|)
{[|>}+::=+{[|>}
{[|>}-::=-{[|>}
{[|>}<::=<{[|>}
{[|>}>::=>{[|>}
{[|>}[::=[{[|>}
{[|>}]::=]{[|>}
{[|>}.::=.{[|>}
{[|>},::=,{[|>}
{[|>}!::=!{[|>}
{[|>}|::=|{[|>}
{[|>}*::=*{[|>}
*{[|>}q::={[|>}q*
{[|>}q*::={<|[1}q*
{[|>}q|::={<|[0}q|
{[|>}q)::={[|>}q|)
+{<|[1}::={<|[1}+
-{<|[1}::={<|[1}-
<{<|[1}::={<|[1}<
>{<|[1}::={<|[1}>
[{<|[1}::={<|[1}[
]{<|[1}::={<|[1}]
.{<|[1}::={<|[1}.
,{<|[1}::={<|[1},
!{<|[1}::={<|[1}!
|{<|[1}::={<|[1}|
*{<|[1}::={<|[1}*
p{<|[1}[::=[{0>}p
+{<|[0}::={<|[0}+
-{<|[0}::={<|[0}-
<{<|[0}::={<|[0}<
>{<|[0}::={<|[0}>
[{<|[0}::={<|[0}[
]{<|[0}::={<|[0}]
.{<|[0}::={<|[0}.
,{<|[0}::={<|[0},
!{<|[0}::={<|[0}!
|{<|[0}::={<|[0}|
*{<|[0}::={<|[0}*
p{<|[0}[::=[{<2}p
+{<2}::={<2}+
-{<2}::={<2}-
<{<2}::={<2}<
>{<2}::={<2}>
[{<2}::={<2}[
]{<2}::={<2}]
.{<2}::={<2}.
,{<2}::={<2},
|{<2}::=*|{3>}
{3>}+::=+{3>}
{3>}-::=-{3>}
{3>}<::=<{3>}
{3>}>::=>{3>}
{3>}[::=[{3>}
{3>}]::=]{3>}
{3>}.::=.{3>}
{3>},::=,{3>}
{3>}p+::=+{3>}p
{3>}p-::=-{3>}p
{3>}p<::=<{3>}p
{3>}p>::=>{3>}p
{3>}p[::=[{<2}p
{3>}p]::=]{<4}p
{3>}p.::=.{3>}p
{3>}p,::=,{3>}p
+{<4}::={<4}+
-{<4}::={<4}-
<{<4}::={<4}<
>{<4}::={<4}>
[{<4}::={<4}[
]{<4}::={<4}]
.{<4}::={<4}.
,{<4}::={<4},
**|{<4}::=*|{3>}
(*|{<4}::=(|{0>}
{]|>}+::=+{]|>}
{]|>}-::=-{]|>}
{]|>}<::=<{]|>}
{]|>}>::=>{]|>}
{]|>}[::=[{]|>}
{]|>}]::=]{]|>}
{]|>}.::=.{]|>}
{]|>},::=,{]|>}
{]|>}!::=!{]|>}
{]|>}|::=|{]|>}
{]|>}*::=*{]|>}
*{]|>}q::={]|>}q*
{]|>}q*::={<|]1}q*
{]|>}q|::={<|]0}q|
{]|>}q)::={]|>}q|)
+{<|]1}::={<|]1}+
-{<|]1}::={<|]1}-
<{<|]1}::={<|]1}<
>{<|]1}::={<|]1}>
[{<|]1}::={<|]1}[
]{<|]1}::={<|]1}]
.{<|]1}::={<|]1}.
,{<|]1}::={<|]1},
!{<|]1}::={<|]1}!
|{<|]1}::={<|]1}|
*{<|]1}::={<|]1}*
p{<|]1}]::={<5}p]
+{<|]0}::={<|]0}+
-{<|]0}::={<|]0}-
<{<|]0}::={<|]0}<
>{<|]0}::={<|]0}>
[{<|]0}::={<|]0}[
]{<|]0}::={<|]0}]
.{<|]0}::={<|]0}.
,{<|]0}::={<|]0},
!{<|]0}::={<|]0}!
|{<|]0}::={<|]0}|
*{<|]0}::={<|]0}*
p{<|]0}]::={0>}]p
+{<5}::={<5}+
-{<5}::={<5}-
<{<5}::={<5}<
>{<5}::={<5}>
[{<5}::={<5}[
]{<5}::={<5}]
.{<5}::={<5}.
,{<5}::={<5},
|{<5}::=*|{6>}
{6>}+::=+{6>}
{6>}-::=-{6>}
{6>}<::=<{6>}
{6>}>::=>{6>}
{6>}[::=[{6>}
{6>}]::=]{6>}
{6>}.::=.{6>}
{6>},::=,{6>}
+{6>}p::={6>}p+
-{6>}p::={6>}p-
<{6>}p::={6>}p<
>{6>}p::={6>}p>
[{6>}p::={<7}p[
]{6>}p::={<5}p]
.{6>}p::={6>}p.
,{6>}p::={6>}p,
+{<7}::={<7}+
-{<7}::={<7}-
<{<7}::={<7}<
>{<7}::={<7}>
[{<7}::={<7}[
]{<7}::={<7}]
.{<7}::={<7}.
,{<7}::={<7},
**|{<7}::=*|{6>}
(*|{<7}::=(|{0>}
o*o::=~*
o(o::=~(
o)o::=~)
{.|>}+::=+{.|>}
{.|>}-::=-{.|>}
{.|>}<::=<{.|>}
{.|>}>::=>{.|>}
{.|>}[::=[{.|>}
{.|>}]::=]{.|>}
{.|>}.::=.{.|>}
{.|>},::=,{.|>}
{.|>}!::=!{.|>}
{.|>}|::=|{.|>}
{.|>}*::=*{.|>}
{.|>}q*::=*{.|>}qo*o
{.|>}q|::=qo)o{<1}|
{.|>}q)::={.|>}q|)
i::=:::
{,|>}+::=+{,|>}
{,|>}-::=-{,|>}
{,|>}<::=<{,|>}
{,|>}>::=>{,|>}
{,|>}[::=[{,|>}
{,|>}]::=]{,|>}
{,|>}.::=.{,|>}
{,|>},::=,{,|>}
{,|>}!::=!{,|>}
{,|>}|::=|{,|>}
{,|>}*::=*{,|>}
{,|>}q*::={,|>}q
{,|>}q|::=qi{<1}|
{,|>}q)::={,|>}q|)
PROGRAM::=++++++++[-<+++++++++>]<.
::=
(|{0>}pPROGRAM!q)
===Wenyan===
吾有一術。名之曰「腦」。欲行是術。必先得二言。曰「代碼」。曰「輸入」。
乃行是術曰。
	吾有一列。名之曰「带」。充「带」以零。
	有數一。名之曰「指針」。
	有數一。名之曰「代碼指針」。
	有數一。名之曰「輸入指針」。
	吾有一言。名之曰「輸出」。
	吾有一言。曰「「\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0¡¢£¤¥¦§¨©ª«¬\xad®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ」」。名之曰「字表」。
	恆為是。
		若「代碼指針」大於「代碼」之長者。
			乃止。
		云云。
		夫「代碼」之「代碼指針」。名之曰「命令」。
		若「命令」等於「「+」」者。
			夫「带」之「指針」。名之曰「值」。
			加「值」以一。昔之「值」者。今其是矣。
			除「值」以二百五十六。所餘幾何。昔之「带」之「指針」者。今其是矣。
		云云。
		若「命令」等於「「-」」者。
			夫「带」之「指針」。名之曰「值」。
			加「值」以二百五十五。昔之「值」者。今其是矣。
			除「值」以二百五十六。所餘幾何。昔之「带」之「指針」者。今其是矣。
		云云。
		若「命令」等於「「<」」者。
			減「指針」以一。昔之「指針」者。今其是矣。
		云云。
		若「命令」等於「「>」」者。
			加「指針」以一。昔之「指針」者。今其是矣。
			若「指針」大於「带」之長者。
				充「带」以零。
			云云。
		云云。
		若「命令」等於「「.」」者。
			夫「带」之「指針」。名之曰「值」。
			加「值」以一。昔之「值」者。今其是矣。
			夫「字表」之「值」。名之曰「字」。
			加「輸出」以「字」。昔之「輸出」者。今其是矣。
		云云。
		若「命令」等於「「,」」者。
			有數零。名之曰「编碼」。
			若「輸入指針」大於「輸入」之長者。
				昔之「带」之「指針」者。今零是矣。
			若非。
				夫「輸入」之「輸入指針」。名之曰「輸入字符」。
				夫「带」之「指針」。
				凡「字表」中之「字」。
					若「字」等於「輸入字符」者。
						乃止。
					云云。
					加「编碼」以一。昔之「编碼」者。今其是矣。
				云云。
				昔之「带」之「指針」者。今「编碼」是矣。
				加「輸入指針」以一。昔之「輸入指針」者。今其是矣。
			云云。
		云云。
		若「命令」等於「「[」」者。
			夫「带」之「指針」。名之曰「值」。
			若「值」等於零者。
				有數一。名之曰「括號」。
				有數零。名之曰「位置」。
				昔之「位置」者。今「代碼指針」是矣。
				恆為是。
					若「括號」等於零者。
						乃止。
					云云。
					加「位置」以一。昔之「位置」者。今其是矣。
					夫「代碼」之「位置」。名之曰「字符」。
					若「字符」等於「「[」」者。
						加「括號」以一。昔之「括號」者。今其是矣。
					云云。
					若「字符」等於「「]」」者。
						減「括號」以一。昔之「括號」者。今其是矣。
					云云。
				云云。
				昔之「代碼指針」者。今「位置」是矣。
			云云。
		云云。
		若「命令」等於「「]」」者。
			夫「带」之「指針」。名之曰「值」。
			若「值」不等於零者。
				有數一。名之曰「括號」。
				有數零。名之曰「位置」。
				昔之「位置」者。今「代碼指針」是矣。
				恆為是。
					若「括號」等於零者。
						乃止。
					云云。
					減「位置」以一。昔之「位置」者。今其是矣。
					夫「代碼」之「位置」。名之曰「字符」。
					若「字符」等於「「]」」者。
						加「括號」以一。昔之「括號」者。今其是矣。
					云云。
					若「字符」等於「「[」」者。
						減「括號」以一。昔之「括號」者。今其是矣。
					云云。
				云云。
				昔之「代碼指針」者。今「位置」是矣。
			云云。
		云云。
		加「代碼指針」以一。昔之「代碼指針」者。今其是矣。
	云云。
	吾有一言。曰「輸出」。書之。
是謂「腦」之術也。
注曰「「輸出輸入」」。
施「腦」於「「,[.,]」」於「「input」」。
注曰「「問天地好在（英文）」」。
施「腦」於「「++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.」」於「「」」。
By User:None1.
== dbfi derivatives ==
===StegFuck===
===TernLSB===
===Factor, Scratch is dumb, BrainZ===
Because dbfi is not public domain, these programs are moved here.
== Cheating ==
===OutputF===
 Input
 Fuck the input
====Opf====
 ifi
===Befunge/index.php===
A null character separates program and input.
 >~_X
===HQ9+B===
 B
==See also==
*Esointerpreters
Category:Implementations
Category:Brainfuck