Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2012, 21:35   #1
impulsgraw
Верховный Судья
Пользователь
 
Аватар для impulsgraw
 
Регистрация: 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

}
Пожалуйста, оцените работу. Если что-то непонятно, или заметили баг, то, пожалуйста, отпишитесь.
Вложения
Тип файла: zip bf2.zip (387.1 Кб, 18 просмотров)

Последний раз редактировалось impulsgraw; 01.05.2012 в 22:06.
impulsgraw вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BrainFuck anGeee Помощь студентам 1 04.08.2016 13:37
Тестирование моего интерпретатора Brainfuck _-Re@l-_ Свободное общение 2 14.10.2011 18:41
интерпретатор Brainfuck на winapi Alex_under Win Api 0 02.05.2011 16:42
Интерпретатор Brainfuck Alex_under Общие вопросы C/C++ 6 01.05.2011 17:28
Процедурный Brainfuck tunyash Софт 0 17.06.2010 08:55