В последнее время популярность эзотерического языка Brainfuck набирает обороты. Количество приложений, написанных на Brainfuck увеличивается не в арифметической, а даже в геометрической прогрессии. Очень похожая ситуация с Android.
Сегодня я решил запустить свой первый хелловорлд на этом языке. Я счастливый пользователь NetBSD на тостере, и у меня не получилось настроить интернет. Поэтому, я не смог воспользоваться уже готовыми решениями для запуска программ на Brainfuck'e.
Выход оставался один — написать интерпретатор самому. Из софта были только Bash и системные утилиты.
Сегодня я решил запустить свой первый хелловорлд на этом языке. Я счастливый пользователь NetBSD на тостере, и у меня не получилось настроить интернет. Поэтому, я не смог воспользоваться уже готовыми решениями для запуска программ на Brainfuck'e.
Выход оставался один — написать интерпретатор самому. Из софта были только Bash и системные утилиты.
$ cat bf.sh #!/bin/bash C="s[0]=0; p=0;" while read -n1 c; do case $c in \+) C="$C s[\$p]=\$((\${s[\$p]}+1));";; \-) C="$C s[\$p]=\$((\${s[\$p]}-1));";; \>) C="$C p=\$((\$p+1));";; \<) C="$C p=\$((\$p-1));";; \.) C="$C printf \\\\\$(printf '%03o' \${s[\$p]});";; \,) C="$C read -n1 c; s[\$p]=\`printf '%d' \"'\$c\"\`;";; \[) C="$C while [[ \${s[\$p]} > 0 ]]; do ";; \]) C="$C done;";; esac; done < $1; eval $C $ cat hello.b ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++ .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++. ------.--------.>+.>. $ ./bf.sh hello.b Hello World!