|
|||||||
|
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Синтаксичний аналіз в мовних процесорах
Для визначення синтаксичної компоненти мови програмування використовують контекстно-вільні граматики (КС-граматики). На відміну від скінчено-автоматних граматик потужність класу КС-граматик достатня, щоб визначити майже всі так звані синтаксичні властивості мов програмування. Якщо цього недостатньо, то розглядають деякі спрощення у граматиках типу 2 або параметричні КС-граматики. Звичайно, із синтаксичною компонентою мови програмування пов'язана семантична компонента. Тоді, якщо ми говоримо про семантику мови програмування, ми вимагаємо семантичної однозначності для кожної вірно написаної програми. За аналогією з семантикою, при описі синтаксичної компоненти мови програмування необхідно користуватися однозначними граматиками. Означення. Граматика G називається неоднозначною, якщо існує декілька варіантів виводу Приклад. Розглянемо таку граматику
Покажемо, що для ланцюжка 1. 2. В теорії граматик розглядається декілька стратегій виведення ланцюжка Лівостороння стратегія виводу ланцюжка Означення. Синтаксичне дерево виводу Алгоритм. Побудова синтаксичного дерева ланцюжка П1. Будуємо корінь дерева та позначимо його аксіомою S. П2. В схемі P граматики G візьмемо правило виду Пі. На кроні дерева, побудованого на попередньому кроку, візьмемо перший зліва направо нетермінал. Нехай це буде S
… …..
Пункт Пі виконувати доти, доки на кроні дерева будуть елементи з Відмітимо очевидні факти, що випливають з побудови синтаксичного дерева: - крона дерева, зображеного на мал. 2 наступна - для однозначної граматики G існує лише одне синтаксичне дерево виводу S
……….
Мал. 2. Означення. Будемо говорити, що ланцюжок Означення. Лівостороннім аналізом Приклад: Для граматики
для ланцюжка
З наведеного вище виводу ланцюжка Нехай - стратегія "зверху донизу"; - стратегія "знизу вгору".
a Мал. 4 Стратегія синтаксичного аналізу "зверху донизу" – це побудова синтаксичного дерева крок за кроком починаючи від кореня до крони. Алгоритм 2. Синтез синтаксичного дерева на основі лівостороннього аналізу П0: Побудуємо корінь дерева та позначимо його аксіомою S. Тоді, якщо П1: Побудуємо дерево висоти один, взявши зі схеми Р правило з номером р1 виду S
… …..
Мал. 5. Пі: На кроні дерева, отриманого на попередньому кроку, візьмемо перший зліва направо нетермінал (нехай це буде нетермінал Сформулюємо декілька проблем для стратегії аналізу "зверху донизу": - у загальному випадку у класі КС-граматик існує проблема неоднозначності (недетермінізму) виводу
- як наслідок з попереднього пункту, граматики з ліворекурсивним нетерміналом для стратегії аналізу "зверху донизу" недопустимі. - існують підкласи класу КС-граматик, які природно забезпечують стратегію аналізу "зверху донизу". Один з таких підкласів — це LL(k)-граматики, які забезпечують синтаксичний аналіз ланцюжка Поиск по сайту: |
||||||
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (1.27 сек.) |