Введення
Для перетворення програми, представленої на одній з мов програмування, в програму на іншій мові і, у певному сенсі, рівносильну першої існують спеціальні програми - транслятори.
Перекладачі діляться на інтерпретатори і компілятори. Інтерпретатори виконують програму відразу ж залежно від реалізації порядково або цілком після попереднього аналізу. Компілятори перетворять програми в машинний мова, що приймається і виконуваний безпосередньо процесором. Деякі компілятори здатні вести себе як інтерпретатори, компілює програму безпосередньо в пам'ять. p align="justify"> Слід також зазначити, що вкрай важливою частиною процесу трансляції є точна діагностика помилок, допущених у вхідний програмі.
Завданням даної курсової роботи є проектування, і реалізація аналізує частини компілятора мови С + +. Мова реалізації С + +. br/>
Вимоги до реалізації компілятора
Базові вимоги до реалізації компілятора, на задоволення яких мають бути спрямовані розв'язку:
В· повнота і конформність стандарту мови - реалізація повинна підтримувати всі властивості мови С + +, визначені в стандарті, і забезпечувати повну відповідність стандарту;
В· універсальність - реалізація повинна забезпечувати необхідну спільність з тим, щоб підтримувати не тільки завдання трансляції, але і цілий ряд інших операцій над текстами С + + (аналіз програм, витяг семантичної інформації і т.д.);
В· ефективність - реалізація повинна забезпечувати продуктивність, порівнянну з сучасними промисловими компіляторами С + +.
Структура компілятора
Процес компіляції складається з наступних етапів.
1. Лексичний аналіз. На цьому етапі послідовність символів вихідного файлу перетвориться в послідовність лексем.
2. Синтаксичний (граматичний) аналіз. Послідовність лексем перетвориться в дерево розбору.
. Семантичний аналіз. Дерево розбору обробляється з метою встановлення його семантики (сенсу) - наприклад, прив'язка ідентифікаторів до їх деклараціям, типами, перевірка сумісності, визначення типів виразів і т. д. Результат зазвичай називається В«проміжним поданням/кодомВ», і може бути доповненим деревом розбору, новим деревом, абстрактним набором команд або чимось ще, зручним для подальшої обробки.
. Оптимізація. Виконується видалення зайвих конструкцій та спрощення коду із збереженням його сенсу. Оптимізація може бути на різних рівнях і етапах - наприклад, над проміжним кодом або над кінцевим машинн...