Objects are defined using statements that follow a regular set of syntactic rules. Briefly these include:
- Only one statement can occur per line, and each statement is fully expressed in that single line. There are no multi-line statements, and there is no line continuation symbol.
- Comments can occur on any line. The start of a comment signals the end of the statement. There are no embedded comments.
- There are two broad types of statements: namespace-object scoping statements, and keyword-value definition statements.
- Namespace names and object names may be of any length and may be composed of any Unicode character except these[ ] : . # = |
- Keyword names may be composed only of the 63 characters in the seta-z A-Z 0-9 _ (the alphanumerics plus the underscore).
- Scoping statements use hard brackets to surround the namespace-object name, and a colon: to separate the namespace from the object.
- Definition statements use an equals sign= to assign values to a keyword.
- Keywords that have scalar values (single values) are expressed using the simple assignment operator= .
- Keywords that have sets of values (arrays) are expressed with concatenation, using either a pipe| or a piped assignment operator|= .
- Keyword values may be referenced through variables, where the variable name is composed of a namespace, object, and keyword, prefixed with a dollar sign $.
- Single quotes and double quotes are not specially interpreted and have no syntactic meaning. They are always passed through to the interpreter as is.
- String values begin with the first non-whitespace character and end with the last non-whitespace character. Values cannot be expressed with leading or trailing spaces. A value consisting solely of a string of space characters is not possible.