Point Break

From Esolang
Jump to navigation Jump to search

Point Break is an esolang by User:PythonshellDebugwindow.

Storage

Point Break uses a variable system. Variables can hold unbounded signed integers.

Commands

Point Break has only four commands: LET, POINT, BREAK, and END. As well as this, # denotes a line comment.

LET

LET takes the syntax of LET var:=expr. It sets the variable var to the result of expr, where var is a series of lowercase letters. expr can be either a variable, a number, or an expression, which is a series of operator-separated variables and/or numbers (operators are + for addition, - for subtraction, * for multiplication, and / for integer division). ? can replace a number, and represents a number input by the user.

POINT

POINT takes the syntax of POINT label. It opens a new infinite loop with the label label, where label is a series of lowercase letters. Loops cannot be empty.

BREAK

BREAK takes the syntax of IF var BREAK label. Where var and label are both series of lowercase letters, it breaks out of the loop labeled label, as well as all its child loops and their (recursive) children.

END

END takes the syntax of END label. It closes the loop with the label label, as well as all its child loops and their (recursive) children (ends children as well to shorten code).

Examples

Infinite loop

LET zero:=0
POINT loop
IF zero BREAK loop
END loop

Truth-machine

LET n:=?
LET one:=1
POINT truth
POINT check
IF n BREAK check
IF one BREAK truth
END truth

Computational class

Point Break is Turing-complete, as it can simulate a Minsky machine. LET x:=x+1 to increment, LET x:=x-1 to decrement. While loops can be achieved; the following does <code> while user input is nonzero (do not change constantone):

LET n:=?
LET constantone:=1
POINT while
POINT check
IF n BREAK check
IF constantone BREAK while
END check
<code>
END while

This loop can be modified to use any condition, not just user input.