mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 14:00:35 +00:00
manual: minor improvements (#18687)
This commit is contained in:
@@ -31,7 +31,7 @@ the `destructors <destructors.html>`_ document.
|
||||
This document describes the lexis, the syntax, and the semantics of the Nim language.
|
||||
|
||||
To learn how to compile Nim programs and generate documentation see
|
||||
`Compiler User Guide <nimc.html>`_ and `DocGen Tools Guide <docgen.html>`_.
|
||||
the `Compiler User Guide <nimc.html>`_ and the `DocGen Tools Guide <docgen.html>`_.
|
||||
|
||||
The language constructs are explained using an extended BNF, in which `(a)*`
|
||||
means 0 or more `a`'s, `a+` means 1 or more `a`'s, and `(a)?` means an
|
||||
@@ -583,12 +583,11 @@ In the following examples, `-1` is parsed as two separate tokens
|
||||
"abc"-1
|
||||
|
||||
|
||||
There exists a literal for each numerical type that is
|
||||
defined. The suffix starting with an apostrophe ('\'') is called a
|
||||
The suffix starting with an apostrophe ('\'') is called a
|
||||
`type suffix`:idx:. Literals without a type suffix are of an integer type
|
||||
unless the literal contains a dot or `E|e` in which case it is of
|
||||
type `float`. This integer type is `int` if the literal is in the range
|
||||
`low(i32)..high(i32)`, otherwise it is `int64`.
|
||||
`low(int32)..high(int32)`, otherwise it is `int64`.
|
||||
For notational convenience, the apostrophe of a type suffix
|
||||
is optional if it is not ambiguous (only hexadecimal floating-point literals
|
||||
with a type suffix can be ambiguous).
|
||||
@@ -619,10 +618,9 @@ notation:
|
||||
`0B0_10001110100_0000101001000111101011101111111011000101001101001001'f64`
|
||||
is approximately 1.72826e35 according to the IEEE floating-point standard.
|
||||
|
||||
Literals are bounds checked so that they fit the datatype. Non-base-10
|
||||
literals are used mainly for flags and bit pattern representations, therefore
|
||||
bounds checking is done on bit width, not value range. If the literal fits in
|
||||
the bit width of the datatype, it is accepted.
|
||||
Literals must match the datatype, for example, `333'i8` is an invalid literal.
|
||||
Non-base-10 literals are used mainly for flags and bit pattern representations,
|
||||
therefore the checking is done on bit width and not on value range.
|
||||
Hence: 0b10000000'u8 == 0x80'u8 == 128, but, 0b10000000'i8 == 0x80'i8 == -1
|
||||
instead of causing an overflow error.
|
||||
|
||||
@@ -1980,8 +1978,7 @@ details like this when mixing garbage-collected data with unmanaged memory.
|
||||
Procedural type
|
||||
---------------
|
||||
A procedural type is internally a pointer to a procedure. `nil` is
|
||||
an allowed value for variables of a procedural type. Nim uses procedural
|
||||
types to achieve `functional`:idx: programming techniques.
|
||||
an allowed value for a variable of a procedural type.
|
||||
|
||||
Examples:
|
||||
|
||||
@@ -2494,8 +2491,8 @@ An expression `b` can be assigned to an expression `a` iff `a` is an
|
||||
`l-value` and `isImplicitlyConvertible(b.typ, a.typ)` holds.
|
||||
|
||||
|
||||
Overloading resolution
|
||||
======================
|
||||
Overload resolution
|
||||
===================
|
||||
|
||||
In a call `p(args)` the routine `p` that matches best is selected. If
|
||||
multiple routines match equally well, the ambiguity is reported during
|
||||
|
||||
Reference in New Issue
Block a user