Контрольні запитання на мкр №2
Синтаксичний аналіз в мовних процесорах
-
Які граматики називаються однозначними?
-
Які дві стратегії виведення ви знаєте?
-
Що таке синтаксичне дерево виведення?
-
Що таке лівосторонній аналіз ланцюжка?
-
Що таке синтез дерева за аналізом?
-
Які дві стратегії синтезу дерева за аналізом ви знаєте?
-
Що таке граматика з циклами і які проблеми вона створює для стратегії “згори донизу”?
-
Який підклас КС-граматик забезпечує стратегію аналізу “зверху донизу”?
Магазинні автомати
-
Що таке магазинний автомат?
-
Що таке конфігурація магазинного автомату?
-
Які конфігурації магазинного автомату називаються початковою і заключною?
-
Що таке такт роботи і робота магазинного автомату?
-
Яку мову розпізнає магазинний автомат?
-
Що таке проблема порожньої множини \(L(M)\)?
-
Як за КС-граматикою \(G\) побудувати магазинний автомат \(M\) такий, що \(L(G) = L(M)\)?
-
Яку стратегію виведення \(\omega\) в \(G\) реалізує побудований у попередньому питанні автомат, і яка обчислювальна складність алгоритму розпізнавання слова \(\omega\)?
Синтаксичний аналіз без повернення назад
-
Яка граматика називається \(LL(k)\)-граматика?
-
Чи кожна КС-граматика є \(LL(k)\)-граматикою для деякого \(k\)?
-
Яка \(LL(1)\)-граматика називається розподіленою?
-
Яку бінарну операцію над мовами позначає символ \(\oplus_k\)?
-
Яку мову (множину слів) позначає запис \(\text{First}_k(\alpha)\)?
-
Опишіть алгоритм пошуку \(\text{First}_k\) і доведіть його збіжність.
-
Яка \(LL(k)\)-граматика називається сильною?
-
Чи кожна \(LL(k)\)-граматика є сильною \(LL(k)\)-граматикою?
-
Яку мову (множину слів) позначає запис \(\text{Follow}_k(\alpha)\)?
-
Опишіть алгоритм пошуку \(\text{Follow}_k\) і доведіть його збіжність.
-
Який нетермінал \(A_i \in N\) називається \(\varepsilon\)-нетерміналом?
-
Опишіть алгоритм перевірки нетерміналу \(A_i \in N\) на \(\varepsilon\)-нетермінал і доведіть його збіжність.
-
Який нетермінал \(A_i \in N\) називається ліворекурсивним?
-
Опишіть алгоритм перевірки нетерміналу \(A_i \in N\) на ліву рекурсію і доведіть його збіжність.
Синтаксичний аналіз на \(LL(1)\)-граматиках
-
Які дві умови повинна задовольняти граматика щоб бути \(LL(1)\)-граматикою?
-
Що таке таблиця керування синтаксичного аналізатора на основі \(LL(1)\)-граматики?
-
Який автомат і яка таблиця використовуються в алгоритмі роботи \(LL(1)\)-синтаксичного аналізатора?
-
Опишіть алгоритм роботи \(LL(1)\)-синтаксичного аналізатора.
-
Як необхідно модифікувати таблицю керування для сильної \(LL(2)\)-граматики яка є майже \(LL(1)\)-граматикою?
-
Як необхідно модифікувати алгоритм роботи синтаксичного аналізатора для сильної \(LL(2)\)-граматики яка є майже \(LL(1)\)-граматикою?
Програмування синтаксичних аналізаторів
-
Який граф називається синтаксичною діаграмою?
-
Як на синтаксичній діаграмі позначаються термінали і нетермінали?
-
Як на синтаксичній діаграмі позначаються прості (без \(\vert\)) і складені (з \(\vert\)) правила?
-
Напишіть фрагмент коду (наприклад на мові С) для обробки терміналів і нетерміналів.
-
Напишіть фрагмент коду (наприклад на мові С) для обробки простих (без \(\vert\)) і складених (з \(\vert\)) правил.
-
Як на синтаксичній діаграмі позначаються правила вигляду \(A \mapsto \omega \mid \varepsilon\)?
-
Напишіть фрагмент коду (наприклад на мові С) для обробки правил вигляду \(A \mapsto \omega \mid \varepsilon\).
Побудова \(LL(k)\)-синтаксичного аналізатора
-
Наведіть визначення множини \(\text{Local}_k(S, A)\).
-
Опишіть алгоритм побудови \(\text{Local}_k(S, A)\).
-
Опишіть алгоритм побудови таблиць керування (або рядків великої результуючої таблиці керування).
-
Якою формулою визначається кількість рядків таблиці керування?
-
Опишіть алгоритм синтаксичного аналізу для \(LL(k)\)-граматики.
(традиційні відповіді можна переглянути у коментарях у вихідному коді цієї сторінки)