Created
November 15, 2014 22:10
-
-
Save rolfwr/4f34e8d806933f06d816 to your computer and use it in GitHub Desktop.
A hello world program written in BrainFuck, run by a BrainFuck interpreter written in C#, compiled to IL and AOT compiled down to a portable Bourne shell script.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh | |
LC_CTYPE=C; export LC_CTYPE | |
charat() { if test -z $BASH; then r=$(expr substr $1 $(($2 + 1)) 1); else r=${1:$2:1}; fi } | |
p=0 | |
h=0 | |
i=0 | |
while true; do | |
case $i in | |
0) | |
eval "s${p}=\"++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.\"" | |
eval "l0=\$s${p}" | |
eval "s${p}=\$l0" | |
eval "a1=\$s${p}" | |
r=${#a1} | |
eval "s${p}=$r" | |
eval "l1=\$s${p}" | |
eval "s${p}=\"0\"" | |
eval "l2=\$s${p}" | |
eval "s${p}=\"0\"" | |
eval "l3=\$s${p}" | |
eval "s${p}=\"100\"" | |
r=o${h} | |
h=$((${h} + 1)) | |
eval "a1=\$s${p}" | |
eval "${r}_len=$a1" | |
while test $a1 != 0; do | |
a1=$((${a1} - 1)) | |
eval "${r}_${a1}=0" | |
done | |
eval "s${p}=$r" | |
eval "l4=\$s${p}" | |
i=16 | |
continue | |
i=1 | |
;; | |
1) | |
eval "s${p}=\$l0" | |
eval "s$(($p + 1))=\$l2" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
charat $a1 $a2; r=$(printf '%d' "'$r") | |
eval "s${p}=$r" | |
eval "l5=\$s${p}" | |
eval "s${p}=\$l5" | |
eval "s$(($p + 1))=\"62\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=2 | |
continue | |
fi | |
eval "s${p}=\$l3" | |
eval "s$(($p + 1))=\"1\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
r=$(($a1 + $a2)) | |
eval "s${p}=$r" | |
eval "l3=\$s${p}" | |
i=2 | |
;; | |
2) | |
eval "s${p}=\$l5" | |
eval "s$(($p + 1))=\"60\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=3 | |
continue | |
fi | |
eval "s${p}=\$l3" | |
eval "s$(($p + 1))=\"1\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
r=$(($a1 - $a2)) | |
eval "s${p}=$r" | |
eval "l3=\$s${p}" | |
i=3 | |
;; | |
3) | |
eval "s${p}=\$l5" | |
eval "s$(($p + 1))=\"43\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=4 | |
continue | |
fi | |
eval "s${p}=\$l4" | |
eval "s$(($p + 1))=\$l3" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
r=${a1}_$a2 | |
eval "s${p}=$r" | |
eval "a1=\$s${p}" | |
r=$a1 | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=$r" | |
eval "a1=\$s$(($p + 1))" | |
eval "r=\$${a1}" | |
eval "s$(($p + 1))=$r" | |
eval "s$(($p + 2))=\"1\"" | |
eval "a2=\$s$(($p + 2))" | |
eval "a1=\$s$(($p + 1))" | |
r=$(($a1 + $a2)) | |
eval "s$(($p + 1))=$r" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
eval "${a1}=${a2}" | |
i=4 | |
;; | |
4) | |
eval "s${p}=\$l5" | |
eval "s$(($p + 1))=\"45\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=5 | |
continue | |
fi | |
eval "s${p}=\$l4" | |
eval "s$(($p + 1))=\$l3" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
r=${a1}_$a2 | |
eval "s${p}=$r" | |
eval "a1=\$s${p}" | |
r=$a1 | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=$r" | |
eval "a1=\$s$(($p + 1))" | |
eval "r=\$${a1}" | |
eval "s$(($p + 1))=$r" | |
eval "s$(($p + 2))=\"1\"" | |
eval "a2=\$s$(($p + 2))" | |
eval "a1=\$s$(($p + 1))" | |
r=$(($a1 - $a2)) | |
eval "s$(($p + 1))=$r" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
eval "${a1}=${a2}" | |
i=5 | |
;; | |
5) | |
eval "s${p}=\$l5" | |
eval "s$(($p + 1))=\"46\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=6 | |
continue | |
fi | |
eval "s${p}=\$l4" | |
eval "s$(($p + 1))=\$l3" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
eval "r=\$${a1}_${a2}" | |
eval "s${p}=$r" | |
eval "a1=\$s${p}" | |
printf $(printf '\\%03o' $a1) | |
i=6 | |
;; | |
6) | |
eval "s${p}=\"0\"" | |
eval "l6=\$s${p}" | |
eval "s${p}=\$l5" | |
eval "s$(($p + 1))=\"91\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=8 | |
continue | |
fi | |
eval "s${p}=\$l4" | |
eval "s$(($p + 1))=\$l3" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
eval "r=\$${a1}_${a2}" | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=7 | |
continue | |
fi | |
eval "s${p}=\"1\"" | |
eval "l6=\$s${p}" | |
i=7 | |
;; | |
7) | |
i=8 | |
;; | |
8) | |
eval "s${p}=\$l5" | |
eval "s$(($p + 1))=\"93\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=10 | |
continue | |
fi | |
eval "s${p}=\$l4" | |
eval "s$(($p + 1))=\$l3" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
eval "r=\$${a1}_${a2}" | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=9 | |
continue | |
fi | |
eval "s${p}=\"-1\"" | |
eval "l6=\$s${p}" | |
i=9 | |
;; | |
9) | |
i=10 | |
;; | |
10) | |
eval "s${p}=\$l6" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=15 | |
continue | |
fi | |
eval "s${p}=\$l6" | |
eval "l7=\$s${p}" | |
i=14 | |
continue | |
i=11 | |
;; | |
11) | |
eval "s${p}=\$l2" | |
eval "s$(($p + 1))=\$l6" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
r=$(($a1 + $a2)) | |
eval "s${p}=$r" | |
eval "l2=\$s${p}" | |
eval "s${p}=\$l0" | |
eval "s$(($p + 1))=\$l2" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
charat $a1 $a2; r=$(printf '%d' "'$r") | |
eval "s${p}=$r" | |
eval "l8=\$s${p}" | |
eval "s${p}=\$l8" | |
eval "s$(($p + 1))=\"91\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=12 | |
continue | |
fi | |
eval "s${p}=\$l7" | |
eval "s$(($p + 1))=\"1\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
r=$(($a1 + $a2)) | |
eval "s${p}=$r" | |
eval "l7=\$s${p}" | |
i=14 | |
continue | |
i=12 | |
;; | |
12) | |
eval "s${p}=\$l8" | |
eval "s$(($p + 1))=\"93\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=13 | |
continue | |
fi | |
eval "s${p}=\$l7" | |
eval "s$(($p + 1))=\"1\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
r=$(($a1 - $a2)) | |
eval "s${p}=$r" | |
eval "l7=\$s${p}" | |
i=13 | |
;; | |
13) | |
i=14 | |
;; | |
14) | |
eval "s${p}=\$l7" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "s$(($p + 1))=\"0\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 = $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=11 | |
continue | |
fi | |
i=15 | |
;; | |
15) | |
eval "s${p}=\$l2" | |
eval "s$(($p + 1))=\"1\"" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
r=$(($a1 + $a2)) | |
eval "s${p}=$r" | |
eval "l2=\$s${p}" | |
i=16 | |
;; | |
16) | |
eval "s${p}=\$l2" | |
eval "s$(($p + 1))=\$l1" | |
eval "a2=\$s$(($p + 1))" | |
eval "a1=\$s${p}" | |
if test $a1 -lt $a2; then r=1; else r=0; fi | |
eval "s${p}=$r" | |
eval "l9=\$s${p}" | |
eval "s${p}=\$l9" | |
eval "a1=\$s${p}" | |
if test $a1 != 0; then | |
i=1 | |
continue | |
fi | |
break | |
exit 1 | |
;; | |
esac | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment