1
[A string_literal is formed by a sequence of graphic characters (possibly none) enclosed between two quotation marks used as string brackets. They are used to represent operator_symbols (see 6.1), values of a string type (see 4.2), and array subaggregates (see 4.3.3). {quoted string: See string_literal} ]
2
string_literal::= "{string_element}"
3
string_element::= "" | non_quotation_mark_graphic_character
4
A string_element is either a pair of quotation marks (""), or a single graphic_character other than a quotation mark.
5
{sequence of characters (of a string_literal)} The sequence of characters of a string_literal is formed from the sequence of string_elements between the bracketing quotation marks, in the given order, with a string_element that is "" becoming a single quotation mark in the sequence of characters, and any other string_element being reproduced in the sequence.
6
{null string literal} A null string literal is a string_literal with no string_elements between the quotation marks.
NOTES
7
6 An end of line cannot appear in a string_literal.
7.1/2
7 {00285AI95−00285−01} No transformation is performed on the sequence of characters of a string_literal.
8
Examples of string literals:
9/2
{00433AI95−00433−01} "Message of the day:" "" −− a null string literal " " "A" """" −− three string literals of length 1 "Characters such as $, %, and } are allowed in string literals" "Archimedes said ""[Unicode 917] [Unicode 973] [Unicode 961] [Unicode 951] [Unicode 954] [Unicode 945] """ "Volume of cylinder (PIr²h) = "
9.a
The wording has been changed to be strictly lexical. No mention is made of string or character values, since string_literals are also used to represent operator_symbols, which don't have a defined value.
9.b
The syntax is described differently.
9.c/2
{00285AI95−00285−01} We explicitly say that the characters of a string_literal should be used as is. In particular, no normalization or folding should be performed on a string_literal.