Difference between revisions of "&"

From Free Pascal wiki
Jump to navigationJump to search
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{&}}
 
{{&}}
 
<div style="float:left; margin: 0 25px 20px 0; padding:40px; font-size:500%; font-family: Georgia; background-color: #f9f9f9; border: 2px solid #777777;">&</div>
 
<div style="float:left; margin: 0 25px 20px 0; padding:40px; font-size:500%; font-family: Georgia; background-color: #f9f9f9; border: 2px solid #777777;">&</div>
 +
In [[ASCII]] the character code decimal <syntaxhighlight lang="pascal" inline>38</syntaxhighlight> (or [[Hexadecimal|<syntaxhighlight lang="pascal" inline>$</syntaxhighlight>]]<syntaxhighlight lang="pascal" inline>26</syntaxhighlight>) is defined to be <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> (pronounced “ampersand”).
  
 +
== Pascal ==
 +
=== octal base ===
 +
In [[Pascal]] the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> denotes an octal base number.
 +
<syntaxhighlight lang="pascal" line highlight="9">
 +
program messageNo(input, output, stderr);
  
In [[ASCII]] and Unicode, the character code decimal 38 (or [[Hexadecimal|hexadecimal]] 26) is defined to be  &.
+
uses
 +
baseUnix;
  
 +
begin
 +
// withdraw group write access to current terminal
 +
// equivalent to invoking: mesg n
 +
fpChmod('/dev/stdin', &0600);
 +
end.
 +
</syntaxhighlight>
 +
In an octal base only the characters <syntaxhighlight lang="pascal" inline>0</syntaxhighlight> through and including <syntaxhighlight lang="pascal" inline>7</syntaxhighlight> are allowed.
 +
An optional sign is specified in front of the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight>.
  
The symbol & (pronounced "Ampersand") is used in Lazarus:
+
As a passing remark, in a production program the number in the above example is better written as
* it indicates shortcut key in [[TMenuItem]]
+
<syntaxhighlight lang="pascal">
 +
fpChmod('/dev/stdin', S_IRUSR or S_IWUSR);
 +
</syntaxhighlight>
 +
since it is more meaningful than having a raw number.
 +
Pascal is a high-level language.
 +
Use this advantage.
 +
Write what you ''mean'', not what in fact the computer does.
 +
 
 +
{{Note|Octal number literals are not supported in [[Mode Delphi|<syntaxhighlight lang="pascal" inline>{$mode Delphi}</syntaxhighlight>]] and [[Mode TP|<syntaxhighlight lang="pascal" inline>{$mode TP}</syntaxhighlight>]].}}
 +
 
 +
=== identifier escape ===
 +
[[FPC|FreePascal]] retroactively declared some new [[Reserved word|reserved words]].
 +
In order of being capable of compiling old code with an up-to-date [[Compiler|compiler]] version, which might fail due to those new reserved words, FPC declared the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> as an escape character.
 +
Thus, without refactoring the code but escaping, i.e. prepending an <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> to the [[Identifier|identifier]], the compiler accepts the actual reserved word as a valid identifier. New code though shall come up with different identifier names, without utilizing this feature.
 +
 
 +
== Lazarus ==
 +
In [[Lazarus]] the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> is used to
 +
* indicate shortcut keys in [[TMenuItem|<syntaxhighlight lang="pascal" inline>TMenuItem</syntaxhighlight>]]
 +
 
 +
{{Symbols}}

Latest revision as of 17:24, 6 August 2022

English (en) suomi (fi) français (fr) português (pt) русский (ru)

&

In ASCII the character code decimal 38 (or $26) is defined to be & (pronounced “ampersand”).

Pascal

octal base

In Pascal the & denotes an octal base number.

 1program messageNo(input, output, stderr);
 2
 3uses
 4	baseUnix;
 5
 6begin
 7	// withdraw group write access to current terminal
 8	// equivalent to invoking: mesg n
 9	fpChmod('/dev/stdin', &0600);
10end.

In an octal base only the characters 0 through and including 7 are allowed. An optional sign is specified in front of the &.

As a passing remark, in a production program the number in the above example is better written as

fpChmod('/dev/stdin', S_IRUSR or S_IWUSR);

since it is more meaningful than having a raw number. Pascal is a high-level language. Use this advantage. Write what you mean, not what in fact the computer does.

Light bulb  Note: Octal number literals are not supported in {$mode Delphi} and {$mode TP}.

identifier escape

FreePascal retroactively declared some new reserved words. In order of being capable of compiling old code with an up-to-date compiler version, which might fail due to those new reserved words, FPC declared the & as an escape character. Thus, without refactoring the code but escaping, i.e. prepending an & to the identifier, the compiler accepts the actual reserved word as a valid identifier. New code though shall come up with different identifier names, without utilizing this feature.

Lazarus

In Lazarus the & is used to


navigation bar: topic: Pascal symbols
single characters

+ (plus)  •  - (minus)  •  * (asterisk)  •  / (slash)
= (equal)  •  > (greater than)  •  < (less than)
. (period)  •  : (colon)  •  ; (semi colon)
^ (hat)  •  @ (at)
$ (dollar sign)  •  & (ampersand)  •  # (hash)
' (single quote)

character pairs

<> (not equal)  •  <= (less than or equal)  •  := (becomes)  •  >= (greater than or equal)

 •  >< (symmetric difference)  •  // (double slash)