129

From Esolang
Jump to navigation Jump to search

129 is an esoteric programming language by User:TonyBrown148. It is a language with 1 type of data structure, 2 symbols, and 9 operations. In 129 the only valid data structure is stacks, and 129 supports running a 129 program inside one.

129 is Turing-complete, as it can implement SKI calculus, making it a Turing tarpit.

Language Specs

Version Stack

The version stack is a stack with 3 values that specifies the version of the 129 language. The current version of the 129 language specs is 0.2.0, and the signifing version stack is

(()(()())())

Comments

Any character not a brace is a comment in 129.

Stack Representation

A stack is represented using braces. The left brace is at the top of the stack, while the right brace is at the bottom. For example, () represents an empty stack.

Operations

Operation Name Representation Explanation
Insert ((X)) Insert X into the stack. The original order is preserved.
Delete ((())()) Pops a value from the main stack.
Duplicate ((())(()())) Duplicates the value on the top of the main stack.
Push ((()(()))()) Pops stack s, pops value v, pushes v into s and pushes s back.
Pop (((()()))(()(()))) Pops stack s, pops value v from stack s, pushes v, and pushes s back.
Release (((()()))(()())) Pops stack s, pushes all the value into the main stack, preserving their original order.
Run ((((()))())(())) Pops stack s, executes the items of s as an 129 program.
Input (()((()()))) Inputs a character and pushes a stack that contains that number of empty stacks into the main stack.
Output (((()()))()) Pops stack s from the main stack and outputs the character signified by its size.

Error Handling

A 129 program immediately terminates if any command could not be performed. If the current program is executed using the Run command, the run command stops, otherwise the entire program ends.

Examples

Users are encouraged to add their own examples.

Cat program

(()(()())()) Version Stack
((( Pushes a stack that contains:
 (()((()()))) Input
 (((()()))()) Output
 ((())(()())) Duplicate
 ((((()))())(())) Run
)( And push the same stack again.
 (()((()()))) Input
 (((()()))()) Output
 ((())(()())) Duplicate
 ((((()))())(())) Run
)))
((((()))())(())) And run the program.

Or, without comments:

(()(()())())((((()((()())))(((()()))())((())(()()))((((()))())(())))((()((()())))(((()()))())((())(()()))((((()))())(())))))((((()))())(()))

Interpreters

Interpreter written in Node.js by User:Hakerh400.