4.5. Способи опису синтаксису

Синтаксис – це набір правил та угод, що описують правильні речення мови. Для запису правил синтаксису мов програмування застосовують різні формалізовані системи позначень, які називаються

Ми розглянемо дві метамови, які широко використовуються для опису синтаксису мови Паскаль:

1) мова металінгвістичних формул. Один із його різновидів – це розширена форма Бекуса-Наура (РБНФ);

2) синтаксичні діаграми.

4.5.1. Розширена форма Бекуса-Наура (РБНФ)

У метамовах, що описують синтаксис мови програмування, використовуються такі поняття: метазмінна, метаконстанта, синтаксична одиниця та метасимвол.

Метазмінна – це певна синтаксисом конструкція мови (за винятком основних символів). Для запису метазмінних використовуються послідовності слів української мови та службових слів, між якими є символ підкреслення.

Метазмінні під час запису полягають у кутові дужки. Приклади запису метазмінних:

Метаконстанта – це лексема мови програмування. У програмі метаконстанті відповідає вона сама.

У РБНФ метаконстанти полягають у лапки. Приклади метаконстант:

Синтаксична одиниця – це рядок, що описує склад та порядок проходження елементів конструкцій мови програмування. Синтаксична одиниця складається з метазмінних, метаконстант та метасимволів.

Метазмінна в синтаксичній діаграмі означає, що відповідний фрагмент діаграми повинен бути деталізований підстановкою синтаксичної діаграми з ім'ям, що відповідає даній метазмінній.

Метасимволи – спеціальні символи, що використовуються в метамовах для

опис синтаксису мов програмування.

У РБНФ використовується наступний набірметасимволів;

(або ::= ) має сенс «визначається як», «за визначенням

є»; праворуч від знака ::= записується синтаксична одиниця,

крапка; позначає кінець визначення;

вертикальна характеристика; позначає вибір, альтернативу (сенс

еквівалентний словам «або», «або»);

укладеної в них конструкції нуль, один або більше разів;

конструкції, тобто. можливість повторення укладеної у них

конструкції нуль або рівно один раз; наприклад, запис [“+”]

означає, що знак + перед числом може писати чи ні;

круглі дужки разом з вертикальною, що використовується в них.

ув'язненого у дужки; наприклад, запис (“X” “Y”. “Z”) означає входження у конструкцію елемента “X” або “Y” або .

Розглянемо найпростіші приклади запису РБНФ.

способи

Згадаймо, що ідентифікатор – за визначенням – послідовність латинських літер, цифр та знаків підкреслення, що починається з літери чи символу підкреслення.

У РБНФ це визначення може бути подане так:

“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” “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" .

::= “0” “1” “2” “3” “4” “5” “6” “7” “8” “9” .

метасимволи, що означають будь-яку кількість

повторень укладеної в них метазмінної;

основні символи мови Паскаль (метаконстанти),

пов'язані з його алфавіту; вони укладені в РБНФ

в лапки, щоб відрізнити їх від метасимволів.

Якщо врахувати, що

матиме вигляд:

4.5.2. Синтаксичні діаграми

Синтаксична діаграма графічнозображує структуру синтаксичної одиниці.

Кожна синтаксична діаграма має ім'я, як якого використовується відповідна метазмінна.

Синтаксична діаграма є орієнтованим графом з розміченими ребрами. Для розмітки ребер використовуються метазмінні та метаконстанти. Метасимволи на синтаксичній діаграмі не використовуються. Тому метаконстанти в синтаксичних діаграмах у лапки не полягають.

Метазмінні полягають у кутові дужки.

Для відокремлення імені синтаксичної діаграми від графа використовується метасимвол ::=.

Символи і ::= є єдиними метасимволами, що використовуються.

Метазмінна на розміченому ребрі графа означає, що відповідний фрагмент діаграми має бути деталізований підстановкою синтаксичної діаграми з ім'ям, що відповідає даній метазмінній.

Нижче розглянуто подання у вигляді орієнтованих графів деяких із метасимволів мови РБНФ.

1) Вибору, альтернативі (метасимволу (Або)) відповідає розгалуження в синтаксичній діаграмі з наступним об'єднанням.

Наприклад, змінна може набувати значення А або В (А, В – це лексеми мови Паскаль, тобто метаконстанти).

У вигляді синтаксичної діаграми це запишеться так, як рисунок 4.2.

А

У

Малюнок 4.2 – Синтаксична діаграма, яка представляє вибір

У РБНФ це буде записано так:

синтаксису

В даному випадку – це ім'я синтаксичної діаграми. Вхід синтаксичної діаграми знаходиться ліворуч, вихід праворуч. Стрілки вказують можливі наступники кожного з елементів діаграми. Основний напрямок ребер графа – зліва направо та зверху донизу.

2) Необов'язкової частини конструкції (повторення нуль абоодин раз ,

тобто. метасимволам [ ] ) відповідає діаграма, яку представляє малюнок

Малюнок 4.3 – Синтаксична діаграма, що є необов'язковою частиною конструкції

Це відповідає запису в РБНФ:

3) Можливості повторення конструкцій нуль, один чи більше разів

(метасимволам < >) відповідає фрагмент синтаксичної діаграми, який представляє малюнок 4.4.

Малюнок 4.4 – Синтаксична діаграма, яка дає можливість повторення конструкцій

нуль, один або більше разів

Це відповідає запису в РБНФ:

синтаксису

Синтаксична діаграма визначення «Ідентифікатор» (ідентифікатор – це послідовність літер, цифр та знаків підкреслення, що починається літерою або знаком підкреслення).

Дане визначення, подане у вигляді синтаксичної діаграми, ілюструє рисунок 4.5.

Малюнок 4.5 – Синтаксична діаграма визначення «Ідентифікатор»

Якщо порівнювати між собою мову РБНФ та синтаксичні діаграми, то можна зробити такі висновки.

Мова РБНФ строгіша і точніша, більш зручна для представлення синтаксису в пам'яті машини, більш компактна.

Синтаксичні діаграми наочніші і прості для розуміння, але більш громіздкі.