The ключова різниця Розбір між вершиною вниз і знизу вгору - це те, що з верху до низу синтаксичний аналіз виконує синтаксичний аналіз від символу зірки до вхідного рядка, в той час як розбір знизу вниз виконує розбір від вхідного рядка до початкового символу. Крім того, ще одна важлива відмінність між синтаксичним розбором зверху вниз та знизу вгору полягає в тому, що при синтаксичному розборі згори вниз використовується найбільше виведення, а синтаксичний аналіз знизу вниз використовує найбільшу правоту.
Мови високого рівня допомагають писати комп'ютерні програми. Їх легше зрозуміти програмісту, але не комп’ютером. Тому програма високого рівня перетворюється на машинний код. Завдання компілятора - перетворити читаний людиною вихідний код у машиночитаний машинний код. Програма проходить кілька кроків для перетворення в машинний код. Весь цей процес називається Системою обробки мови. Один з них - складання. Аналізатор синтаксису або аналізатор знаходиться в компіляторі, і він виконує завдання розбору.
1. Огляд та ключові відмінності
2. Що таке "Паршинг зверху вниз"
3. Що таке розбір знизу вгору
4. Порівняння порівняння - розбиття вгору проти низу вгору в табличній формі
5. Підсумок
Кожна мова програмування має набір правил для представлення мови. Аналізатор синтаксису або синтаксичний аналіз приймає рядок введення і перевіряє, чи відповідає він граматичним результатам. Іншими словами, граматика повинна створити цей рядок, використовуючи дерево розбору.
У синтаксичному розборі зверху вниз розбір відбувається від символу старту і досягне заданого рядка введення. Розглянемо наступні правила виробництва граматики. Вхідний рядок (w) - cad.
S -> cAd
А -> аб / а
Дерево розбору після виконання розбору зверху вниз виглядає наступним чином.
Рисунок 01: Дерево розбору 1 з розбором зверху вниз
S виробляють c A d, а A виробляє a b. Рядок капустяний. Це не обов'язковий рядок. Отже, потрібно робити зворотний трек, який полягає у використанні інших альтернатив.
Аналогічно S виробляють c A d. Застосування іншого варіанту для A дасть a. Тепер він дає необхідний рядок. Тому аналізатор приймає цей вхідний рядок. Дерево розбору після виконання розбору зверху вниз виглядає наступним чином.
Малюнок 02: Розбір дерева 2 з розбором згори вниз
Розглянемо наступні правила виробництва граматики.
S -> aABe
A -> Abc / b
В -> д
Розбір зверху вниз,
S -> aABe (Заміщення A -> Abc)
S -> aAbcBe (Заміщення A -> b)
S -> abbcBe (Заміщення B -> d)
S -> abbcde
Заміна починається спочатку з самої змінної зліва, а потім у наступну праву позицію тощо. Таким чином, він слідує найбільш лівому методу виведення. Крім того, важливо вирішити, яке правило виробництва обрати, коли існує змінна.
Аналіз знизу вгору відбувається інакше. Аналіз відбувається від вхідного рядка до початкового символу. Розглянемо наступні правила створення граматики і нехай вхідний рядок буде w-cad
S -> cAd
А -> аб / а
Дерево розбору після виконання аналізу внизу вгору виглядає наступним чином.
Малюнок 03: Дерево розбору з розбором знизу
Даний рядок є cad. A породжується A. Комбінація c, A і d отримує вихідний символ S.
Розглянемо наступні правила виробництва граматики.
S -> aABe
A -> Abc / b
В -> д
Розбір знизу вгору,
S -> aABe (Заміщення B -> d)
S -> aAde (Заміщення A -> Abc)
S -> aAbcde (Підстановка A -> b)
S -> abbcde
Заміна починається спочатку з найбільш правої змінної, а потім переходить у наступне ліве положення тощо. Тому слід за методом виведення лівого мота.
Розбір зверху вниз - це стратегія розбору, яка спочатку дивиться на найвищий рівень дерева розбору і працює вниз по дереву розбору, використовуючи правила формальної граматики. Нижній синтаксичний аналіз - це стратегія розбору, яка спочатку дивиться на найнижчий рівень дерева розбору та опрацьовує дерево розбору за допомогою правил формальної граматики. Синтаксичний аналіз відбувається від початкового символу до вхідного рядка, в розборі зверху вниз. З іншого боку, синтаксичний аналіз відбувається від вхідного рядка до початкового символу, в нижньому розборі.
Крім того, головним рішенням при синтаксичному розборі зверху є вибір того, яке правило виробництва використовувати для побудови рядка, тоді як основним рішенням при синтаксичному аналізі знизу є вибір, коли використовувати виробниче правило, щоб зменшити рядок, щоб отримати початковий символ. Більше того, при синтаксичному розборі згори вниз використовується найбільше виведення, а внизу вниз використовується синтаксичний аналіз.
Різниця між синтаксичним розбором зверху вниз та знизу вгору полягає в тому, що синтаксичний аналіз згори вниз виконує розбір від символу зорі до вхідного рядка, тоді як розбір знизу вниз виконує розбір від вхідного рядка до початкового символу.
1. «Лекція проектування компілятора 5 - Вступ до аналізаторів і LL (1) Паршинг». Лекція проектування компілятора 5 - Вступ до аналізаторів і LL (1) Паршинг, Лекції з воріт Равіндрабабу Равула, 22 травня 2014 р. Доступні тут