Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Skvortsov_vsyo_vmeste.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

14. Синтаксические диаграммы

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

Каждая диаграмма определяет структуру одной грамматической конструкции и состоит из графических символов:

в прямоугольнике указываются нетерминальные символы (металингвистические переменные)

в окружностях - основные (терминальные) символы языка

Чтобы образовать правильную конструкцию, нужно пройти от входа до выхода. Для представления конструкций языка в виде синтаксических диаграмм предварительно их надо описать с помощью расширенной БНФ. Использование расширенной БНФ упрощает синтаксис языков по сравнению с БНФ и делает его более наглядным. Но надо знать, что любая конструкция в расш. БНФ может быть представлена в стандартной БНФ и наоборот.

В расш. БНФ используются дополнительные метасимволы:

{}; []; ().

Назначение доп. метасимволов:

1) {} – обозначают повторение некоторой цепочки языка произвольное число раз, включая 0-ое число. Если α – некоторая цепочка, αє(NUT)+ , то {α}~ε|α|αα|ααα|...

Пример: пусть дано описание в БНФ

<S>::=x<A>

<A>::=z|y<A>

Эквивалентное описание в расширенной БНФ имеет вид:

<S>::=x{y}z

2) [] – служат для обозначения необязательных элементов синтаксических конструкций: [α] – α присутствует или отсутствует ( ε|α )

РБНФ: <S>::= x[y]z

3) ( ) – позволяет задавать альтернативные элементы синтаксических конструкций. Они перечисляются в круглых скобках через | и при образовании цепочки выбирается строго один из них. БНФ: <S>::=xyz|xwz|xuz

РБНФ: <S>::=x(y|w|u)z

xyz xwz xuz

М

А

ожно перечислить правила преобразования описания РБНФ в синтаксические диаграммы

1 . Каждый нетерминальный символ в

терминальный – в

2 . Металингвистическая формула, содержащая в правой части перечисленные конструкции представляется в виде:

<A>::=<B1><B2>...<Bn>

А …

<A>::=b1b2bn>

3. Альтернативный вариант построения конструкций:

<A>::=<B1>|<B2>|...|<Bn> <A>::=b1|b2|...|bn

А

4. Произвольное количество повторений:

<A>::={<B>} <A>::={b}

A

5. Необязательный элемент конструкции:

<A>::=[<B>] <A>::=[b]

Пример 1:

Описание идентификаторов.

БНФ:

<Идент-р>::=< буква >|< Идент-р >< буква >|< Идент-р ><цифра>

РБНФ:

<Идент-р>::=< буква >{< буква >|<цифра>}

2. Описание целых десятичных констант:

БНФ:

<целое>::=<целое без знака>|<знак>< целое без знака>

< целое без знака> ::= <цифра>|<цел. без знака><цифра>

<знак>::=+|-

<цифра>::=0|1|...|9

РБНФ:

<целое>::=[знак>]<целое без знака>

< целое без знака> ::= <цифра>{<цифра>}

<знак>::=[+|-]

з нак

<целое>::=[+|-]< цифра >{< цифра >}

<цифра>::=0|1|...|9

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]