Search                        Top                                  Index
HELP PRECEDENCE                                       A.Sloman, Nov 1987


-- PRECEDENCES OF POP-11 INFIX OPERATIONS ----------------------------

Precedences determine the parsing of complex expressions, especially
unbracketed expressions with more than one infix operator. E.g.
    3 + 4 * 5

parses as 3 + (4 * 5) rather than (3 + 4) * 5 because the precedence of
"+" is higher, i.e. it has higher scope, than that of "*".

Precedences can be positive or negative integers or decimals, in the
range -12.7 to +12.7 inclusive. So the largest possible precedence is
12.7. Most operations associate to the left; negative precedences can be
used for operations which must associate to the right. Absolute value of
the precedence determines scope. Positive precedences will be slightly
higher than negative ones of the same absolute value.

Examples of built in infix operators:

NAME                 PRECEDENCE     ARGUMENTS         FUNCTION
====                 ==========     =========         ========

Logical bit manipulation:

&&                       4            2            Logical and
&&~~                     4            2            Logical and-not
||                       4            2            Logical or
~~                       4            1            Logical not
||/&                     4            2            Logical exclusive or
<<                       4            2            Logical shift left
>>                       4            2            Logical shift right

Standard arithmetic operations:

>                        6            2            Greater than
>=                       6            2            Greater than or equal to
<                        6            2            Less than
<=                       6            2            Less than or equal to
*                        4            2            Multiply
**                       3            2            Raise to power
+                        5            2            Add
-                        5            2            Subtract
/                        4            2            Divide
//                       4            2            Integer divide
rem                      2            2            Integer remainder
mod                      2            2            Modulo
div                      2            2            integer divisor

Fast integer (fi_) operations (no run-time type checking)

See REF * FASTPROCS


Boolean operations:

and                      9
or                       10

Equality tests:

=                        7            2            Equal
==                       7            2            Identical
==#                      7            2            Numerical equality
/=                       7            2            Not equal
/==                      7            2            Not identical
    NOTE: "=" and "/=" compare components of structures,
          whereas "==" and "/==" don't, and are therefore faster

matches                  9            2            Structure matcher
-->                      9            2            Calls the matcher
    SEE HELP *MATCHES

Structure operations

::                       4            2            CONS list link
<>                       5            2            Concatenate structure
><                       5            2            String concatenate
ncjoin                   5            2            Non-copy list join
.                        1            1            Apply procedure

Others:

->                       11                         Assignment arrow
->>                      11                         Assign and stack
=>                       12                         Print arrow
(                        -1
:                        -1

See
    HELP *DEFINE    - for syntax of procedure definitions
   (HELP *OPERATION - for syntax of infix operator definitions)
    REF  *POPSYNTAX - for more detailed information on POP-11
                        syntax

--- C.all/help/precedence ----------------------------------------------
--- Copyright University of Sussex 1987. All rights reserved. ----------