Programmer Guide/Concepts/Conditional Expressions: Difference between revisions

From STX Wiki
Jump to navigationJump to search
(initial import)
 
m (1 revision: Initial import)
(No difference)

Revision as of 17:31, 18 November 2010

condition

All commands using conditions (IF, DO, block-IF) use the same syntax and evaluation rules. A condition consists of one or more comparisons which are joined with logical (binary) operators. Each comparison compares two values and can evaluate to true or false.

condition = comparison [loperator comparison loperator .. comparison loperator]

comparison
A comparison comprising two expressions separated by a comparison operator. There are two types of comparison supported - see below for comparison operators for details. Both types of comparison can be used within one IF command.
loperator
A logical operator, which combines the results of two comparisons. Logical operators are evaluated strictly from left to right; bracketing is not possible.

Logical Operators

The logical operators supported by S_TOOLS-STx conditional commands are the following:

AND returns true if both comparison results are true
&& the same as AND
OR returns true if either of the comparison results are true
|| the same as OR


Comparison Operators

S_TOOLS-STx supports two types of comparison operator:

1) Simple comparison operators for numerical expression and case-insensitive string comparisons.

2) Pattern matching operators using wild-cards or regular expressions on strings or, more specifically, S_TOOLS-STx names

The general syntax for a comparison is as follows:

expression operator expression

expression
A numerical expression or a string.
operator
A comparison operator.
Simple Comparison

The following operators are supported for simple comparisons:

== evaluates to true if both sides are equal.
!= evaluates to true if sides are not equal
< evaluates to true if the left hand side is less than the right hand side
> evaluates to true if the left hand side is greater than the right hand side
<= evaluates to true if the left hand side is less than or equal to the right hand side
>= evaluates to true if the left hand side is greater than or equal to the right hand side

If the expressions are both numeric, then a numerical comparison is performed. Otherwise, a case-insensitive string comparison is performed.

Pattern Matching

The general syntax of a pattern-matching comparison is:

string operator mask

E.g.:

'the quick brown fox' !SI '*brown*' // search for the word 'brown' in the left hand side string

The string can also be a 'name' - subject to the syntax restrictions for S_TOOLS-STx names. There are two types of pattern matching supported by S_TOOLS-STx conditional commands.

Wild-card pattern matching:

=SI return true if string matches pattern, ignoring the case
!SI return true if string does not match pattern, ignoring the case
=SR return true if the string matches the pattern, respecting the case
!SR return true if the string does not match the pattern, respecting the case
=NI return true if name matches pattern, ignoring the case
!NI return true if name does not match pattern, ignoring the case
=NR return true if the name matches the pattern, respecting the case
!NR return true if the name does not match the pattern, respecting the case

POSIX regular expression pattern matching:

=RSI returns true if the string matches the regular expression, ignoring case
!RSI return true if string does not match the regular expression, ignoring the case
=RSR returns true if the string matches the regular expression, respecting case
!RSR return true if the string does not match the regular expression, respecting the case
=RNI returns true if the name matches the regular expression, ignoring case
!RNI return true if name does not match the regular expression, ignoring the case
=RNR returns true if the string matches the regular expression, respecting case
!RNR return true if the name does not match the regular expression, respecting the case

Regular expressions make heavy use of characters that have a special meaning for S_TOOLS-STx. In order to use such characters, you need to escape them with the S_TOOLS-STx escape character, "`" (back-tick). The S_TOOLS-STx regular expressions are implemented using the TRE library.



Examples

For an example of regular expression in use, see the example script file regular_expressions.sts.

Navigation menu

Personal tools