Pancake Stack

From Esolang
Jump to navigation Jump to search

This page is a work in progress

Pancake Stack is a stack-based esoteric programming language created by User:JWinslow23 in 2013, in which programs require you to manipulate a stack of pancakes.

Syntax

The pancake stack starts out as empty.

Code Meaning
Put this X pancake on top! Push the word length of X on top of the stack, i.e. "wonderful" would push 9.
Eat the pancake on top! Pop the top value off of the stack, and discard it.
Put the top pancakes together! Pop off the top two values, add them, and push the result.
Give me a pancake! Input a number value and push it on the stack.
How about a hotcake? Input an ASCII character and push its value on the stack.
Show me a pancake! Output the top value on the stack as an ASCII character, but don't pop it.
Take from the top pancakes! Pop off the top two values, subtract the second one from the first one, and push the result.
Flip the pancakes on top! Pop off the top two values, swap them, and push them back.
Put another pancake on top! Pop off the top value and push it twice.
[label] Defines a label to go back to (Can also define a comment, if needed). When you go back to the label, it goes to the line number (1 indexed) of the top value of the stack when the label was defined.
If the pancake isn't tasty, go over to "label". Go to label [label] if the top value is 0.
If the pancake is tasty, go over to "label". Same as above, except go if the top value is not 0.
Put syrup on the pancakes! Increment all stack values.
Put butter on the pancakes! Increment only the top stack value.
Take off the syrup! Decrement all stack values.
Take off the butter! Decrement only the top stack value.
Eat all of the pancakes! Terminate the program.

Examples

Hello World!

Put this heavenly pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put syrup on the pancakes!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Show me a pancake!
Put this appetizing pancake on top!
Put this delectable pancake on top!
Put this delicious pancake on top!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Show me a pancake!
Put this wonderful pancake on top!
Take off the syrup!
Put the top pancakes together!
Show me a pancake!
Show me a pancake!
Put this rich pancake on top!
Take off the butter!
Put the top pancakes together!
Show me a pancake!
Put this delightful pancake on top!
Put this dainty pancake on top!
Put the top pancakes together!
Put another pancake on top!
Put the top pancakes together!
Show me a pancake!
Put this tasty pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put another pancake on top!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Put the top pancakes together!
Show me a pancake!
Eat the pancake on top!
Show me a pancake!
Put this good pancake on top!
Take off the butter!
Put the top pancakes together!
Show me a pancake!
Put this divine pancake on top!
Flip the pancakes on top!
Take from the top pancakes!
Show me a pancake!
Put this pleasant pancake on top!
Flip the pancakes on top!
Take from the top pancakes!
Show me a pancake!
Put this mouthwatering pancake on top!
Put this scrumptious pancake on top!
Put this enjoyable pancake on top!
Put the top pancakes together!
Put the top pancakes together!
Show me a pancake!
Eat all of the pancakes!

Cat program

Put this old pancake on top!
[CAT]
Eat the pancake on top!
Give me a pancake!
Show me a pancake!
If the pancake is tasty, go over to "CAT".
Eat all of the pancakes!

This is for numeric input. For ASCII input, replace "Give me a pancake!" with "How about a hotcake?"

Computational class

Pancake Stack is Turing complete assuming stack values are unbounded, as it can easily simulate a two-register Minsky machine using the top two stack values as registers.

Alternatively, if stack values are bounded, then Pancake Stack is not Turing complete, as it can be simulated by a push-down automaton. Some trick is needed to support incrementing/decrementing all values simultaneously, e.g. one could keep track of a separate value (in the automaton state) to be implicitly added to all stack values.

Implementations