Статус документа
Статус документа

ГОСТ Р 53556.5-2013 Звуковое вещание цифровое. Кодирование сигналов звукового вещания с сокращением избыточности для передачи по цифровым каналам связи. Часть III (MPEG-4 audio). Структурированное кодирование звуковых сигналов (SA) (Переиздание)

     8 Синтаксис и семантика SAOL

8.1 Соотношение с синтаксисом потока битов

Описание синтаксиса потока битов определяет представление инструментов и алгоритмов SAOL, которые должны быть предоставлены декодеру в потоке битов. Однако маркируемое описание, как представлено там, не достаточно, чтобы описать синтаксис и семантику языка SAOL. Чтобы обеспечить создание потока битов и обмен надежным способом, полезно иметь стандартное удобочитаемое текстовое представление кода SAOL в дополнение к маркируемому двоичному формату.

Грамматика формата Backus-Naur (BNF) обозначает язык или бесконечный набор программ. Допустимые программы, которые могут быть переданы в потоке битов, ограничиваются этим набором. Любая программа, которая не может быть проанализирована этой грамматикой, не является допустимой программой SAOL - у нее есть синтаксическая ошибка - и поток битов является недопустимым потоком. Хотя поток битов составляется из маркеров, грамматика будет описана с точки зрения лексических элементов. Синтаксические правила, выраженные грамматикой, которые ограничивают набор текстовых программ, также нормативно ограничивают синтаксис потока битов через отношение потока битов и текстового формата в нормативном процессе маркирования.

Этот подпункт таким образом описывает текстовое представление SAOL, которое стандартизируется, но стоит за пределами отношения декодера потока битов.

Приложение В содержит грамматику для текстового языка SAOL, представленного в форматах 'lex' и 'уасс'. Используя эти версии грамматики, синтаксические анализаторы могут быть созданы автоматически, используя инструменты 'lех' и 'уасс'. Эти версии годятся только в информативных целях и используются в создании декодера.

Нормативный язык синтаксиса в этом подпункте обеспечивает границы синтаксически верных программ SAOL и дополнительно - синтаксически верных последовательностей потока битов, которые могут появиться в классе потока битов orchestra. Таким образом, есть конструкции, которые допустимы только после чтения грамматики BNF, но отвергаются в нормативном тексте, сопровождающем грамматику. Состояние таких конструкций является состоянием тех, которые лежат за пределами языка, определенного одной только грамматикой.

Процесс декодирования для потоков битов, содержащих синтаксически недопустимые программы SAOL (то есть, программы SAOL, которые не соответствуют грамматике BNF, или содержат синтаксические ошибки или ошибки несоответствия уровня), является необусловленным.

Нормативная в отношении языка семантика в этом подпункте описывает семантические границы поведения декодера структурированного аудио. Определенные конструкции описывают "ошибочные по времени выполнения" ситуации. Поведение декодера при таких обстоятельствах не нормировано, но реализации позволяют корректно восстановиться из таких ситуаций и продолжать декодирование.

8.2 Лексические элементы
     


    8.2.1 Понятия

Текстовый оркестр SAOL содержит знаки препинания, которые синтаксически снимают неоднозначность оркестра, идентификаторы, которые обозначают символы оркестра, числа, которые обозначают постоянные величины, строковые константы, которые в настоящий момент не используются, комментарии, которые допускает внутренняя документация оркестра, и пробел, который лексически разделяет различные текстовые элементы. Эти элементы не появляются в потоке битов, так как каждый представляется там маркером.

8.2.2 Идентификаторы

Идентификатор является серией одной или более букв, цифр и подчеркиваний, которая начинается с буквы или подчеркивания. Он обозначает символ оркестра. Идентификаторы являются чувствительными к регистру, что означает, что идентификаторы, которые отличаются регистром только одного или более символов, обозначают различные символы.

Строка символов, эквивалентная одному из зарезервированных слов, перечисленных в 8.9, одному из стандартных имен, перечисленных в 8.6.8, имени одного из базовых кодов операции, перечисленных в 9.3, или имени одного из базовых генераторов звуковой таблицы, перечисленных в 10, не обозначает символ, а обозначает, что зарезервировано слово, стандартное имя, код операции или генератор звуковой таблицы.

Идентификатор обозначается в грамматике BNF терминальным символом <ident>.

8.2.3 Числа

Существуют два вида символьных констант, которые содержат числовые значения в SAOL: целочисленные константы и константы с плавающей точкой.

Целочисленная константа обязана появляться в определенных контекстах, таких как определения массива. Целочисленный маркер является серией одной или более цифр. Строка символов, которая оказывается отрицательным целым числом, должна быть лексически проанализирована как константа с плавающей точкой. Никакая целочисленная константа, больше чем 2 (4294967296), не должна иметь места в оркестре.

В SAOL нет разницы между числами, кодированными с маркером потока битов для целых чисел и кодированными с маркером потока битов для байтов. Последний является только средством сжатия потока битов.

Целочисленная константа обозначается в грамматике BNF терминальным символом <int>.

Константа с плавающей точкой присутствует в выражениях SAOL и обозначает постоянное числовое значение. Маркер с плавающей точкой состоит из основания, дополнительно сопровождаемого экспонентой. Основание является серией одной или более цифр, опционно сопровождаемых десятичной точкой и серией из ни одной или большего количества цифр, или десятичной точкой, сопровождаемой серией из одной или более цифр. Экспонента обозначается буквой е, дополнительно сопровождаемой символом + или -, сопровождаемым серией из одной или более цифр. Так как константа с плавающей точкой появляется в выражении SAOL, где унарный оператор отрицания всегда является доступным, константы с плавающей точкой не должны быть лексически отрицательными. Каждая константа с плавающей точкой в оркестре должна быть представимой 32-разрядным числом с плавающей точкой.

Константа с плавающей точкой обозначается в грамматике BNF терминальным символом <number>.

8.2.4 Строковые константы

Строковые константы не используются в нормативной спецификации SAOL, но описаны здесь, чтобы они могли обрабатываться разработчиками, которые хотят добавлять к своим реализациям функциональность свыше нормативных требований.

Строковая константа обозначает постоянное строковое значение, то есть последовательность символов. Строковая константа является серией символов, заключенных в двойные кавычки ("). Символ двойных кавычек может быть включен в строковую константу, предшествуя ей с символом наклонной влево черты (\). Любой другой символ, включая символ разрыва линии (новая линия), должен быть заключен в кавычки.

8.2.5 Комментарии

Комментарии могут использоваться в текстовом представлении SAOL, чтобы внутренне документировать оркестр. Однако они не включаются в поток битов и теряются в последовательности tokenisation/detokenisation (назначения/удаления маркеров).

Комментарий является любой серией символов, начинающихся с двух наклонных черт (//) и завершающихся с новой линией. Во время лексического анализа, всякий раз когда в линии находится элемент //, остальная часть линии игнорируется.