/jbrainfuck

Compiler for JVM, like JRuby and Jython only for Brainfuck

Primary LanguageJavaMIT LicenseMIT

Brainfuck interpreter and compiler for JVM

An interpreter and compiler Brainfuck under Java VM. It is written entirely in Java, Brainfuck source code can be interpreted in its VM or compiled into bytecode JVM, which optimizes and accelerates through JIT. If you are familiar with the projects JRuby, Jython, etc., then JBrainfuck is the same, only for Brainfuck.

Features

  • Interpretation
  • Compiling under JVM, execution and saved in "class file".
  • JIT (acceleration to 8x)
  • Optimization (minimize multiple operations and replacement typical)
  • Translation Brainfuck code to Java and C++
  • Other options (replacement for the standard I/O and memory size)

How to use?

//Hello World!
String code = 
	"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.++++++" +
	"+..+++.>++.<<+++++++++++++++. >.+++.------.--------.>+.>.";

Compiler compiler = new Compiler(code, true);
VirtualMachine vm = compiler.compile();
vm.run();

What kind of API available?

  1. Java Compiler - class to compile BrainFuck on the JVM
  2. BF Compiler - class to compile BrainFuck under its own VM
  3. VirtualMachine - class execution results compilation Java Compiler or BF Compiler
  4. Settings - stores in itself global setting the memory size and I/O variables
  5. Translator - translator BrainFuck to Java and C++

Articles about JBrainfuck

  1. About creating JBrainfuck (Russian)

Brainfuck интерпретатор и компилятор для JVM

Это интерпретатор и компилятор языка Brainfuck под Java VM. Он полностью работает на Java, исходный код Brainfuck может быть проинтерпретирован в своей VM или же скомпилирован в байткод JVM, который подвергается оптимизациям и JIT. Если вы знакомы с проектами JRuby, Jython и т.д., то JBrainfuck это тоже самое, только для Brainfuck.

Возможности

  • Интерпретация
  • Компиляция под JVM, выполнение и сохрание в class файл.
  • JIT (до 8 раз быстрее обычной интерпретации)
  • Оптимизации (сворачивание множественных операций и замена типичных)
  • Трансляция кода Brainfuck на языки Java и C++
  • Другие опции (замена стандартного ввода/вывода и размер памяти)

Как пользоваться?

//Hello World!
String code = 
	"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.++++++" +
	"+..+++.>++.<<+++++++++++++++. >.+++.------.--------.>+.>.";

Compiler compiler = new Compiler(code, true);
VirtualMachine vm = compiler.compile();
vm.run();

Какое API?

  1. Java Compiler - класс для компиляции BrainFuck под JVM
  2. BF Compiler - класс для компиляции BrainFuck под обычную VM
  3. VirtualMachine - класс для запуска результата компиляции Java Compiler или BF Compiler
  4. Settings - хранит в себе глобальные настройки размера памяти и переменные ввода/вывода
  5. Translator - транслятор BrainFuck на языки Java и С++

Статьи о JBrainfuck

  1. О создании JBrainfuck