Напомню, что в предыдущей статье я поставил задачу написать интерпретатор для надстройки над Brainfuck. Естественно, что для начала нужно было реализовать сам Brainfuck, и только затем переходить к надстройке. Благо в предыдущей статье эта часть была реализована. Собственно опишем то, что следует реализовать в этой части:
За основу я взял язык Brainfuck он настолько мал, что можно немного расширив получить практически новый и достаточно функциональный язык программирования. И при этом не потерять изюминку исходного языка – мой язык будет все так же терзать мозг программиста, как и его родитель!
Итак, Brainfuck. Вкратце, идея такая, есть N регистров/ячеек. У программиста есть доступ к ним всем но перемещения по ним делаются явным образом. Т.е. из ячейки 2 нельзя перейти к ячейке 7 сразу, нужно последовательно.
“Ключевые слова” языка:
> – перейти на ячейку вправо.
< – перейти на ячейку влево.
+ – увеличить значение ячейки на единицу.
— – уменьшить значение ячейки на единицу.
, – прочесть значение в ячейку со стандартного устройства ввода.
. – напечатать значение ячейки стандартным устройством вывода.
[ – начать цикл while если значение текущей ячейки не равно 0 и перейти к следующей ячейке.
] – конец блока while. Продолжить цикл, если значение “условной” ячейки не равно 0 ( “условная ячейка” — ячейка на которой начался цикл ).