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
- Character types consist of
CHAR and its subranges.
- Floating-point types consist of
- Pointer types consist of anything declared as
- Scalar types consist of all of the above.
- Set types consist of
- Boolean types consist of
The following operators are supported, and appear in order of
- Function argument or array index separator.
- Assignment. The value of var
:= value is
- 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
available for inequality, since
# conflicts with the script
- Set membership. Defined on set types and the types of their members.
Same precedence as
- Boolean disjunction. Defined on boolean types.
- Boolean conjunction. Defined on boolean types.
- The gdb “artificial array” operator (see 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
- Negative. Defined on
- Pointer dereferencing. Defined on pointer types.
- Boolean negation. Defined on boolean types. Same precedence as
RECORD field selector. Defined on
RECORD data. Same
- Array indexing. Defined on
ARRAY data. Same precedence as
- Procedure argument list. Defined on
PROCEDURE objects. Same precedence
- gdb and Modula-2 scope operators.
Warning: Set expressions and their operations are not yet supported, so gdb
treats the use of the operator
IN, or the use of operators
>= on sets as an error.