Valuation of expressionsΒΆ
The evaluation of expression takes place by means of processing the operators according to certain binding rules. The operator with the strongest binding is processed first, then the operator with the next strongest binding, etc., until all operators have been processed.
Operators with equal binding strength are processed from left to right. Below you find a table of the ST operators in the order of their binding strength:
Operation | Symbol | Binding strength |
---|---|---|
Put in parentheses | (expression) | Strongest binding |
Function call | Function name (parameter list) | |
Exponentiation | EXPT | |
Negate Building of complements | - NOT | |
Multiply Divide Modulo | * / MOD | |
Add Subtract |
|
|
Compare | <,>,<=,>= | |
Equal to Not equal to | = <> | |
Boolean AND | AND | |
Boolean XOR | XOR | |
Boolean OR | OR | Weakest binding |
There are the following instructions in ST, arranged in a table together with example:
Instruction type | Example |
---|---|
Assignment | A:=B; CV := CV + 1; C:=SIN(X); |
Calling a function block and use of the FB output | CMD_TMR(IN := %IX5, PT := 300); A:=CMD_TMR.Q |
RETURN | RETURN; |
IF | D:=B*B; IF D<0.0 THEN C:=A; ELSIF D=0.0 THEN C:=B; ELSE C:=D; END_IF; |
CASE | CASE INT1 OF 1: BOOL1 := TRUE; 2: BOOL2 := TRUE; ELSE BOOL1 := FALSE; BOOL2 := FALSE; END_CASE; |
FOR | J:=101; FOR I:=1 TO 100 BY 2 DO IF ARR[I] = 70 THEN J:=I; EXIT; END_IF; END_FOR; |
WHILE | J:=1; WHILE J<= 100 AND ARR[J] <> 70 DO J:=J+2; END_WHILE; |
REPEAT | J:=-1; REPEAT J:=J+2; UNTIL J= 101 OR ARR[J] = 70 END_REPEAT; |
EXIT | EXIT; |
Empty instruction | ; |