Availability: Public Title: BuildGraph Script Conditions Crumbs: Description:Learn the syntax needed to write BuildGraph script conditions. version: 4.13 parent:Programming/Development/BuildGraph type:Reference tags:Programming tags:BuildGraph [VAR:TopicCompact] [OBJECT:TopicCompact] [PARAM:image] ![%Programming/Development/BuildGraph/ScriptAnatomy/Conditions%](conditional_topic.png) [/PARAM] [PARAM:icon] ![](%ROOT%/reference_icon.png)(convert:false) [/PARAM] [PARAM:title] %Programming/Development/BuildGraph/ScriptAnatomy/Conditions:title% [/PARAM] [PARAM:description] %Programming/Development/BuildGraph/ScriptAnatomy/Conditions:description% [/PARAM] [PARAM:path] [RELATIVE:Programming/Development/BuildGraph/ScriptAnatomy/Conditions] [/PARAM] [/OBJECT] [/VAR] [TOC(start:1 end:3)] [EXCERPT:BuildGraphScriptConditions] If you want to build logical complexity into your BuildGraph scripts, you'll need to work with conditionals. The following section introduces you to how BuildGraph conditions are written, including a list of conditional operators. ## Conditions BuildGraph script conditions consist of atoms and operators that evaluate to `true` or `false`. ### Atoms Atoms can be numbers, strings, or identifiers that are coerced to their appropriate type for the oprator using them. Atoms may be quoted with single (') or double (") quotes. They can also be an unquoted sequence of letters, digits, and underscore characters. All atoms are considered the same type, regardless of how they're declared. Additionally, atoms are considered case-insensitive for comparisons, which means that the strings "True" and 'true' are identical to the identifier `true` (despite the presence of quotes and differences in case). ## Operators A list of operators is specified below: | **Operator** | **Description** | **Precedence** | | ----------------------- | --------------------------------------------------------------------------- | --------------- | | `(x)` | Subexpression | 1 | | `!x` | Not operator | 1 | | `Exists(x)` | True if the x file exists. | 1 | | `HasTrailingSlash(x)` | True if x ends with a slash or backslash. | 1 | | `x == y` | Tests two atoms for equality (case insensitive). | 2 | | `x != y` | Tests two atoms for inequality (case insensitive). | 2 | | `x < y` | Compares whether the integer x is less than the integer y. | 2 | | `x <= y` | Compares whether the integer x is less than or equal to the integer y. | 2 | | `x > y` | Compares whether the integer x is greater than the integer y. | 2 | | `x >= y` | Compares whether the integer x is greater than or equal to the integer y. | 2 | | `x and y` | True if both arguments are `true`. | 3 | | `x or y` | True if either argument is `true`. | 4 | [REGION:note] The `'<'` and `'>'` characters must be escaped as `"<"` and `">"` in XML. [/REGION] [/EXCERPT:BuildGraphScriptConditions]