When faced with sub-expressions, the parser was not correctly advancing its iterator to the sub-expression's matching end parenthesis, causing it to evaluate inner conditions twice, and incorrectly terminate early when it reached the first end parenthesis. Added preprocessor flag NOTIFO_DEBUG to generate debug output to PutModule() to validate the expression parsing logic.
This option allows customization of the boolean logic used to determine how conditional values are used to filter notifications for channel messages. It evaluates as a full boolean logic expression, including the use of sub-expressions. The default value of "all" will bypass this evaluation and simply require all conditions to be true. The expression consists of space-separated tokens in the following grammar: * expression = expression operator expression | "(" expression ")" | value * operator = "and" | "or" * value = "true" | "false" | condition * condition = <any condition option> Also implemented EVAL command for testing purposes.