![]() |
Интерпретатор языка brainfuck
Вложений: 1
В последнее время заинтересовал принцип написания компиляторов/интерпретаторов. Начал с простого и весьма, судя по форуму, боянистого - интерпритатора языка brainfuck.
Писал на Virtual Pascal, но так же компилится и на Free Pascal (только у exe-шника уж совсем размер какой-то не приличный получается). Возможно будет и на дельфях как консольное приложение, но у меня их не стоит, проверить не могу. Исходный код, пара забавных программ на brainfuck прилагаются. В самом интерпритаторе применяется некоторая оптимизация, например сочитание операторов [-], [+] расценивается как установка текущей ячейки в ноль; операторов [<],[>] - как поиск первой левой или правой ячейки содержащей ноль; и длинные наборы операторов ++++++, --------, <<<<<<, >>>>>> выполняются как одна инструкция, а не по одиночке. Запуск: brainfk <имяфайла.bf> UPD: Добавил поддержку ANSI-последовательностей, например для hanoi.b Новые версии и подробности тут: http://tronix286.pochta.ru/brainfk/index.htm |
Ответ: Интерпритатор языка brainfuck
А зачем?
|
Ответ: Интерпритатор языка 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 прилагаются в первом сообщении. |
Ответ: Интерпритатор языка brainfuck
Повторюсь
Цитата:
|
Ответ: Интерпритатор языка brainfuck
Цитата:
|
Ответ: Интерпритатор языка brainfuck
Цитата:
|
Часовой пояс GMT +4, время: 14:08. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot