Idiomatically determine all the characters that can be used for symbols: Difference between revisions
Content added Content deleted
(Added XPL0 example.) |
|||
Line 328: | Line 328: | ||
Kotlin Identifier ignorable: [0][1][2][3][4][5][6][7][8][14][15][16][17][18][19][20][21][22][23][24][25][26][27][127][128]... |
Kotlin Identifier ignorable: [0][1][2][3][4][5][6][7][8][14][15][16][17][18][19][20][21][22][23][24][25][26][27][127][128]... |
||
</pre> |
</pre> |
||
=={{header|Nim}}== |
|||
As regards identifiers, there exists a general rule which describes how they can be formed. For this rule, the following program prints the allowed starting characters and the allowed characters: |
|||
<lang Nim>import sequtils, strutils |
|||
echo "Allowed starting characters for identifiers:" |
|||
echo toSeq(IdentStartChars).join() |
|||
echo "" |
|||
echo "Allowed characters in identifiers:" |
|||
echo toSeq(IdentChars).join()</lang> |
|||
{{out}} |
|||
<pre>Allowed starting characters for identifiers: |
|||
ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz |
|||
Allowed characters in identifiers: |
|||
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz</pre> |
|||
But Nim is a lot more flexible and allows using Unicode symbols in identifiers provided these are letters and digits. Thus, the following program is valid: |
|||
<lang Nim>var à⁷ = 3 |
|||
echo à⁷</lang> |
|||
Using escape character <code>`</code>, it is possible to override the rules and to include any character in an identifier and even to use a keyword as identifier. Here is an example of the possibilities: |
|||
<lang Nim>var `const`= 3 |
|||
echo `const` |
|||
proc `<`(a, b: int): bool = |
|||
echo a, " ", b |
|||
system.`<`(a, b) |
|||
echo 4 < 7 |
|||
proc `Π`(a: varargs[int]): int = |
|||
result = 1 |
|||
for n in a: result *= n |
|||
echo Π(4, 5, 7) |
|||
var `1` = 2 |
|||
echo `1` |
|||
</lang> |
|||
=={{header|Ol}}== |
=={{header|Ol}}== |