Smallfuck is a very simple programming language by Nikita Ayzikovsky.
The following commands are available:
>
: To move the memory pointer to the right.<
: To move the memory pointer to the left.*
: To flip the bit on the memory pointer's location.[
: To jump to the instruction after the matching ]
.]
: To jump to the matching [
.If given an unbounded tape, it can be shown to be Turing complete by a reduction to Boolfuck or Brainfuck, which are both quite similar. For this example the tape is bounded however, and defined before execution.
Given a syntactically acceptable program, if the program was to halt, it will only do so after going past the last command or when going outside the boundaries of the memory tape.
If you want to know more about Smallfuck, visit Smallfuck on Esolang.
You may have already noticed that nothing but only the accepted commands are considered as part of the program. Feel free to add comments about your code.
This interpreter was implemented using WebAssembly through AssemblyScript, with the help of the as-bind library.
A big shout-out to the AssemblyScript community on Discord! Thank you for all your help.
The interface was made using PreactJS, and the Terminal CSS framework.
Hey there! I'm Juan Pablo Yamamoto, a computer scientist from Mexico City.
If you would like to check out the source code of this project, head over to the GitHub repository.
Also, you should check some of my other projects on GitHub as well, or my social networks: