3 <title>Debugging with GDB
</title>
4 <meta http-equiv=
"Content-Type" content=
"text/html">
5 <meta name=
"description" content=
"Debugging with GDB">
6 <meta name=
"generator" content=
"makeinfo 4.3">
7 <link href=
"http://www.gnu.org/software/texinfo/" rel=
"generator-home">
12 Node:
<a name=
"M2%20Operators">M2 Operators
</a>,
13 Next:
<a rel=
"next" accesskey=
"n" href=
"Built-In-Func-Proc.html#Built-In%20Func%2fProc">Built-In Func/Proc
</a>,
14 Up:
<a rel=
"up" accesskey=
"u" href=
"Modula-2.html#Modula-2">Modula-
2</a>
18 <h5 class=
"subsubsection">Operators
</h5>
20 <p>Operators must be defined on values of specific types. For instance,
21 <code>+
</code> is defined on numbers, but not on structures. Operators are
22 often defined on groups of types. For the purposes of Modula-
2, the
23 following definitions hold:
27 <li><em>Integral types
</em> consist of
<code>INTEGER
</code>,
<code>CARDINAL
</code>, and
30 <li><em>Character types
</em> consist of
<code>CHAR
</code> and its subranges.
32 <li><em>Floating-point types
</em> consist of
<code>REAL
</code>.
34 <li><em>Pointer types
</em> consist of anything declared as
<code>POINTER TO
35 </code><var>type
</var><code></code>.
37 <li><em>Scalar types
</em> consist of all of the above.
39 <li><em>Set types
</em> consist of
<code>SET
</code> and
<code>BITSET
</code> types.
41 <li><em>Boolean types
</em> consist of
<code>BOOLEAN
</code>.
44 <p>The following operators are supported, and appear in order of
45 increasing precedence:
49 <dd>Function argument or array index separator.
51 <br><dt><code>:=
</code>
52 <dd>Assignment. The value of
<var>var
</var> <code>:=
</code> <var>value
</var> is
55 <br><dt><code><</code>,
<code>></code>
56 <dd>Less than, greater than on integral, floating-point, or enumerated
59 <br><dt><code><=
</code>,
<code>>=
</code>
60 <dd>Less than or equal to, greater than or equal to
61 on integral, floating-point and enumerated types, or set inclusion on
62 set types. Same precedence as
<code><</code>.
64 <br><dt><code>=
</code>,
<code><></code>,
<code>#
</code>
65 <dd>Equality and two ways of expressing inequality, valid on scalar types.
66 Same precedence as
<code><</code>. In GDB scripts, only
<code><></code> is
67 available for inequality, since
<code>#
</code> conflicts with the script
70 <br><dt><code>IN
</code>
71 <dd>Set membership. Defined on set types and the types of their members.
72 Same precedence as
<code><</code>.
74 <br><dt><code>OR
</code>
75 <dd>Boolean disjunction. Defined on boolean types.
77 <br><dt><code>AND
</code>,
<code>&</code>
78 <dd>Boolean conjunction. Defined on boolean types.
80 <br><dt><code>@
</code>
81 <dd>The GDB
"artificial array" operator (see
<a href=
"Expressions.html#Expressions">Expressions
</a>).
83 <br><dt><code>+
</code>,
<code>-
</code>
84 <dd>Addition and subtraction on integral and floating-point types, or union
85 and difference on set types.
87 <br><dt><code>*
</code>
88 <dd>Multiplication on integral and floating-point types, or set intersection
91 <br><dt><code>/
</code>
92 <dd>Division on floating-point types, or symmetric set difference on set
93 types. Same precedence as
<code>*
</code>.
95 <br><dt><code>DIV
</code>,
<code>MOD
</code>
96 <dd>Integer division and remainder. Defined on integral types. Same
97 precedence as
<code>*
</code>.
99 <br><dt><code>-
</code>
100 <dd>Negative. Defined on
<code>INTEGER
</code> and
<code>REAL
</code> data.
102 <br><dt><code>^
</code>
103 <dd>Pointer dereferencing. Defined on pointer types.
105 <br><dt><code>NOT
</code>
106 <dd>Boolean negation. Defined on boolean types. Same precedence as
109 <br><dt><code>.
</code>
110 <dd><code>RECORD
</code> field selector. Defined on
<code>RECORD
</code> data. Same
111 precedence as
<code>^
</code>.
113 <br><dt><code>[]
</code>
114 <dd>Array indexing. Defined on
<code>ARRAY
</code> data. Same precedence as
<code>^
</code>.
116 <br><dt><code>()
</code>
117 <dd>Procedure argument list. Defined on
<code>PROCEDURE
</code> objects. Same precedence
120 <br><dt><code>::
</code>,
<code>.
</code>
121 <dd>GDB and Modula-
2 scope operators.
125 <em>Warning:
</em> Sets and their operations are not yet supported, so GDB
126 treats the use of the operator
<code>IN
</code>, or the use of operators
127 <code>+
</code>,
<code>-
</code>,
<code>*
</code>,
<code>/
</code>,
<code>=
</code>, ,
<code><></code>,
<code>#
</code>,
128 <code><=
</code>, and
<code>>=
</code> on sets as an error.