Stable
Jump to navigation
Jump to search
Stable is an esoteric programming language that can push only zeroes. The only way to get nonzero number is to preserve the initial stack. This language is inspired by Volatile. This language can be interpreted as deterministic subset of Volatile with initial stack of [1], instead of empty stack.
Notation
We use {stack}{program} notation. We also use <variable> for denoting variable. (...) is a single token that can be deconstructed to get its contents. Additionally, we use word "error" if the program errors. Output is indicated with output: clause after the rule.
Original State
The original state of the program is:
{1}{<program>}
Instruction
The instructions are the same as Volatile, but without ~. Rule above is favored over the bottom ones.
{<stack> a b}{+ <program>} => {<stack> a+b} {<program>} {<stack> a b}{- <program>} => {<stack> a-b} {<program>} {<stack> a b}{* <program>} => {<stack> a*b} {<program>} {<stack> a 0}{/ <program>} => error {<stack> a b}{/ <program>} => {<stack> a/b} {<program>} {<stack> a}{: <program>} => {<stack> a a} {<program>} {<stack> a}{. <program>} => {<stack> a} {<program>} output: a {<stack> 0}{(<loop>) <program>} => {<stack> 0} {<program>} {<stack> a}{(<loop>) <program>} => {<stack> a} {<loop> (<loop>) <program>} {<stack>}{<program>} => error