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

Способи задання схем грамтик Символічна, форма Наура-Бекуса, ітераційна форма й синтаксичні діаграми.

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

  • символічна

  • форма Бекуса-Наура (ФБН)

  • ітераційна

  • синтаксичні діаграми

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

Нота́ція Бе́куса—Нау́ра (англ. Backus-Naur form, BNF) — це спосіб запису правил контекстно-вільної граматики, себто формою опису формальної мови.

Саме її типово використовують для запису правил мов програмування та протоколів комунікації. У 50-х роках минулого сторіччя Джон Бекус створив цю нотацію розробляючи мову ALGOL. На першому Всесвітньому Комп'ютерному Конгресі, що відбувся у Парижі 1959-го він зробив доповідь на тему «Синтаксис та семантика пропонованої першої міжнародної алгебраїчної мови». Пізніше Наур Пітер спростив її та (за порадою Дональда Кнута) додав до назви своє ім'я.

Запис

Нотація БНФ є набором «продукцій», кожна з яких відповідає зразку:

<символ> ::= <вираз, що містить символи>

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

Далі,

< — лівий обмежувач виразу

> — правий обмежувач виразу

::= — визначене як

| — або

Ці чотири символи є символами мета-мови, вони не визначені у мові, котру описують. Решта описаних символів належать до «абетки» описуваної мови.

Приклади

Для прикладу подивимось на можливу нотацію BNF для поштової адреси:

<поштова-адреса> ::= <поштове-відділення> <вулична-адреса> <особа>

<поштове-відділення> ::= <індекс> ", " <місце> <EOL>

<місце> ::= <село> | <місто>

<вулична-адреса> ::= <вулиця> "," <будинок> <EOL>

<особа> ::= <прізвище> <ім’я> <EOL> | <прізвище> <ім’я> <по батькові> <EOL>

Другий приклад, тут наведений один зі способів означити натуральні числа за допомогою БНФ.

<нуль> ::= 0

<ненульова цифра> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<цифра> ::= <нуль> | <ненульова цифра>

<послідовність цифр> ::= <нуль> | <ненульова цифра> | <цифра><послідовність цифр>

<натуральне число> ::= <цифра> | <ненульова цифра><послідовність цифр>

Чотири типи граматик по Хомському.

Граматика G = (T, N, P, S) називається граматикою типу 0, якщо на правила виводу не накладається ніяких обмежень (крім тих, котрі зазначені в означенні граматики).

Граматика G = (T, N, P, S) називається граматикою, що не укорочує, якщо кожне правило з P має вид ( a , b ), де a О (T И N)+, b О (T И N)+ і | a | <= | b |.

Граматика G = (T, N, P, S) називається контекстно-залежною ( КЗ ), якщо кожне правило з P має вид a ® b , де a = x 1Ax 2; b = x 1g x 2; A О N; g О (T И N)+; x 1,x 2 О (T И N)*.

Граматику типу 1 можна означити як таку, що не укорочує, або як контекстно-залежну.

Вибір означення не впливає на множину мов, породжуваних граматиками цього класу, оскільки доведено, що множина мов, породжуваних граматиками, що не укорочують, збігається із множиною мов, породжуваних КЗ-граматиками.

Граматика G = (T, N, P, S) називається контекстно-вільною, якщо кожне правило з Р має вид A ® b , де A О N, b О (T И N)*.

Граматику типу 2 можна визначити як контекстно-вільну.

Граматика G = (T, N, P, S) називається праволінійною, якщо кожне правило з Р має вид

A ® t або A ® t, де A О N, B О N, t О T.

Граматика G = (T, N, P, S) називається ліволінійною, якщо кожне правило з Р має вид

A ® Bt або A ® t, де A О N, B О N, t О T.

Граматику типу 3 (регулярну, A-граматику) можна визначити як праволінійну або як ліволінійну.

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

Соседние файлы в папке spz