This section describes what is a scalar value constructor, a numeric literal or a string literal, and what are syntax rules on using scalar value constructors.
Scalar value constructors are used to construct scalar values. There are two types
of scalar value constructors: numerical literals and string literals.
Numerical literals must follow these rules:
An integer scalar value can be constructed by a numerical literal in a decimal format.
For example, 32 and -9876.
An integer scalar value can be constructed by a numerical literal in a hex format.
For example, 0x20 and 0xAFAF.
An integer scalar value can be constructed by a numerical literal in a binary format.
For example, 0b00100000 and 0b1010111110101111.
A real number scalar value can be constructed by a numerical literal in a floating point format.
For example, 8.8 and -9.99e+50.
Underscore characters can be used between digits in numerical literals to increase legibility.
For example, 0xAF_AF and 0b1010_1111_1010_1111.
String literals must follow these rules:
A string scalar value can be constructed by a string literal in the double quote format.
For example, "Hello world!" and "-9.99e+50".
A string scalar value can be constructed by a string literal in the single quote format.
For example, 'Hello world!' and '-9.99e+50'.
Only two backslash substitutions, \' and \\ can b, are allowed in the single quote format.
For example, 'Herong\'s Book' and 'C:\\WINDOWS'.
Many backslash substitutions, \", \\, \n, ..., are allowed in the double quote format.
For example, "He said: \"Nice job!\"" and "1\n\n12\n123".
Here are some examples to help you understand better what are good or bad scalar value constructors:
1; # ok
8.8; # ok
9.9.9; # bad, not a numeric literal
1e-1; # ok
1e+50; # ok
1.0d; # bad, no double floating point format allowed
'3.14'; # ok
1a; # bad, not a numeric literal and not a string literal
'hello'; # ok
'dir \\home\\herong'; # ok
'Herong's Notes'; # bad, need a backslash substitution \'
"Herong's Notes"; # ok
'Hello world!\n'; # ok, but \n is not a backslash substitution here