Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Delphi

Ответ
 
Опции темы
Старый 08.10.2009, 17:36   #1
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Интерпретатор языка brainfuck

В последнее время заинтересовал принцип написания компиляторов/интерпретаторов. Начал с простого и весьма, судя по форуму, боянистого - интерпритатора языка brainfuck.

Писал на Virtual Pascal, но так же компилится и на Free Pascal (только у exe-шника уж совсем размер какой-то не приличный получается). Возможно будет и на дельфях как консольное приложение, но у меня их не стоит, проверить не могу. Исходный код, пара забавных программ на brainfuck прилагаются.
В самом интерпритаторе применяется некоторая оптимизация, например сочитание операторов [-], [+] расценивается как установка текущей ячейки в ноль; операторов [<],[>] - как поиск первой левой или правой ячейки содержащей ноль; и длинные наборы операторов ++++++, --------, <<<<<<, >>>>>> выполняются как одна инструкция, а не по одиночке.

Запуск: brainfk <имяфайла.bf>

UPD: Добавил поддержку ANSI-последовательностей, например для hanoi.b Новые версии и подробности тут: http://tronix286.pochta.ru/brainfk/index.htm
Вложения
Тип файла: zip brainfk.zip (46.9 Кб, 612 просмотров)

Последний раз редактировалось Tronix, 11.10.2009 в 19:29.
(Offline)
 
Ответить с цитированием
Старый 08.10.2009, 20:10   #2
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Ответ: Интерпритатор языка brainfuck

А зачем?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Android (08.10.2009)
Старый 09.10.2009, 15:19   #3
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Интерпритатор языка brainfuck

just for fun.

Почти переписал с нуля. Теперь транслятор имеет некий пре-процессор, который сперва избавляется от всех символов, которые не являются опкодами BrainFuck, затем выполняет оптимизацию:
<<<<< = заменяется на p# (prev)
>>>>> = заменяется на n# (next)
+++++ = заменяется на i# (inc)
----- = заменяется на d# (dec)
[-],[=] = заменяется на z (zero)
[<] = заменяется на l (left)
[>] = заменяется на r (right)
В итоге код из 20Kb может сократится до 3-5Kb. Далее транслятор обрабатывает уже этот байт-код, повышая тем самым быстродействие.
Присутствуют ключи:
-c - создать на диске файл OUT.BC, содержащий в себе байт-код после пре-процессора.
-d - запретить препроцессор и выполнять обычным транслятором (если какие-то программы зависают).

Исходники и новый EXE с новыми программами для BrainFuck прилагаются в первом сообщении.
(Offline)
 
Ответить с цитированием
Старый 09.10.2009, 21:27   #4
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Ответ: Интерпритатор языка brainfuck

Повторюсь
Сообщение от WaReZ_MEN Посмотреть сообщение
А зачем?
(Offline)
 
Ответить с цитированием
Старый 09.10.2009, 21:29   #5
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Интерпритатор языка brainfuck

Сообщение от WaReZ_MEN Посмотреть сообщение
Повторюсь
Повторюсь - just for fun
(Offline)
 
Ответить с цитированием
Старый 10.10.2009, 09:37   #6
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Ответ: Интерпритатор языка brainfuck

Сообщение от Tronix Посмотреть сообщение
Повторюсь - just for fun
Твое дело куда сливать свое время...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Classical BrainFuck interpreter Chrono Syndrome PureBasic 3 01.08.2012 20:14
Brainfuck to Midlet Pascal anton_obuhov Основной форум 3 31.03.2009 13:09
Кол-во разриешенных символов в зависимости от языка MFL Основной форум 4 02.11.2007 19:26
Вопросы о архитектуре языка totm Blitz3D 36 09.07.2007 12:26
Создание языка kortesfil Алгоритмика 32 24.09.2006 13:12


Часовой пояс GMT +4, время: 01:30.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com