Relational
|
=, ==
|
equal to
|
The result is 0 (zero) or 1 (one).
Spaces are optional; you can use any number of
spaces around symbol operators.
|
!=, <>
|
not equal to
|
<
|
less than
|
<=
|
less than or equal to
|
>
|
greater than
|
>=
|
greater than or equal to
|
Logical
|
and, &&
|
both operands are true
|
The result is 0 (zero) or 1 (one).
Two-word operators must have exactly one space
between the two words. You can use any number of spaces elsewhere. Unlike
in C, both operands are always fully evaluated.
|
and not, &&!
|
first is true, and second is false
|
or, ||
|
either is true, or both are true
|
or not, ||!
|
first is true, or second is false
|
xor, ^
|
one operand is true, the other is false
|
xor not, ^!
|
both are true, or both are false
|
Bitwise
|
&
|
1 where both operands have 1
0 everywhere else
|
These are numeric string operators.
The first six are like the logical operators.
The last two are bitwise shifts with the second
operand the count.
For example:
(($$myvar >>
8) & 0xFF)
extracts the second-up byte from a number.
|
&~
|
1 where first has 1 and second has 0
0 everywhere else
|
|
|
1 where either has or both have 1
0 where both operands have 0
|
|~
|
1 where first has 1 or second has 0
0 where first has 0 and second has 1
|
^
|
1 where operand bits differ
0 where operand bits are the same
|
^~
|
1 where operand bits are the same
0 where operand bits differ
|
<< N
|
shift first operand to the left N bits
|
>> N
|
shift first operand to the right N bits
|
Arithmetic
|
+
|
plus
|
These are the usual suspects.
The result of (n /
0) or (n % 0) is 0 (zero), because infinity is hard to represent.
|
-
|
minus
|
*
|
times
|
/
|
divided by
|
%
|
modulo
|
String
|
is
|
equal to
|
is and is
not are caseless compares using stricmp()
plus
is like strcat()
before
and after use strstr() to find the 2nd operand in the 1st:
(doggie before
gi) is dog
You can get a strnicmp()
effect using “first N” or “last
N”
with “is” or “is not”:
(($$myvar first 3)
is
($$yourvar last 3))
|
is not
|
not equal to
|
plus
|
concatenated with
|
before
|
substring before the 1st (leftmost) occurrence
of 2nd string in 1st
|
after
|
substring after the first (leftmost) occurrence
of 2nd string in 1st
|
first N
|
leftmost N
characters (default = 1)
|
last N
|
rightmost N
characters (default = 1)
|
length
|
length in characters
|
Integer result
|
starts $$str
|
true if $$str
is at the start
|
Boolean result
|
ends $$str
|
true if $$str
is at the end
|
Boolean result
|
contains $$str
|
true if $$str
occurs anywhere in the string
|
Boolean result
|
char N
|
Nth character,
counting from left
|
First (leftmost) character is number 1
Default value of N
is 1
|
trim first N
|
all but first N
characters
|
Default value of N
is 1
|
trim last N
|
all but last N
characters
|
Default value of N
is 1
|
$$str lower
|
converts $$str
to lowercase
|
|
$$str upper
|
converts $$str
to uppercase
|
|
$$str replace $$str1
with $$str2
|
converts each instance of $$str1
in $$str to $$str2
|
|
Conditional
|
?
|
“if” the 1st operand is true,
“then” the 2nd operand is the value
of the expression
|
<$($$myvar ? "yes"
:
"no")>
is equivalent to:
<$_if ($$myvar)>
yes
<$_else> no
<$_endif>
|
:
|
“else” the 3rd operand is the value
of the expression
|