granite-docs/docs/reference.md

113 lines
2.9 KiB
Markdown
Raw Normal View History

2024-08-16 14:48:06 +01:00
# Operation reference
This is a reference of all the possible operations in the Granite programming language. This may be useful for those who have read through both the guidebook and all the further concepts who just need a refresher or those who have read the syntax introduction and prefer to learn by reading references.
## Set variable
Operation: `:>(value),(variable)`
Stores `(value)` into `(variable)`.
## Increment
Operation: `:^(variable)`
Adds 1 to `(variable)` if it is a number. Panics if not.
## Decrement
Operation: `:v(variable)`
Removes 1 from `(variable)` if it is a number. Panics if not.
## Print
Operation: `:!(variable)`
Outputs the value in `(variable)`.
## New label
Operation: `:@(label)`
Defines a new label at this location called `(label)`.
## Unconditional jump
Operation: `:<(label)`
Jumps to `(label)` without any condition.
## Jump if less than
Operation: `:-(label),(variable),(check)`
Jumps to `(label)` if `(variable)` is less than `(check)` which can be an integer or a variable.
## Jump if greater than
Operation: `:+(label),(variable),(check)`
Jumps to `(label)` if `(variable)` is greater than `(check)` which can be an integer or a variable.
## Jump if equal to
Operation: `:=(label),(variable),(check)`
Jumps to `(label)` if `(variable)` is equal to `(check)` which can be an integer or a variable.
## Arithmetic add
Operation: `:a(left),(right),(output)`
Performs `(left) + (right)` and stores the result into `(output)`
## Arithmetic subtract
Operation: `:s(left),(right),(output)`
Performs `(left) - (right)` and stores the result into `(output)`
## Arithmetic multiply
Operation: `:m(left),(right),(output)`
Performs `(left) * (right)` and stores the result into `(output)`
## Arithmetic divide
Operation: `:d(left),(right),(output)`
Performs `(left) / (right)` and stores the result into `(output)`
## Take input
Operation: `:?(variable)`
Prompts the user for input and stores it in `(variable)`. If `(variable)` is not initialised then prompt the user with a `? ` prompt otherwise prompt the user with the value of `(variable)`.
## Comment
Operation: `:0(comment)`
Does nothing but leaves a useful comment for programmers.
## String concatenation
Operation: `:*(left),(right),(output)`
Concatenates `(left)` and `(right)` into one string and places the result into `(output)`.
## Explicit exit
Operation: `:~`
Terminates the program at this point.
## Type check
Operation: `:&(variable),(output)`
Sets `(output)` to 1 if `(variable)` is an integer, otherwise sets `(output)` to 0.
## Stack push
Operation: `:#`
Pushes the current location to the stack, allowing the programmer to return out of a subroutine.
## Return
Operation: `:|`
Returns back to previously pushed location, panics if no location previously pushed.
## Variable clone
Operation: `:%(source),(target)`
Stores the value of `(source)` in `(target)`.
## Variable drop
Operation: `:$(variable)`
Deletes `(variable)`, effectively un-initialising it.