Строковый литерал представляет значение строкового типа данных. Существуют две формы строкового литерала: простой строковый литерал и кодированный строковый литерал. Простой строковый литерал состоит из последовательности символов из набора символов языка EXPRESS (см. 7.1), заключенной в апострофы ( ' ). Апостроф в составе простого строкового литерала представляется двумя последовательными апострофами. Кодированный строковый литерал состоит из четырехоктетного кодированного представления каждого символа в последовательности символов ИСО/МЭК 10646-1, заключенной в кавычки ( " ). Кодирование определяется следующим образом:
- первый октет - группа ИСО/МЭК 10646-1, в которой определен символ;
- второй октет - плоскость ИСО/МЭК 10646-1, в которой определен символ;
- третий октет - строка ИСО/МЭК 10646-1, в которой определен символ;
- четвертый октет - позиция ИСО/МЭК 10646-1, в которой определен символ.
Последовательность октетов должна определять один из допустимых символов ИСО/МЭК 10646-1.
Строковый литерал никогда не должен выходить за границу физической строки, то есть символ "новая строка" не должен встречаться между апострофами, ограничивающими строковый литерал.
Синтаксис: | |||||||||||||||||||
310 string_literal = simple_string_literal | encoded_string_literal . | |||||||||||||||||||
144 simple_string_literal = \q { ( \q \q ) | not_quote | \s | \x9 | \xA | \xD } \q . | |||||||||||||||||||
134 not_quote = not_paren_star_quote_special | letter | digit | ' ( ' | ' ) ' | ' * ' . | |||||||||||||||||||
132 not_paren_star_quote_special = | ' ! ' | ' " ' | ' # ' | ' $ ' | ' % ' | ' & ' | ' + ' | ' , ' | |||||||||||
' - ' | ' . ' | ' / ' | ' : ' | ' ; ' | ' < ' | ' = ' | ' > ' | ||||||||||||
' ? ' | ' @ ' | ' [ ' | ' \ ' | ' ] ' | ' ^ ' | ' _ ' | ' ' ' | ||||||||||||
' { ' | ' | ' | ' } ' | ' ~ ' . | ||||||||||||||||
128 letter = | ' a ' | ' b ' | ' c ' | ' d ' | ' e ' | ' f ' | ' g ' | ' h ' | ' i ' | ' j ' | ' k ' | ' l ' | |||||||
' m ' | ' n ' | ' o ' | ' p ' | ' q ' | ' r ' | ' s ' | ' t ' | ' u ' | ' v ' | ' w ' | ' x ' | ||||||||
' y ' | ' z ' . | ||||||||||||||||||
124 digit = | ' 0 ' | ' 1 ' | ' 2 ' | ' 3 ' | ' 4 ' | ' 5 ' | ' 6 ' | ' 7 ' | ' 8 ' | ' 9 ' . | |||||||||
140 encoded_string_literal = ' " ' encoded_character { encoded_character } ' " ' . | |||||||||||||||||||
126 encoded_character = octet octet octet octet . | |||||||||||||||||||
136 octet = hex_ digit hex_ digit . | |||||||||||||||||||
127 hex_digit = digit | ' a ' | ' b ' | ' c ' | ' d ' | ' e ' | ' f ' . | |||||||||||||
При разработке синтаксического анализатора языка EXPRESS необходимо задать максимальное число символов простого строкового литерала, распознаваемое данным анализатором, используя в качестве руководства приложение Е.
При разработке синтаксического анализатора языка EXPRESS необходимо задать максимальное число октетов (которое должно быть кратно четырем) кодированного строкового литерала, распознаваемое данным анализатором, используя в качестве руководства приложение Е.
Примеры
1 Правильная запись простых строковых литералов:
' Baby needs a new pair of shoes! '
Значением данного литерала является Baby needs a new pair of shoes!
' Ed ' ' s Computer Store '
Значением данного литерала является Ed's Computer Store
2 Неправильная запись простых строковых литералов:
' Ed ' s Computer Store '
Литерал всегда должен содержать четное число апострофов.
' Ed '' s Computer
Store '
Литерал выходит за границы физической строки.
3 Правильная запись кодированных строковых литералов:
" 00000041 "
Значением данного литерала является A.
" 000000С5 "
Значением данного литерала является .
" 0000795Е00006238 "
Значением данного литерала являются японские иероглифы , обозначающие Kobe.