gdb: M2 Operators
15.4.9.1 Operators
..................
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
subranges.
* _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
types.
'<=, >='
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.
'IN'
Set membership. Defined on set types and the types of their
members. Same precedence as '<'.
'OR'
Boolean disjunction. Defined on boolean types.
'AND, &'
Boolean conjunction. Defined on boolean types.
'@'
The GDB "artificial array" operator (Expressions
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 '*'.
'DIV, MOD'
Integer division and remainder. Defined on integral types. Same
precedence as '*'.
'-'
Negative. Defined on 'INTEGER' and 'REAL' data.
'^'
Pointer dereferencing. Defined on pointer types.
'NOT'
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:_ Set expressions 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 error.