Ответ: Интерпритатор языка 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 прилагаются в первом сообщении.
|