Skip to content
This repository was archived by the owner on Sep 24, 2024. It is now read-only.

SystemXFiles/jbrainfuck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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

About

Compiler for JVM, like JRuby and Jython only for Brainfuck

Resources

License

Stars

Watchers

Forks

Languages