# Expressions

An expression is a value (a constant, a predefined constant, a variable or the result of a function), which may optionally be preceded by certain operators depending on the type of value, followed by an operator and another value, and so on.

For numeric expressions: { `number` | `constant` | `numeric function` | `numeric variable` } [ `operator` [ `sign` ] { `number` | `numeric function` | `numeric variable=} ... ]` [/cat/number] : a standard [/cat/number] constant : a [/cat/constant|predefined constant] that represents a numeric value numeric function : a user-defined or [/cat/intrinsic] that returns a numeric value operator : any of the standard [/cat/arithop|arithmetic operators] ( `+` `-` `*` `/` `^` `\` `[lang/div]` `[lang/mod]` plus `[/lang/and]` `[/lang/or]` or `[/lang/xor]`) numeric variable : any variable whose value is a number

For string expressions: { `string` | `string constant` | `string function` | `string variable=} [ & { =string` | `string constant` | `string function` | `string variable=} ... ]` string : a set of zero or more characters surrounded by " string constant : a [/cat/constant|predefined constant] that represents a string value string function : a user-defined or [/cat/intrinsic] that returns a string value string variable : any variable whose value is a string & : indicates that the string value to the right of the ampersand is to be concatenated to the end of the value to the right of the ampersand

For boolean expressions: [ `[/lang/not]` ] { `TRUE` | `FALSE` | `numeric constant` | `boolean constant` | `boolean function` | `boolean variable` } [ `boolean operator` [ `NOT` ] { `TRUE` | `FALSE` | `numeric constant` | `boolean constant` | `boolean function` | `boolean variable` } ... ] NOT : using `NOT` before a boolean value reverses the value TRUE or FALSE : the standard boolean constants numeric constant : a [/cat/number|standard number] which will be resolved to either `TRUE` or `FALSE` boolean constant : a [/cat/constant|predefined constant] that represents a boolean value boolean function : a user defined or [/cat/intrinsic] that returns `TRUE` or `FALSE` or resolves to `TRUE` or `FALSE` boolean variable : any variable whose value is `TRUE` or `FALSE` or resolves either to `TRUE` or `FALSE` boolean operator: `[/lang/and]` `[/lang/or]` `[/lang/xor]` `=` `<>` `<` `>` `<=` `>=` Note that if the expression consists of a number with the operator [/lang/and], `[/lang/or]`, or `[/lang/xor]` followed by a number, it will be treated as an arithmetic expression rather than a boolean expression. At least one of the values in the expression must be a boolean value to produce a boolean expression.

Note that a [/cat/number], [/cat/constant|predefined constant], [/cat/arith|arithmetic function] or numeric variable may be used as a boolean value. If the value of a number, numeric constant, numeric function, or variable is used in a boolean expression is zero, it resolves to `FALSE` ; all other numeric values used in a boolean expression resolve to `TRUE`.