Difference between revisions of "&"
(octal base, reserved word identifier escape) |
|||
(3 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”). | |
− | In [[ASCII]] the character code decimal <syntaxhighlight lang="pascal" | ||
== Pascal == | == Pascal == | ||
=== octal base === | === octal base === | ||
− | In Pascal the <syntaxhighlight lang="pascal" | + | In [[Pascal]] the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> denotes an octal base number. |
<syntaxhighlight lang="pascal" line highlight="9"> | <syntaxhighlight lang="pascal" line highlight="9"> | ||
program messageNo(input, output, stderr); | program messageNo(input, output, stderr); | ||
Line 19: | Line 18: | ||
end. | end. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | In an octal base only the characters <syntaxhighlight lang="pascal" | + | 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" | + | An optional sign is specified in front of the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight>. |
As a passing remark, in a production program the number in the above example is better written as | As a passing remark, in a production program the number in the above example is better written as | ||
Line 30: | Line 29: | ||
Use this advantage. | Use this advantage. | ||
Write what you ''mean'', not what in fact the computer does. | 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 === | === identifier escape === | ||
− | [[FPC|FreePascal]] retroactively declared some new reserved words. | + | [[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 version, which might fail due to those new reserved words, FPC declared the <syntaxhighlight lang="pascal" | + | 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" | + | 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. |
− | New code though shall come up with different identifier names, without utilizing this feature. | ||
== Lazarus == | == Lazarus == | ||
− | In Lazarus the <syntaxhighlight lang="pascal" | + | In [[Lazarus]] the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> is used to |
− | * indicate shortcut keys in [[TMenuItem|<syntaxhighlight lang="pascal" | + | * indicate shortcut keys in [[TMenuItem|<syntaxhighlight lang="pascal" inline>TMenuItem</syntaxhighlight>]] |
{{Symbols}} | {{Symbols}} |
Latest revision as of 16: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.
{$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
- indicate shortcut keys in
TMenuItem
single characters |
|
character pairs |
|