Brainfuck interpreter by NikNakk

x=c(as.integer(charToRaw(readLines("stdin"))),0)
l=length
w=which(x==33)[1]
if(!is.na(w)){z=x[-(1:w)];x=x[1:(w-1)]}
i=o=0
k=j=1
p=rep(0,99)
while(i<l(x)){
i=i+1
y=x[i]
j=j+(y==62)-(y==60)
p[j]=p[j]+(y==43)-(y==45)
if(y==46)o=c(o,p[j])
if(y==44){p[j]=z[k];k=k+1}
if(y==91&&p[j]==0){m=1;while(m>0){i=i+1;m=m+(x[i]==91)-(x[i]==93)}}
if(y==93&&p[j]!=0){m=1;while(m>0){i=i-1;m=m-(x[i]==91)+(x[i]==93)}}
}
cat(rawToChar(as.raw(o[-1])))

Note that non-ascii characters in the above source code will be escaped (such as \x9f).

download

return to the top page