# Point Break

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.