- •М. С. Нікітченко теорія програмування Частина 1
- •1. Формалізація простої мови програмування
- •1.1. Неформальний опис простої мови програмування
- •1.2. Формальний опис синтаксису мови sipl
- •1.3. Формальний опис семантики мови sipl
- •1.3.2. Функції
- •1.3.3. Композиції
- •1.3.4. Програмні алгебри
- •1.3.5. Визначення семантичних термів
- •1.3.6. Побудова семантичного терму програми
- •1.3.7. Обчислення значень семантичних термів
- •1.3.8. Загальна схема формалізації мови sipl
- •1.4. Властивості програмної алгебри
- •2. Розвиток основних понять програмування
- •2.1. Аналіз словникових визначень поняття програми
- •2.2. Розвиток поняття програми з гносеологічної точки зору
- •2.3. Розвиток основних понять програмування
- •2.3.1 Початкова тріада понять програмування
- •2.3.2. Тріада прагматичності програм
- •2.3.3. Тріада основних понять програмування
- •2.3.4. Пентада основних понять програмування
- •2.4. Розвиток основних програмних понять
- •2.4.1. Тріада основних програмних понять
- •Малюнок 2.7. Програма як діалектичне заперечення проблеми
- •2.4.2. Пентада основних програмних понять
- •2.5. Сутнісні та семіотичні аспекти програм
- •2.6. Програми і мови
- •2.7. Пентада програмних понять процесного типу
- •3. Формалізація програмних понять
- •3.1. Теоретико-функціональна формалізація
- •3.2. Класи функцій
- •3.3. Програмні системи
- •3.4. Рівні конкретизації програмних систем
- •4. Синтактика: формальні мови та граматики
- •4.1. Розвиток понять формальної мови та породжуючої граматики
- •4.2. Визначення основних понять формальних мов
- •4.3. Операції над формальними мовами
- •4.4. Породжуючі граматики
- •4.5. Приклад породжуючої граматики та її властивості
- •4.6. Ієрархія граматик Хомського
- •4.7. Автоматні формалізми сприйняття мов
- •4.7.1. Машини Тьюрінга
- •4.7.2. Еквівалентність машин Тьюрінга та породжуючих граматик
- •4.7.3. Лінійно-обмежені автомати
- •4.7.4. Магазинні автомати
- •4.7.5. Скінченні автомати
- •4.8. Методи подання синтаксису мов програмування
- •4.8.1. Нормальні форми Бекуса–Наура
- •4.8.2. Модифіковані нормальні форми Бекуса–Наура
- •4.8.3. Синтаксичні діаграми
- •4.9. Властивості контекстно-вільних граматик
- •4.9.1. Видалення несуттєвих символів
- •4.9.2. Видалення -правил
- •4.9.3. Нормальна форма Хомського
- •4.9.4. Нормальна форма Грейбах
- •4.9.5. Рекурсивні нетермінали
- •4.10. Властивості контекстно-вільних мов
- •4.11. Операції над формальними мовами
- •4.12. Дерева виводу
- •4.13. Однозначні та неоднозначні граматики
- •4.14. Розв’язні та нерозв’язні проблеми кв-граматик та мов
- •4.15. Рівняння в алгебрах формальних мов
- •5. Теорія рекурсії (теорія найменшої нерухомої точки)
- •5.1. Рекурсивні визначення та рекурсивні рівняння
- •5.2. Частково впорядковані множини, границі ланцюгів та -області
- •5.3. Неперервні відображення
- •5.4. Теореми про нерухомі точки
- •5.5. Конструювання похідних -областей
- •5.6 Властивості оператора найменшої нерухомої точки
- •5.7. Застосування теорії ннт
- •5.7.1. Уточнення синтаксису мов програмування
- •5.7.2. Семантика мов програмування
- •5.7.3. Рекурсивні розширення мови sipl
4.8.3. Синтаксичні діаграми
Для поліпшення зорового сприйняття і полегшення розуміння синтаксичних описів, застосовують подання синтаксичних правил у вигляді синтаксичних діаграм. Такі діаграми мають одну вхідну і одну вихідну стрілки. Схематично їх можна зображувати таким чином (D – внутрішність діаграми):
Синтаксичні діаграми є структурованими. Це означає, що вони визначаються індуктивно: є найпростіші діаграми, а більш складні будуються за допомогою певних правил.
Найпростішими є наступні діаграми:
Порожня діаграма
Термінальна діаграма ( a – термінальний символ)
Нетермінальна діаграма ( A – нетермінальний символ)
Далі вважаємо, що побудовані наступні діаграми:
Є три правила побудови нових діаграм з наведених:
Послідовність
Альтернатива
Ітерація
Діаграми можуть мати назву, яка є нетермінальним символом.
Сукупність іменованих діаграм задає певну формальну мову, кожне слово якої складається з термінальних символів, які знаходяться на шляху від початкової стрілки до заключної (від вхідної до вихідної стрілки), причому нетермінальні символи замінюються на термінальні слова, які задаються діаграмою, що називається цим нетермінальним символом.
Приклад 4.17. Наведемо кілька діаграм, які задають числа:
Цифра:
<цифра>
Ціле без знака:
<ціле
без знака>
Дійсне число (без експоненти):
Щоб скоротити кількість діаграм, їх часто об’єднують, заміняючи нетермінальні символи, які входять у діаграму, на побудовані для них діаграми.
За кожною БНФ можна побудувати систему синтаксичних діаграм. Метод побудови наступний (індукція за структурою БНФ):
порожньому слову відповідає порожня діаграма;
термінальному символу відповідає термінальна діаграма з цим символом;
нетермінальному символу відповідає нетермінальна діаграма з цим символом;
послідовності символів, що утворюють одну з альтернатив правої частини правила БНФ, відповідає послідовність діаграм, що задають символи цієї частини;
альтернативам правила (тобто виразу ::=1 | 2 | … n) буде відповідати діаграма – альтернатива для діаграм, побудованих за виразами 1, 2, … , n;
правилу A::=1 | 2 | … n буде відповідати деяка діаграма з іменем A, яка визначається для виразу 1 | 2 | … n.
Неважко побудувати і зворотній алгоритм, який за системою синтаксичних діаграм вказаного вигляду будує еквіваленту їй БНФ.
Таким чином, справедливе наступне твердження.
Твердження 4.1. Наступні формалізми подання формальних мов: БНФ, модифіковані БНФ, контекстно-вільні граматики, синтаксичні діаграми, є еквівалентними формалізмами.
Зауважимо, що наведене твердження не сформульовано як теорема лише тому, що не було дано достатньо точного визначення формальних мов, що породжуються такими формалізмами, як БНФ, модифіковані БНФ та синтаксичні діаграми. Разом з тим надати такі формальні визначення не дуже складно (зробіть це самостійно).
Зважаючи на наведене твердження, будемо в подальшому серед указаних формалізмів розглядати переважно формалізм контекстно-вільних граматик.