OwOlang
Paradigm(s) | Imperative |
---|---|
Designed by | User:Error 27 |
Appeared in | 2023 |
Memory system | Cell-based |
Dimensions | One-dimensional |
Computational class | Unknown |
Reference implementation | OwOlang |
Influenced by | Brainfuck |
File extension(s) | .owo |
A very silly esolang :3
OwOlang is an esolang made by User:Error 27 in 2023. It consists entirely of "OwO" faces and its alternative forms.
Language overview
OwOlang is very similar to Brainfuck, in that its a one-dimensioanl language with a sequence of instructions. It has an infinite memory strip of 8-bit unsigned integers. There is an instruction- and a data pointer, both of which can be moved independently. There is also a single string register for output purposes.
Syntax
Every instruction consists of two separate tokens, with a w in between, with each token meant to represent an eye in an OwO-like face. The first eye is an action, and the second is a motion, which defines what the action will apply to. The motion is always a relative position to the data-pointer.
Limitations
The way the language is currently implemented, any additional spaces and line breaks cause errors. There is no input and no way to output numbers from the memory strip (unlike Brainfuck). All characters that are supposed to be output need to be hard coded in an instruction, which also means you cannot output a whitespace character (like space or tab).
Instruction set
Actions
Token | Description |
---|---|
O |
Select a cell (move the data pointer) |
^ |
Increment a cell |
- |
Decrement a cell |
U |
Empty the string register and enter the next few instructions, depending on the number in the referenced cell, whereby their action becomes the character and the cell referenced in the motion dictates how many times the character is repeated |
V |
Print out the string register the number of times in the referenced cell |
T |
Continue if the referenced cell is 0, else it skips the next instruction |
Q |
Continue if the referenced cell is NOT 0, else it skips the next instruction |
= |
Jumps forward the number of instructions in the referenced cell |
~ |
Jumps backward the number of instructions in the referenced cell |
Motions
Token | Description |
---|---|
U |
Apply action to currently selected cell |
O |
Apply action to next cell |
Q |
Apply action to previous cell |
p |
Apply action to a cell X spaces before the current cell
|
e |
Apply action to a cell X spaces after the current cell
|
T |
Apply action to the cell with the index held in the current cell |
Code examples
Hewwo!
^wU ^wO ^wO OwO ^wO ^wO ^wO ^wO ^wO UwO HwQ ewQ wwU owQ !wQ VwQ
External resources
- Original interpreter on GitHub (written in Rust, has to be compiled with Cargo)