Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
04.01.2020
Размер:
2.97 Mб
Скачать

7.3 Синтаксис языка sdl

В SDL определены две формы описания систем (две формы языка):

➢ SDL/PR (линейная форма языка, или программоподобный SDL) ➢ SDL/GR (графический SDL) В SDL/PR описание системы представляется в виде цепочки символов алфавита языка. На письме эта цепочка разбивается на строчки (как правило, совпадающие с предложениями языка), которые читаются, как обычно: слева направо и сверху вниз. Описание может занимать любое число страниц.

На SDL/GR описание системы изображается в виде диаграмм, которые состоят из графических символов, содержащих некоторый текст, состоящий из лексем языка. Графические символы соединены между собой линиями потока, указывающими, в каком порядке и при каких условиях должны выполняться (интерпретироваться) предписания, выраженные как самими графическими символами, так и содержащимся в них текстом.

Так как описание системы должно состоять из синтаксически правильных конструкций, то должна существовать система синтаксических правил, позволяющая устанавливать, какие конструкции языка являются синтаксически правильными. Совокупность этих правил называется линейным синтаксисом языка. Как мы знаем, для получения грамотного текста нужны еще и правила корректности. Сочетание линейного синтаксиса и соответствующих правил корректности называется линейной грамматикой языка. Линейную форму языка для краткости называют линейным языком.

То же самое справедливо и для графической формы языка. Существует совокупность правил, гласящая, какие графические символы, с каким текстом, в каком порядке могут быть соединены линиями потока, чтобы в итоге получилась диаграмма, допустимая в SDL, или, какая графическая конструкция (диаграмма) является синтаксически правильной. Совокупность этих правил называется графическим синтаксисом. Кроме того, и для графической формы языка существуют правила корректности, во многом совпадающие с правилами корректности для линейного языка. Сочетание графического синтаксиса и соответствующих правил корректности называют графической грамматикой. Графическую форму языка для краткости называют графическим языком.

Известно, что для задания синтаксиса средств самого этого языка недостаточно. Для этих целей применяется другой язык, называемый метаязыком, т.е. какие-то средства, лежащие вне описываемого языка.

Для языков МСЭ метаязыками синтаксиса приняты форма Бэкуса-Наура и синтаксические графы Н.Вирта. Синтаксические конструкции, записанные с помощью формы БэкусаНаура, однозначно переводятся в синтаксические графы и наоборот.

С помощью формы Бэкуса-Наура можно определять синтаксис любого контекстносвободного языка.

Форма Бэкуса-Наура состоит из определенного числа правил, с помощью которых синтаксические конструкции определены через другие синтаксические конструкции; с помощью этих правил определены и терминальные слова.

7.4 Нормальная и расширенная формы Бэкуса-Наура

Нормальная форма Бэкуса-Наура как метаязык содержит следующие элементы:

  • угловые скобки < > — запись в этих скобках задает нетерминальный элемент (определяемые синтаксические конструкции);

  • запись элемента языка без угловых скобок означает терминальный элемент;

  • знак | – задание альтернатив определяемой синтаксической конструкции (читается как "или");

  • составной знак ::= отделяет определяемую синтаксическую конструкцию от ее определения (читается, как "по определению есть" или "определяется как").

В качестве самого простого примера использования нормальной формы Бэкуса-Наура можно привести определение синтаксической конструкции "цифра" некоторого языка:

<цифра>::= 0|1|2|3|4|5|6|7|8|9

Нормальная форма Бэкуса-Наура проста и ясна при применении, однако имеет ряд недостатков: рекурсивность при определении повторов и необходимость дополнительного определения альтернатив.

Для устранения этих недостатков нормальной БНФ используют различные виды расширенных форм Бэкуса-Наура.

Для каждого языка МСЭ принята своя расширенная форма Бэкуса-Наура, однако, большая часть расширения сводится к следующему.

Прежде всего, введен символ [ ], при использовании которого синтаксические конструкции внутри этого символа необязательны для применения (альтернативность применения).

Например, запись <имя> ::= <буква> | <цифра> означает, что синтаксическая конструкция <имя> может быть либо <буквой>, либо <цифрой>.

Синтаксические категории группируются с помощью знака {}.

Например, {А|В|С} означает А или В, или С, но все вместе они выступают как участники одной группы.

Повторы организуются двумя способами. Первый состоит в том, что используются знак группы { } и знак * для обозначения повтора группы произвольное количество раз, либо ни разу.

Например, {А}* означает А, АА, ААА или любую другую по длине последовательность из А, но также и отсутствие А вообще.

Другой способ организации повтора состоит в использовании знака группы {} и знака + для обозначения повтора, когда сгруппированные конструкции должны быть повторены хотя бы один раз.

Например, {А}+ устанавливает последовательности А, АА, ААА , ..., но не пустую последовательность.

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

Между нормальной формой Бэкуса-Наура и синтаксическими графами имеется однозначное соответствие. Расширения формы Бэкуса-Наура также однозначно переводятся в элементы синтаксического графа (см. таблицу 1).

Таблица 1 – Соответствие между формой Бэкуса-Наура и синтаксическими графами

Синтаксическая конструкция

Форма Бэкуса-Наура

Синтаксический граф

определяемая конструкция

<определяемая конструкция>::=

название графа

Терминальный символ

А или mode

Нетерминальный символ

<mode>

Последовательное задание

<ANON>::=B<c><no>

ANON

Альтернатива

<A>::=D|C|<NON>

Необязательность исполнения

[A]

Группировка с нулевым повтором

{A}*

Группировка с многократным повтором

{A}+

Соседние файлы в папке ЯМСЭ