
- •Описати омновні принципи класифікації мов програмуванняю
- •Що таке мова програмування. Описати універсальні й спеціалізовані мови.
- •Формальні мови. Основні поняття і визначення.
- •Формальне визначення граматики g(V). Що таке продукція? Опишіть поняття термінального і не термінального символу.
- •Формальне визначення мови l(g). Види мов.
- •6. Що таке граматика ? Дайте визначення і наведіть приклади.
- •8. Класифікація граматик і мов за Хомським. Співвідношення між типами граматик.
- •9. Які калси граматик існують ? Які граматики відносяться до класу регулярних граматик ?
- •10.Що таке ланцюжки виводу та сентенціальна форма ? Опишіть проблеми однозначності і еквівалентності граматик.
- •11 (8). Опишіть способи представлення граматики мов. Що таке синтаксичні діаграми ?
- •12. Дерево синтаксичного розбору. Перехід від дерева до правил формальної граматики.
- •13. Як виглядає опис граматики у формі Бєкуса-Наура.
- •14. Дайте визначення ланцюжка, мови. Що таке синтаксис і семантика мови ?
- •15 (11). Опишіть способи представлення граматики мов. Що таке синтаксичні діаграми
- •16. Перетворення граматик.
- •17. Що таке розпізнавач. У чому полягає задачі розбору ?
- •18. Формальне визначення автомата.
- •19. Що таке скінченний автомат? Дайте визначення детермінованого й не детермінованого скінчених автоматів.
- •20. Скінченний автомат. Описати характеристики скінченного автомата.
- •21. Описати зв’язок граматики із скінченним автоматом.
- •22. Визначте структуру скінченного автомата і функції його елементів .
- •23. Опишіть способи завдання функцій переходів са.
- •24. Опишіть алгоритм побудови дса по нса
- •25. Регулярні граматики. Способи завдання регулярних мов.
- •26. Скінченні автомати. Регулярні граматики. Регулярні множини.
- •27. Побудова са на основі ліволінійної граматики, видимості ланцюжка.
- •28 (25). Властивості регулярних мов
- •29. Описати основні поняття автомата з магазинною пам’ятю, його структуру і характеристики.
- •30. Дайте визначення контекстно-вільної граматики, виводимості ланцюжка, безпосередньої виводимості, довжини виводу.
- •31 (30). Описати основні компоненти контекстно-вільних граматик.
- •32. Перетворення контекстно вільних граматик.
- •33. Приведення контекстно-вільних граматик.
- •34. Опишіть принципи побудови лексичних аналізаторів.
- •43. Опишіть переваги і недоліки таблиць ідентифікаторів за допомогою хеш-функцій. Що таке колізія? Чому вона відбувається?
- •44. Опишіть найпростіші методи побудови таблиць ідентифікаторів.
- •49. Опишіть клас граматики, який використовується на етапі створення синтаксичного аналізатора.
- •50. Опишіть lr(k)-граматики.
- •51. Опишіть ll(k)-граматики.
- •52. Транслятори, компілятори та інтерпретатори – описати загальну схему роботи.
- •53. З яких процесів складається компіляція? Опишіть загальну структуру компілятора.
- •54. Що таке трансляція, компіляція, транслятор, компілятор ?
- •55. Опишіть загальну схему роботи компілятора.
- •57. Семантичний аналіз та підготовка до генерації коду.
- •58. Що таке генерація коду? Опишіть методи генерації коду.
- •59. Способи внутрішнього представлення програми.
- •60. Що таке оптимізація коду. Опишіть загальні методи оптимізації.
43. Опишіть переваги і недоліки таблиць ідентифікаторів за допомогою хеш-функцій. Що таке колізія? Чому вона відбувається?
Колізією хеш-функції
називаються
два різних вхідних
блоки даних
і
таких,
що
Колізії існують для більшості хеш-функцій, але для «хороших» хеш-функцій частота їх виникнення близька до теоретичного мінімуму. В деяких окремих випадках, коли множина різних вхідних даних є скінченною, можна задатиін'єктивну хеш-функцію, за визначенням без колізій. Однак, для хеш-функцій, які приймають вхідні дані змінної довжини і повертають хеш постійної довжини (таких як MD5), колізії обов'язково будуть існувати, оскільки хоча б для одного значення хеш-функції відповідна йому вхідна множина значень буде безкінечною — і будь-які два значення з цієї множини утворюють колізію.
44. Опишіть найпростіші методи побудови таблиць ідентифікаторів.
У найпростішому разі таблиця ідентифікаторів є лінійнийнеупорядоченний список, чи масив, кожна осередок якого містить даних про відповідному елементі таблиці. Розміщення нових елементів у такому таблиці виконується шляхом записи інформацією ще один осередок масиву чи списку принаймні виявлення нових елементів в вихідної програмі. Пошук потрібного елемента у таблиці буде зацікавлений у цьому випадку виконуватися шляхом послідовного перебору всіх елементів і порівняння їхніх імені безпосередньо з ім'ям шуканого елемента, поки що не знайдено елемент з такою самою ім'ям. Тоді якщо на одиницю часу прийняти час, затрачуване компілятором на порівняння двох рядків (у сприйнятті сучасних обчислювальних системах таке порівняння найчастіше виконується однієї командою), то тут для таблиці, що містить N елементів, загалом буде виконаноN/2 порівнянь.
45 (34). Описати зв’язок лексичного і синтаксичного аналізаторів?
46. Описати клас граматики, який використовується на етапі створення лексичного аналізатора.
-
47. Опишіть синтаксичний аналізатор і результати його роботи.
Синтакси́чний ана́ліз (па́рсинг) (англ. parsing) — в інформатиці це процес аналізу вхідної послідовності символів, з метою розбору граматичної структури згідно із заданою формальною граматикою. Синтаксичний аналізатор (англ.parser) — це програма або частина програми, яка виконує синтаксичний аналіз.
48. Опишіть методи синтаксичного розбору.
Синтаксичний розбір виділяє синтаксичні конструкції в тексті вхідної програми, яка оброблена лексичним аналізатором.
Виділяються два основні методи синтаксичного розбору :низхідний розбір ; висхідний розбір . Крім цього можна використовувати комбінований розбір , що поєднує особливості двох попередніх. Спадні і висхідні підходи широко використовуються в різних галузях людської діяльності, особливо в тих з них , які пов'язані з аналізом і синтезом штучних систем . Зокрема , можна відзначити методи розробки програмного забезпечення зверху вниз ( низхідний) і знизу вгору ( висхідний) .
Спадний розбір полягає в побудові дерева розбору , починаючи від кореневої вершини . Розбір полягає в заповненні проміжку між початковим нетерміналом і символами вхідного ланцюжка правилами , виведеними з початкового нетермінала . Підстановка грунтується на тому факторі , що коренева вершина є вузлом , що складається з листя , які є ланцюжком терміналів і нетерміналів одного з альтернативних правил , породжуваних початковим нетерміналом .
При висхідному розборі дерево починає будуватися від термінальних листя шляхом підстановки правил , застосовних до вхідних ланцюжку , знову таки , в загальному випадку , в довільному порядку. На наступному кроці нові вузли отриманих піддерев використовуються як листя у знову застосовуваних правилах. Процес побудови дерева розбору завершується , коли всі символи вхідного ланцюжка будуть листям дерева , коренем якого виявиться початковий нетермінал . Якщо , в результаті повного перебору всіх можливих правил , ми не зможемо побудувати необхідну дерево розбору , то розглянутий вхідний ланцюжок не належить даній мові .