![]() |
|
![]() ![]() ![]() |
|
iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
Здесь уже обсуждали язык HQ9+ И вот я создал итерпретатор другого эзотерического языка BrainFuck My-Soft Classic BrainFuck Interpreter 1.4 1. Общая информация Википедия 2. Запуск интерпретатора: а) Пользователям DOS следует ввести команду дк:пк\BF диск:путь\имя_файла.расш, где дк – Диск, на котором расположен интерпретатор пк – Путь к Интерпретатору диск – Диск, на котором расположен файл путь – Путь к файлу имя_файла – Имя файла расш – Расширение файла (обычно BF) После выполнения программы интерпретатор оставит код завершения. Его можно узнать, введя в командную строку: echo %ERRORLEVEL% Такая команда выведет на экран код завершения программы, в данном случае цифру 0, 1 или 2. Ниже указаны значения кодов завершения: 0 - Нормальное завершение 1 - Была прервана работа из-за ошибки открытия файла программы на языке BF 2 - Интерпретатор был запушен без указания в командной строке файла с программой на языке BF б) Пользователям Windows не следует запускать интерпретатор двойным кликом мыши по его значку, это не приведёт к его запуску, а следует открыть файл с программой на языке BF при помощи интерпретатора. Для этого навидите мышь на программу BF (файл с расширением bf), правой кнопкой мыши вызовете контекстное меню. Ввыбирите графу "Открыть с помощью", затем "Выбор программы из списка вручную". После этого нажмите кнопку "Обзор" и укажите путь к интерпретатору. Теперь программу на языке BF стало так же просто запускать, как и обычную EXE-программу, т.е. двойным кликом по её значку. Для упрощения работы с программами на языке BF (файлами с расширением .BF) нужно произвести необязательные настройки: Далее указаны заголовки кнопок и строк меню, по-очереди выбирая которые, можно произвести такие настройки 1) кнопка Пуск 2) Панель управления 3) Оформление и темы 4) Свойство папки 5) вкладка Типы файлов 6) Создать 7) в поле Расфирение набирите "BF" 8) OK 9) Дополнительно (если такой кнопки нет, то нажмите Восстановить, а только потом кнопку Дополнительно) 10) В текстовом поле введите "Программа BF" 11) Сменить значок 12) Обзор 13) Укажите путь к иконки программы BF (скачать ниже) 14) OK 15) Создать (кнопка на форме "Изменение свойств типа файлов") 16) В текстовом поле Действие введите "Запуск" 17) кнопка "Обзор" 18) укажите путь к интерпретатору 19) OK 20) Ещё раз нажмите кнопку Создать (на форме "Изменение свойств типа файлов") 21) В текстовом поле Действие введите "Редактировать" 22) кнопка "Обзор" 23) В текстовое поле Приложение, исполняющее действие скопируйте: C:\windows\system32\notepad.exe "%1" 24) OK 25) OK 26) Закрыть Теперь все файлы с расширением BF, то есть все программы на языке BrainFuck будут иметь свой значок, а вызвав их контекстное меню правой кнопкой мыши и выбрав графу Редактирование можно изменить их код в блокноте. Запустить программу BF стало так же просто, как и обычную EXE-программу, то есть двойным кликом мыши. Исходный код интерпретатора (TASM 4.1):
Открылся WEB-сервис для подсветки кода на BF. Если вам нужно вставить код BF в документ Word или Publisher, то этот сервис вам поможет. Просто скопируйте получившийся код с подсветкой туда, куда вам требуется. www.my-soft2008.narod.ru/bf.htm Вот страничка программы От сюда можно скачать интерпретатор отдельно или в архиве. Гостям форума это должно приготитья. http://my-soft2008.narod.ru/programs/bf.htm Ниже прикреплён архив с самим интерпретатором, эксклюзивным значком, примерами программ на BF (+ readme.txt объясняющий задачи, которые выполняют примеры программ; кодировка DOS) и информацией (руководство пользователя + информация о назначении областей оперативной памяти и регистров + исходный код интерпретатора на TASM 5.0) Это сообщение отредактировал(а) iff - 3.5.2010, 13:09 Присоединённый файл ( Кол-во скачиваний: 14 ) ![]() -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: нет Всего: 39 |
Ваш интерпретатор съест интерпретатор бреинфака на бреинфаке? Если да, то зачет:).
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
Что значит съест?
Он вроде как нормально исполняет все команды, но некоторые примеры от сюда http://esoteric.sange.fi/brainfuck/ не правельно исполняет. Скорее всего дело в индевидуальных особенностях моего интерпретатора:
нет отрицательных чисел Это сообщение отредактировал(а) iff - 12.12.2009, 20:59 -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
DeadLine |
|
|||
![]() Мыслитель ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 736 Регистрация: 16.2.2006 Где: Готем Репутация: нет Всего: 51 |
djamshud, значит не съест интерпретатор бреинфака на бреинфаке
![]() |
|||
|
||||
iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
Это зависит от того правильно ли он написан
P.S. Всёровно мне зачёт Это сообщение отредактировал(а) iff - 12.12.2009, 22:12 -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: нет Всего: 39 |
Не-не-не. Нетушки!:). Самому себе зачот ставить низя. На бреинфаке существует интерпретатор бреинфака. Когда он у вас заработает, приходите с зачеткой:).
Добавлено через 38 секунд >Это зависит от того правильно ли он написан это зависит от того, правильно ли написан ваш;). -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 4 Всего: 58 |
ыыыыыыыыыыыыыыыыыыыыыыыы ![]() ![]() ![]() ![]() Добавлено через 26 секунд (хотел в репу плюс дать, да нельзя :( ) |
|||
|
||||
iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
ОБНОВЛЕНИЕ
1) Я обнаружил ошибку работы интерпретатора, которая проявляется при выполнении вложенных циклов. Ошибка исправлена. 2) Добавлены другие примеры программ 3) Добавлена информация о интерпретаторе (руководство пользователя + информация о назначении областей оперативной памяти и регистров + исходный код интерпретатора на TASM 4.1) в архив Скачайте исправленную версию интерпретатора, информацию и примеры из архива, прикреплённого к первому посту совершенно бесплатно. Выкладывайте код интерпретатора BF на BF, только помните 3 особенности: 1) Каждая ячейка имеет тип данных byte В ячейку памяти можно записать число от 0 до 255 или 1 символ. 2) Замкнутость данных в ячейке Допустим, в ячейке 1, на которую направлен указатель, содержится число 255. В этом случае, при исполнении команды +, значение ячейки станет равным 0. Допустим, что эта ячейка имеет значение 0. При исполнении команды -, её значение станет равным 255. 3) Разомкнутая магазинная память Допустим, указатель ячейки памяти находится в позиции 29999. При выполнении команды >>> указатель выйдет за правый предел 30000, что вызовет ошибку исполнения программы. Допустим, указатель ячейки находится в позиции 0. При выполнении команды < указатель выйдет за левый предел 0, что вызовет ошибку исполнения программы. 4) Ввод осуществляется без эха При исполнении функции . (точка) с клавиатуры вводится символ в текущую ячейку при этом вводимый символ не отображается на экране. И самое главное: откуда должен считывать команды интерпретатор BF на BF? С клавиатуры? -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
megabist |
|
|||
![]() Mart Slaaf ![]() ![]() Профиль Группа: Участник Сообщений: 455 Регистрация: 3.4.2006 Где: Мск Репутация: нет Всего: 31 |
Интерпретатор брейнфака на брейнфаке - чума однозначно =)
-------------------- Don't panic! Жди, и Фатум тебя приведёт... |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: нет Всего: 39 |
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
ОБНОВЛЕНИЕ
1) Выложен исходник прямо на форум (предпредпоследний абзац первого сообщения в этой теме) 2) Открыт WEB-сервис для подсветки кода на BF (предпоследний абзац первого сообщения в этой теме) Это сообщение отредактировал(а) iff - 20.12.2009, 18:13 -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
iff |
|
||||||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
Я вот ещё несколько программ написал на BF:
1. Вводим 3 цифры, а программа в ответ символ, с таким ASCII-кодом:
2. Вводим строку, нажимаем <Enter>, а программа повторяет строку 50 раз:
3. Программы выводит надпись "Введите n, чтобы не зависнуть >", а затем ждёт введения символа. Если ввели n, то программа завершает действие, если что-либо другое, то начинается бесконечный цикл:
-------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
||||||
|
|||||||
iff |
|
||||||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
ОБНОВЛЕНИЕ
1. Я обнаружил ещё одну маленькую ошибочку: оказалось, что область магазинной памяти имеет размер не 30000 байт, а 30001 байт. 2. Я переделал загрузчик интерпретируемой программы, а именно ту часть, которая определяет параметры командной строки. В связи с чем размер исполняемого файла стал не 218 байт, а 213 байт. (Архив с изменённой программой скачайте из аттача в первом посте) 3. Я написал пару программ на языку BF: а) Теоритический шаблон программы Данная программа позволяет производить условный переход в зависимости от данных. Допустим, что в данный момент указатель находится на 1 ячейки, а все ячейки заполнены нулями. В этом случае программа будет сравнивать значение во 2 ячейки. Вот она:
Что значит условие и обратное условие? Условие представляет собой кусок программы, отнимающий n от текущей ячейки. Если значение во 2 ячейки равно n, то будет выполнятся подпрограмма "Выполняется если да", а если нет соответственно другая подпрограмма. Обратное условие представляет собой кусок программы, прибовляющий n к текущей ячейки. Пример условного перехода:
Данна программа работает так: 1)требует ввода с клавиатуры 2) Если ввели Enter (13), то выводит на экран белую рожу, если нет, то черную. А вот другая программа, работающая по такому же принципу:
Она выводит на экран: Math test 2+2=? А потом требует ввода с клавиатуры. Если ввели 4, то на экране пеоявляется надпись You are right! А если ввели что-то другое, то выводится You are wrong! Это сообщение отредактировал(а) iff - 4.1.2010, 22:03 -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
||||||
|
|||||||
iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
ОБНОВЛЕНИЕ
На своём сайте разместил страничку, посвящённую данной программе http://my-soft2008.narod.ru/programs/bf.htm -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: нет Всего: 39 |
Этот форум, я так понимаю - официальное зеркало вашего сайта? :D
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
![]() ![]() ![]() |
Добро пожаловать в раздел "Другие языки" форума Vingrad! | |
|
Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)
Приятного времяпрепровождения! С уважением, Void, kemiisto . |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Другие языки | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |