We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

Oh Wow anOther generic esoteric programming langUage Wow yoU are so creative

From Esolang
Jump to navigation Jump to search
This is still a work in progress. It may be changed in the future.

Oh Wow anOther generic esoteric programming langUage Wow yoU are so creative or just OwO-UwU for short is an esoteric programming language by user:raiseafloppafan7741 in 2026.

Overview

OwO-UwU is not a meta-language, however it sometimes looks like one.

There is a temporary stack, which as the name suggests is used to store temporaries. A program has scopes which may have variables.

Data types

The data types in OwO-UwU are:

Language methods

These work for CL, QACL, and TBF.

Run the thing with the program below it.

The above invokes the language with the program stored in the string below it on the stack, which is popped to.

Commands

Oh wow, a variable named [name].

The above declares a variable in the current scope. The name must follow the rules for identifiers in the book version of Lox.

Store into the variable [variable].

The above pops the top of the temporary stack and stores it in the given variable.

Get the variable [variable].

The above pushes the value of the given variable to the temporary stack.

An empty string? What?

The above pushes an empty string to the temporary stack.

What do you have to say?

The above reads a line of input as a string and pushes it to the temporary stack.

Here's what I have to tell you.

The above pops the top of the temporary stack and prints it, without a newline.

Arithmetic and comparison

Add the top two values on the stack.
Subtract the top two values on the stack.
Multiply the top two values on the stack.
Divide the top two values on the stack.
Modulo the top two values on the stack.
Are the top two values on the stack equal?
Are the top two values on the stack not equal?
Is the second from the top greater than the top of the stack?
Is the second from the top less than the top of the stack?
Is the second from the top greater than or equal to the top of the stack?
Is the second from the top less than or equal to the top of the stack?
Logical not of the top value on the stack.
<pre>

The above are self-explanatory, with the first element popped being on the right-hand-side of the operator. The first one can perform string and array concatenation.

=== Control flow ===

<pre class="rectwrap">
Oh wow, a block statement.
Oh wow, the end of a block statement.

The above two delimit a block statement. Block statements have their own scopes and allow variable shadowing.

Is the top of the stack truthy? If so, then run the following.
End if statement.

The above is an if-statement. It pops the top of the temporary stack and if it is truthy (not zero or an empty string) then it runs the instructions between the delimiters.

While the top of the stack is truthy, do the following.
Oh wow, the end of a block statement.

While loop. Similar to the if-statement but it jumps back to the start after every iteration.

Arrays

An empty array?

The above pushes an empty array to the temporary stack.

Get the Nth item from the collection

The above pops an array, then an integer index, then gets the Nth item of the array and pushes it to the stack.

Set the Nth item from the collection

The above pops an array, an integer index, then a value, then sets the Nth item of the array to the value then pushes the array back.

Languages

Oh wow, a language that prints "[text]". How interesting.

The above pushes to the temporary stack a Constant language object that returns [text] when you invoke it.

Oh wow, a language that prints "[text1]" or prints "[text2]" if the first one is a quine. Very very interesting indeed.

The above pushes to the temporary stack a Quine-avoiding constant language object that returns [text1] if the input program is not a quine, or [text2] if it is a quine.

Oh, it's one of those languages. The one where you replace "i" with "[string1]", "d" with "[string2]", "s" with "[string3]" and "o" with "[string4]".

The above pushes to the stack a Trivial deadfish substitution object.

Oh, it's one of those languages. The one where you replace "+" with "[string1]", "-" with "[string2]", "<" with "[string3]", ">" with "[string4]", "," with "[string5]", "." with "[string6]", "[" with "[string7]", and "]" with "[string8]".

The above pushes to the stack a Trivial BF substitution object.

Computational class

Since the language has a built-in trivial brainfuck substitution runner, OwO-UwU is Turing-complete. However, it can also run brainfuck by itself as it has arbitrary memory access and unbounded conditional and unconditional loops.

Examples

Hello, world! program

An empty string? What?
Oh wow, a language that prints "Hello, world!\n". How interesting.
Run the thing with the program below it.
Here's what I have to tell you.

Nope. interpreter

What do you have to say?
Oh wow, a language that prints "Nope.\n". How interesting.
Run the thing with the program below it.
Here's what I have to tell you.

As a meta-language imitation:

Oh wow, a language that prints "Nope.". How interesting.

Nope. without a quine interpreter

What do you have to say?
Oh wow, a language that prints "Nope.\n" or prints "lol no quine for you\n" if the first one is a quine. Very very interesting indeed.
Run the thing with the program below it.
Here's what I have to tell you.

BF interpreter

What do you have to say?
Oh, it's one of those languages. The one where you replace "+" with "+", "-" with "-", "<" with "<", ">" with ">", "," with ",", "." with ",", "[" with "[", and "]" with "]".
Run the thing with the program below it.

It's likely possible to create a BF interpreter without using the Trivial BF substitution object as OwO-UwU has many qualities of a typical imperative programming language.

See also