Gibberish (programming language)

Gibberish is a Turing-complete (proof will come soon in the form of a BF interpreter written in Gibberish), stack-based programming language created by User:Javawizard. It's designed to be confusingly comprehensive. To that end, the instruction set is quite large, but every instruction is a letter, and each letter can mean something different depending on where it appears.

Syntax
With some exceptions, Gibberish is a character-based language. This means that every character in a Gibberish program (with the exception of inline strings, which use sets of square brackets) does a particular action. Gibberish is also a stack-based program, and, to an extent, reflective.

There are three instruction sets that can be used in a gibberish program. The commands e, f, g, and x are present in all of them with exactly the same meaning, and allow for switching between instruction sets. The command [ is also present in all instruction sets, as are 0 - 9.

A Gibberish program has a single stack that it can store data on. This is the only form of memory available to a Gibberish program. The stack can hold numbers and strings.

When a gibberish program is run, the interpreter starts from the beginning of the file and runs each character in sequence, starting with the first character. An instruction set is not specified when a gibberish program starts, so the first few instructions must switch the instruction set or use only commands, such as [, that are present on all instruction sets.

Spaces, tabs, and newlines are ignored when reading a gibberish program. All other invalid characters cause an error to occur.

=Instructions= Below is a set of tables describing the specific characters that are available for use in a Gibberish program.

All Instruction Sets
These commands are present on all instruction sets, and can be used in a Gibberish program before an instruction set is selected.

First Instruction Set
These commands are present in the first instruction set, which can be accessed with the e command.

Second Instruction Set
These commands are present in the second instruction set, which can be accessed with the f</tt> command.

Third Instruction Set
These commands are present in the third instruction set, which can be accessed with the g</tt> command.

=Examples=

Hello, world!
[Hello, world!]eo

Number List
Asks the user to enter a number, then prints out the numbers from 1 to that number, separated by spaces.

[Type a number.]eoli1a1g1[euq[ ]q1au2pfqn]w[]eo

Quine
[eu91a9m1augteqgbeq2agteqo]eu91a9m1augteqgbeq2agteqo

=Computational Class=

By the following conversion, Gibberish can simulate the running of Underload programs. Since Underload is Turing-complete, so is Gibberish. ~ gb : eu ! ev * ec ( [ ) ] a e91a9m1agtbec91a9m3agtec ^ fc S eq

=Interpreter=

A partially-complete interpreter, written in Java, is available here. The interpreter only implements a few instructions at present. If anyone wants to finish it up, feel free to contact Javawizard (see link at the top of the page).

A full interpreter written in Python is here. It should be a full implementation, but it is not an official one and it doesn't have Javawizard's blessing. It runs the examples fine though, and it implements every command.

= See also =
 * Gibberish/JavaScript, another language named Gibberish.