ГОСТ Р И С 0 10303-11 — 2009
Приме ч а ние — Знакдействительного литерала не моделируется в синтаксисе, так как вязыке EXPRESS
в синтаксисе выражений используется концепция унарных операторов.
Синтаксис:
142 realjiteral = integerjiteral |
( digits[ digits ] [ ’o’ [ sign ] digits ] ) .
125 digits = digit { digit}.
124 digit = ’ O ’ | T| ’ 2 ’ Г З 1 Г 4 1 | ’ 5 ’ | ’ 6 ’ | ’ 7 ’ | ’ 8 ’ | ’ 9’ .
304 sign = ’ + ’ | .
При разработке синтаксического анализатора языка EXPRESS необходимо задать максимальную
точность и максимальный показатель степенидействительного литерала, распознаваемыеданным анали
затором. используя в качестве руководства приложение Е.
Примеры
1 Правильная запись действительных литералов:
1.Е6Символ «Е» может быть введен на верхнем или на нижнем регистре.
3.5е-5
359.62
2 Неправильная запись действительныхлитералов:
.001По крайней мере одна цифра должна предшествовать десятичной точке.
1е10 Десятичная точка должна быть частью литерала.
1. вЮПробел не является частью действительного литерала.
7.5.4 Строковый литерал
Строковый литерал представляет значение строкового типа данных. Существуют две формы строко
воголитерала: простой строковый литерал и кодированный строковый литерал. Простой строковый литерал
состоит из последовательности символов из набора символов языка EXPRESS (см. 7.1), заключенной в
апострофы (’). Апостроф всоставе простого строкового литерала представляется двумя последовательны
ми апострофами. Кодированный строковый литерал состоит из четырехоктетного кодированного представ
ления каждого символа в последовательности символов ИСО/МЭК 10646-1, заключенной в кавычки (").
Кодирование определяется следующим образом:
- первый октет — группа ИСО/МЭК 10646-1. вкоторой определен символ;
- второй октет — плоскость ИСО/МЭК 10646-1. в которой определен символ:
- третий октет — строка ИСО/МЭК 10646-1, в которой определен символ;
- четвертый октет— позиция ИСО/МЭК 10646-1. в которой определен символ.
Последовательность октетовдолжна определять один издопустимых символов ИСО/МЭК 10646-1.
Строковый литерал никогда не должен выходить за границу физической строки, то есть символ «но
вая строка» не должен встречаться между апострофами, ограничивающими строковый литерал.
Синтаксис:
• + ’ 1
V
1
. . . ,j,
11 ’ < • 1
310 stringJiteral = simple_string_literal | encoded_stringJiteral.
144 simple_string_literal = Vq { ( \q \q ) | not_quote | \s | \x9 | VxA | VxD } Vq .
134 not_quote = not_paren_star_quote_special | letter | digit | ’ (’ | ’) ’
132 not_paren_star_quote_special = •!’ |
. .
| ’# • | ’$ ’ Г % ,Г & ’ |
■= • | •>• |
’ ? ’ I ’ @’ l TI
T| ■]• | ’ Л’ |
• M’
TI TI •}’ I
128 letter = ’a ’ | ’ b ’ | ’с * | ’d 1 I ’ e 1 | T | ’ g’
1 ’h 1 | V 1 Ч ’
•k 1 | * 1’ |
*m ’ 1 ‘ n* | ’ o ’ | ’ p
1 ’ 4 ‘ 1 T * | ’ s*
| T | ’ u * | ’v’ • W | -x- |
’У*
1 * z \
124 digit = ’ O’ | ’ 1 ’ | ’ 2 ’ | ’ 3* | ’ 4* | ’ 5 ’ | ’ 6* | ‘ 7* | ’ 8* | ’ 9 ’ .
lи»
140 encoded_stringJiteral =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 1 | ’ e 1 | f ’ .
При разработкесинтаксическогоанализатора языка EXPRESS необходимо задать максимальное число
символов простого строкового литерала, распознаваемоеданным анализатором, используя в качестве ру
ководства приложение Е.
13