<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<a class="moz-txt-link-freetext" href="http://www.freepascal.org/docs-html/ref/refch12.html#x120-13000012">http://www.freepascal.org/docs-html/ref/refch12.html#x120-13000012</a><br>
<br>
lists<br>
<blockquote type="cite">
<div class="caption"><span class="id">Table 12.1: </span><span
class="content">Precedence of operators</span></div>
<p class="noindent">
</p>
<table id="TBL-8" class="tabular" cellpadding="0" cellspacing="0">
<colgroup id="TBL-8-1g"><col id="TBL-8-1"><col id="TBL-8-2"><col
id="TBL-8-3"></colgroup><tbody>
<tr style="vertical-align:baseline;" id="TBL-8-1-">
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-1-1" class="td11">Operator </td>
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-1-2" class="td11">Precedence </td>
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-1-3" class="td11">Category </td>
</tr>
<tr class="hline">
<td>
<hr></td>
<td>
<hr></td>
<td>
<hr></td>
</tr>
<tr style="vertical-align:baseline;" id="TBL-8-2-">
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-2-1" class="td11"><span class="cmtt-10">Not, @ </span></td>
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-2-2" class="td11">Highest (first)</td>
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-2-3" class="td11">Unary operators </td>
</tr>
<tr style="vertical-align:baseline;" id="TBL-8-3-">
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-3-1" class="td11"><span class="cmtt-10">* / div
mod and shl shr as << >></span></td>
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-3-2" class="td11">Second </td>
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-3-3" class="td11">Multiplying operators</td>
</tr>
<tr style="vertical-align:baseline;" id="TBL-8-4-">
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-4-1" class="td11"><span class="cmtt-10">+ - or
xor </span></td>
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-4-2" class="td11">Third </td>
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-4-3" class="td11">Adding operators </td>
</tr>
<tr style="vertical-align:baseline;" id="TBL-8-5-">
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-5-1" class="td11"><span class="cmtt-10">=
<> < > <= >= in is </span></td>
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-5-2" class="td11">Lowest (Last)</td>
<td style="white-space:nowrap; text-align:left;"
id="TBL-8-5-3" class="td11">relational operators </td>
</tr>
</tbody>
</table>
</blockquote>
<br>
<br>
This does not include:<br>
^ deref<br>
- unary minus<br>
. accessing a member of a class/record (not unary)<br>
<br>
Assuming they are in the "Highest" group, then they have same
precedence as "@".<br>
In an expression containing a mix, I would assume a left to right
order.<br>
<br>
However this does not compile (project1.lpr(6,10) Error: Illegal
qualifier)<br>
{$T+} var i: integer<br>
if @i^ = 0 then ;<br>
<br>
If left to right had taken place, then the above would be equal to <br>
if (@i)^ = 0 then ;<br>
And that compiles.<br>
<br>
So it appears that ^ takes precedence over @ ? Or is this a bug?<br>
<br>
It also appears that the "." takes precedence over @<br>
@Object.Foo<br>
is equal to<br>
@(Object.Foo)<br>
well otherwise it could not compile<br>
<br>
</body>
</html>