Hollywood supports the following logical operators:

The binary logical operators allow you to make decisions based on multiple conditions. Each binary logical operator needs two operands which are used to evaluate the result of the logical condition. All values that are not 0, Nil or the empty string ("") are considered True.

The `And`

and `Or`

operators use short-cut evaluation. This means that if the
first operand already defines the result, the second operand is not
evaluated at all. For example, if the first operand of an `And`

expression
is False (zero), then the second operand does not need to be evaluated
because the whole expression cannot be True anyway. The same applies to an
`Or`

expression if the first operand of it is True (non-zero). Then the whole
expression will always be True - no matter what value the second operand
has.

Please note: `And`

and `Or`

do not return the constant True (1) if they are
true. `And`

returns the second operand if it is true and `Or`

returns the first
operand if it is true. For example:

a = 5 And 4 ; a = 4 a = 5 And 0 ; a = 0 a = 0 And 4 ; a = 0 b = 5 Or 4 ; b = 5 b = 5 Or 0 ; b = 5 b = 0 Or 4 ; b = 4 |

The unary `Not`

operator will negate its operand. The result will always be
True (1) or False (0). If used on a string it will result in True if the
string is empty (""). For example:

a = Not True ; a = 0 (False) a = Not False ; a = 1 (True) a = Not 5 ; a = 0 (False) a = Not Not True ; a = 1 (True) a = Not "Hello" ; a = 0 (False) a = Not "" ; a = 1 (True) |

Please note: The `Not`

operator has a high priority. You will need parentheses in
most cases. For example, this does not work:

If Not a = -1 ; wrong! |

Hollywood will translate it to

If (Not a) = -1 |

because the `Not`

operator has a higher priority than the equality operator!
But obviously this translation does not make any sense because the result
of the expression in parentheses (Not a) will always be 0 or 1 but never ever -1.
Therefore, if you would like to check if a is not -1, you will have to use
parentheses around the expression with the lower priority:

If Not (a = -1) ; correct! |

See Operator priorities for details.

Show TOC