User guide
8.5. EXPRESSION OPERATORS 149
but if op is non zero it repr es ents and assignment operator (assop) and the statement
is equivalent to:
SLCT len:sh:0 OF (P!(S-1)) assop:= P!(S-2); S := S-2
The mapping between op and assop is given by the following table.
op assop
op assop
1 ! 9 +
2 #*
10 -
3 #/
11 <<
4 #+
12 >>
5 #-
13 &
6 *
14 |
7 /
15 EQV
8 REM
16 NEQV
The floating-point as si gnm ent op e r ator s are only allowed when the specified field
is a full word, typically with len and sh both zero. The SELST operator with len and
sh both zero is used in the compilation assop:= assignments where the l eft hand side
is a simple vari abl e or a subscripted expression. For instance, the assigment v!3+:=1
might generate the following OCODE.
LG 200 LN 1 PLUS
LN 1 SELST 9 0 0
8.5 Expression Operators
The monadic expression operator s only affect the topmost item of the stack and do not
change the value of S. They are shown in the ne x t table.
Statement
Meaning
RV P!(S-1) := ! P!(S-1)
ABS
P!(S-1) := ABS P!(S-1)
FABS
P!(S-1) := FABS P!(S-1)
FLOAT
P!(S-1) := FLOAT P!(S-1)
FIX
P!(S-1) := FIX P!(S-1)
NEG
P!(S-1) := - P!(S-1)
FNEG
P!(S-1) := #- P!(S-1)
NOT
P!(S-1) := ∼ P!(S-1)
All dyadic expression operators take two operands from stack replacing them the
result and decrementing S by 1. These operators are shown in the following table.