M2 Operators

Go forward to Built-In Func/Proc
Go up to Modula-2
Go to the top op gdb


Operators must be defined on values of specific types.  For instance,
`+' is defined on numbers, but not on structures.  Operators are often
defined on groups of types.  For the purposes of Modula-2, the
following definitions hold:
   * _Integral types_ consist of `INTEGER', `CARDINAL', and their
   * _Character types_ consist of `CHAR' and its subranges.
   * _Floating-point types_ consist of `REAL'.
   * _Pointer types_ consist of anything declared as `POINTER TO TYPE'.
   * _Scalar types_ consist of all of the above.
   * _Set types_ consist of `SET' and `BITSET' types.
   * _Boolean types_ consist of `BOOLEAN'.
The following operators are supported, and appear in order of
increasing precedence:
     Function argument or array index separator.
     Assignment.  The value of VAR `:=' VALUE is VALUE.
`<, >'
     Less than, greater than on integral, floating-point, or enumerated
`<=, >='
     Less than or equal to, greater than or equal to on integral,
     floating-point and enumerated types, or set inclusion on set
     types.  Same precedence as `<'.
`=, <>, #'
     Equality and two ways of expressing inequality, valid on scalar
     types.  Same precedence as `<'.  In GDB scripts, only `<>' is
     available for inequality, since `#' conflicts with the script
     comment character.
     Set membership.  Defined on set types and the types of their
     members.  Same precedence as `<'.
     Boolean disjunction.  Defined on boolean types.
`AND, &'
     Boolean conjunction.  Defined on boolean types.
     The GDB "artificial array" operator (*note Expressions:
`+, -'
     Addition and subtraction on integral and floating-point types, or
     union and difference on set types.
     Multiplication on integral and floating-point types, or set
     intersection on set types.
     Division on floating-point types, or symmetric set difference on
     set types.  Same precedence as `*'.
     Integer division and remainder.  Defined on integral types.  Same
     precedence as `*'.
     Negative. Defined on `INTEGER' and `REAL' data.
     Pointer dereferencing.  Defined on pointer types.
     Boolean negation.  Defined on boolean types.  Same precedence as
     `RECORD' field selector.  Defined on `RECORD' data.  Same
     precedence as `^'.
     Array indexing.  Defined on `ARRAY' data.  Same precedence as `^'.
     Procedure argument list.  Defined on `PROCEDURE' objects.  Same
     precedence as `^'.
`::, .'
     GDB and Modula-2 scope operators.
     _Warning:_ Sets and their operations are not yet supported, so GDB
     treats the use of the operator `IN', or the use of operators `+',
     `-', `*', `/', `=', , `<>', `#', `<=', and `>=' on sets as an