Верховный Судья
Пользователь
Регистрация: 23.11.2010
Сообщений: 82
|
BrainFuck 2
Всем привет! Вот на днях от нечего делать накатал вторую версию языка brainfuck. В ней больше функций и, мне кажется, существенно проще в плане синтаксиса.
Использование:
Код:
[
'>' - следующая ячейка
,'<' - предыдущая ячейка
,',' - прибавление числа
,'.' - добавление строки
,'-' - вычитание числа
,'*' - умножение
,'/' - деление
,'@' - рандомное число (0..9), можно использовать в любом случае
,'[...]' - возвращает значение из определённой ячейки
,'^' - печатает значение текущей ячейки
,'?' - ввод значения в ячейку из вне
,'#' - системмная функция
,'|' - заканчивает открытую операцию (открывающий операнд)
,':' - очищает значение ячейки
]
{
Открывающий операнд - операнд, нужный для открытия арифметического действия, то есть, при сложении, запоминается число
начинающееся после открывающего операнда, и заканчивающимся перед Завершающим операндом.
Завершающий операнд - операнд, нужный для завершения открывающего операнда арифметического действия(,*-/), или
функции(#), идущего(ей) перед ним.
><| - операнды, завершающие операнды. При их использовании, происходит завершение предыдущего действия (если последнее
действие сложение, то произойдёт сложение, и т.п.) и действие, назначенное операнду (> - переход к следующей ячейке, и т.п.).
,*-/ - операнды, завершающие операнды, открывающие операнды. При их использовании, интерпретатор выполняет арифметические
действия с данной ячейкой, при этом, используется число, стоящее после данного операнда, и идущее до закрывающего:
Если вводить значение в ячейку без использования любых операндов, то значение текущей ячейки будет полностью заменено на
новое, для этого требуется обязательный закрывающий операнд |.
[x] - возвращает значение из ячейки в памяти номер x.
#x - открывающий операнд. Вызов системной функции №x. Если для неё требуется параметр, то она использует значение данной
ячейки, если 2 или более параметра, то значения из предыдущих ячеек по порядку, требует завершающий операнд.
Например:
,2,3| - в ячейку [0] будет сначала прибавлено число 2, потом число 3,
что в итоге даст число 5
,2,3 - в ячейку [0] будет сначала прибавлено число 2, а число 3 не будет
прибавлено, так как после него нету закрывающего операнда, что в
итоге даст число 2
>23><32|^ - в ячейку [1] будет занесено значение 23, затем заменено
значением 32, а затем распечатано, что в итоге даст :32
>23><32^ - в ячейку [1] будет занесено значение 23, a значением 32
ячейка [1] заменена не будет, так как после него нету закрывающего
операнда, а затем распечатано, что в итоге даст :23
hello>world>[0] [1]|^ - в ячейку [0] будет занесено слово hello, в ячейку
[1] будет занесено слово world, в ячейку [2] будет занесено слово hello
world, а затем распечатано, что в итоге даст :hello world
}
Пожалуйста, оцените работу . Если что-то непонятно, или заметили баг, то, пожалуйста, отпишитесь.
Последний раз редактировалось impulsgraw; 01.05.2012 в 22:06.
|