Syntax Rules¶
Comments¶
Comments are defined as everything after and including the >
symbol on the
same line, as long as the >
is not in a string. Comments should be ignored
by the compiler. They can be freely used by the programmer, but their main
purpose is for GUI editors to store graphical information in them, like the
positions of nodes for example.
> This is a comment!
> This is still a comment! > Still the same comment...
Statements¶
Each statement represents a node in the sheet. Statements cannot span more than one line.
The most atomic syntax for a node is the name of the node on its own:
Start
This Start node has no connected inputs or outputs.
Note
Names are defined as any combination of alphanumeric and underscore (_
)
characters, but only if the name starts with a letter or an underscore.
Wire Identifiers and Node Outputs¶
Outputs of nodes are given as wire identifiers, which let inputs to other
nodes know which output to get their input from. They are given as a hashtag
(#
), followed by a positive integer.
Wire identifiers can then be defined as the outputs of nodes, in a
comma-seperated list after the ~
symbol, like so:
> #1 is an execution wire, since it is coming out of the Start node socket.
Start~#1
Arguments and Node Inputs¶
To provide inputs into nodes, you provide a comma-seperated list of either
literals or wire identifiers surrounded by (
and )
symbols
straight after the name of the node, like so:
NodeName(666, 3.14, "Hello, world!", true, #4, ...)
However, if there are no arguments you wish to give, then the brackets are not nessesary.
Note
In some nodes, you need to provide names as arguments.
> The node Set sets the value of a variable.
> integerVariableName is the name of the variable to set.
> #5 is the input execution wire.
> 99 is the value to set.
> #6 is the execution wire to activate after we've set the value.
Set(integerVariableName, #5, 99)~#6
General Statement Syntax¶
Bringing the outputs and inputs together, this is what a statement will look like:
NodeName(arg1, arg2, ...) ~ #1, #2, ...
In order to seperate statements, they will need to either have ;
symbols
or newlines \n
between them:
Start~#1; Print(#1, "Hello, world!")~#2
Print(#2, "Hi!")
Note
Whitespace should never matter.
Print ( # 9 , "Hello, world!" ) ~ # 56
> Is equivalent to...
Print(#9,"Hello, world!")~#56
Property Statements¶
Each property is represented by the name of the property and a list of
comma-seperated arguments surrounded by (
and )
. Both of these items
are surrounded by [
and ]
:
[PropertyName(arg1, arg2, ...)]
Property arguments however cannot include wire identifiers. They can be names, literals, or keyword representations of data types:
<
This creates a global variable called integerVariableName, which is an
Integer, with starting value 200.
>
[Variable(integerVariableName, Integer, 200)]