Esotope is a growing collection of implementations for esoteric programming languages("esolangs"). Its goals include:
The current implementation of Esotope is written in Ocaml. Historically some esolang implementations produced by me are also named esotope; they are being integrated to the Ocaml version as time permits.
The main usage of Esotope is to execute given code. This is done using
-f option which selects the input language:
$ cat hello.b ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<++++++++++++ +++.>.+++.------.--------.>+.>. $ esotope -f brainfuck hello.b Hello World! $ esotope hello.b Hello World!
Esotope is able to guess the input language from the file extension (in this case,
.b maps to Brainfuck). For the list of supported extensions and abbreviations use
Esotope is capable for converting various input languages to other languages. For example, one can convert the text (denoted by
text pseudo-language) to the Spoon code that prints that text with
$ echo Hello, world! | ./esotope -f text -t spoon -v | ./esotope -f spoon Found a path with 5 processors (weight=36): stream --(10)--> text --(10)--> brainfuck --(5)--> brainfuck-with-exit --(1)--> spoon --(10)--> buffer Hello, world!
-v option is used for showing the internal path between the input to the output. As there is no direct transformation between text and Spoon, it uses Brainfuck as an intermediate language.
As of 2011-09, Esotope supports the following languages:
...and the following non-trivial transformations:
For the historic reasons, various other implementations bear the name of Esotope:
esotope-bfc, Esotope Brainfuck compiler
esotope-minbf93for Befunge-93 (obfuscated)
esotope-migolfor Migol 09
esotope-whirlfor Whirl (obfuscated)
esotope-wsfor Whitespace (obfuscated)
Some implementations are completely suppressed by the current Esotope implementation: