Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NikitchenkoNEWNEW.doc
Скачиваний:
26
Добавлен:
08.11.2019
Размер:
2.99 Mб
Скачать

4.8. Методи подання синтаксису мов програмування

Граматики типу 2 (контекстно-вільні граматики) відіграють велику роль у формалізації мов програмування. Справа в тому, що вони задають чітке подання деякого синтаксичного поняття як структури, що складається з певних частин. Ті частини, у свою чергу, мають частини і так далі. Тобто контекстно-вільні граматики подають ієрархічну організацію синтаксичного поняття. Це відповідає і композиційній структурі програм. Саме тому вивченню цього класу граматик буде приділено більшу увагу. Щоб продемонструвати зв’язок з мовами програмування більш чітко, розглянемо методи подання синтаксису мов програмування. Найбільш відомим методом є нормальні форми Бекуса–Наура (БНФ). Цей формалізм (метамова) широко використовується як під час подання синтаксису мов програмування, так і під час вивченні природних мов.

4.8.1. Нормальні форми Бекуса–Наура

Ці форми були запропоновані Дж. Бекусом та П. Науром для опису синтаксису мови програмування АЛГОЛ-60. Основним призначенням форм Бекуса та Наура було подання у компактному вигляді строго формальних правил написання основних конструкцій мов програмування.

Приблизно в той самий час Ноам Хомський (1959) ввів аналогічну форму – контекстно-вільну граматику – для визначення синтаксису природної мови.

БНФ складається зі скінченної множини правил, які визначають формальну мову (зокрема, синтаксис мов програмування).

Одним із класів об’єктів, що використовуються в БНФ, є символи описуваної мови. Другим класом об’єктів БНФ виступають мета змінні (нетермінальні символи), значеннями яких є ланцюжки основних символів. Для опису синтаксису мов програмування використовують велику кількість нетермінальних символів, тому для наочності їх подають як комбінації слів природної мови, що поміщені в кутові дужки. Ліву частину правил відділяють від правої частини знаком ::=, крім того, правила з однаковою лівою частиною записуються як одне правило, при цьому праві частини (альтернативи) розділяються вертикальною рискою |.

Приклад 4.16. Синтаксис операторів мови SIPL задається наступною БНФ:

<оператор> ::=

<змінна>:=<вираз> |

<оператор> ; <оператор>|

if <умова> then <оператор> else <оператор> |

while <умова> do <оператор> |

begin <оператор> end |

skip

За кожною БНФ легко побудувати контекстно-вільну граматику, співставляючи правилу БНФ виду A::=1 | 2 | … n сукупність правил граматики A1, A2, … An.

4.8.2. Модифіковані нормальні форми Бекуса–Наура

Для отримання більш наочних та компактних описів синтаксису застосовують модифіковані БНФ. Найчастіше передбачається введення спеціальних позначень для ітерації та альтернативи.

Наприклад, список якихось елементів задається БНФ

<список>::=<елемент><список>|

У модифікованій БНФ можна записати

<список>::={<елемент>}*

Така форма передбачає введення операції, яка називається ітерацією і позначається парою фігурних дужок із зірочкою.

Якщо певна частина синтаксичної конструкції може бути пропущена, то в модифікованих БНФ її виділяють квадратними дужками. Наприклад, замість правила БНФ

<оператор> ::=

if <умова> then <оператор> else <оператор> | if <умова> then <оператор>

можна вжити наступне правило модифікованої БНФ:

<оператор> ::= if <умова> then <оператор> [ else <оператор>].

Зрозуміло, що для модифікованих БНФ вживати дужки « { », « } », « [ » та « ] », а також « * » у якості символів мови не слід, тому що вони виступають як метасимволи формалізму модифікованих БНФ. За необхідності вживання цих дужок і зірочки для них використовують спеціальні позначення.

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