Files
ground_fork/docs/syntax.md
2025-08-10 16:08:56 +10:00

172 lines
3.3 KiB
Markdown

## Ground Syntax Guide
### General syntax
Ground uses simple instructions and arguments to run code.
```
instruction arg1 arg2 arg3
```
As an example:
```
stdout "Hello, World!"
```
Reference a variable's value (a value reference) with a dollar sign:
```
stdout $myVar
```
Reference a variable itself (a direct reference) with an and sign:
```
stdin &myVar
```
Reference a line (a line reference) with a percent symbol before a line number:
```
jump %10
```
Alternatively, set a label:
```
@myLabel # The '@' symbol denotes setting a label
```
and jump to that (setting labels will be discussed below):
```
jump %myLabel
```
Reference a list (a list reference) with an asterisk:
```
setlist *myList $value1 $value2 # and so on
```
### Keywords
Note: &var can be replaced with any direct reference. $value can be replaced with a literal value or a value reference. %1 can be replaced with a line reference.
Note: In most of these functions, if a direct reference is used, the value outputted by that function will be avaliable at that variable. Any existing value inside that variable will be overwritten.
#### if
Make a decision based on a boolean. If the boolean is true, jumps to the line referenced.
Usage: `if $value %1`
#### jump
Jumps to the line referenced.
Usage: `jump %1`
#### end
Ends the program. Requires an integer for a status code.
Usage: `end $intvalue`
#### stdin
Allows input from the console.
Usage: `stdin &var`
#### stdout
Allows output to the console.
Usage: `stdout $value`
#### stdlnout
Allows output to the console, appending a new line at the end.
Usage: `stdlnout $value`
#### set
Allows you to set a variable to a value.
Usage: `set &var $value`
#### setlist
Allows you to initialize a list.
Usage: `setlist *list $value1 $value2 $value3...`
#### setlistat (WORK IN PROGRESS)
Sets a list item at an index. The item at the index must already exist. Lists are index 0.
Usage: `setlistat *list $intvalue $value`
#### getlistat
Gets a list item at an index, and puts it in the variable provided. The item at the index must already exist. Lists are index 0.
Usage: `getlistat *list $intvalue &var`
#### getlistsize
Gets the size of a list and puts it in the variable provided.
Usage: `getlistsize *list &var`
#### add
Adds two numbers. Numbers mean an integer or a double. Outputs to a direct reference.
Usage: `add $value $value &var`
#### subtract
Subtracts two numbers. Numbers mean an integer or a double. Outputs to a direct reference.
Usage: `subtract $value $value &var`
#### multiply
Multiplies two numbers. Numbers mean an integer or a double. Outputs to a direct reference.
Usage: `multiply $value $value &var`
#### divide
Divides two numbers. Numbers mean an integer or a double. Outputs to a direct reference.
Usage: `divide $value $value &var`
#### equal
Checks if two values are equal. Outputs a boolean to a direct reference.
Usage: `equal $value $value &var`
#### inequal
Checks if two values are not equal. Outputs a boolean to a direct reference.
Usage: `inequal $value $value &var`
#### greater
Checks if the left value is greater than the right value. Outputs a boolean to a direct reference.
Usage: `greater $value $value &var`
#### lesser
Checks if the left value is lesser than the right value. Outputs a boolean to a direct reference.
Usage: `lesser $value $value &var`