Пятница, 10.01.2025, 23:13
Главная Регистрация RSS
Приветствую Вас, Гость
Меню сайта
Категории раздела
Архітектура [235]
Астрономія, авіація, космонавтика [257]
Аудит [344]
Банківська справа [462]
БЖД [955]
Біографії, автобіографії, особистості [497]
Біологія [548]
Бухгалтерській облік [548]
Військова кафедра [371]
Географія [210]
Геологія [676]
Гроші і кредит [455]
Державне регулювання [154]
Дисертації та автореферати [0]
Діловодство [434]
Екологія [1309]
Економіка підприємств [733]
Економічна теорія, Політекономіка [762]
Економічні теми [1190]
Журналістика [185]
Іноземні мови [0]
Інформатика, програмування [0]
Інше [1350]
Історія [142]
Історія всесвітня [1014]
Історія економічна [278]
Історія України [56]
Краєзнавство [438]
Кулінарія [40]
Культура [2275]
Література [1585]
Література українська [0]
Логіка [187]
Макроекономіка [747]
Маркетинг [404]
Математика [0]
Медицина та здоров'я [992]
Менеджмент [695]
Міжнародна економіка [306]
Мікроекономіка [883]
Мовознавство [0]
Музика [0]
Наукознавство [103]
Педагогіка [145]
Підприємництво [0]
Політологія [299]
Право [990]
Психологія [381]
Реклама [90]
Релігієзнавство [0]
Риторика [124]
Розміщення продуктивних сил [287]
Образотворче мистецтво [0]
Сільське господарство [0]
Соціологія [1151]
Статистика [0]
Страхування [0]
Сценарії виховних заходів, свят, уроків [0]
Теорія держави та права [606]
Технічні науки [358]
Технологія виробництва [1045]
Логістика, товарознавство [660]
Туризм [387]
Українознавство [164]
Фізика [332]
Фізична культура [461]
Філософія [913]
Фінанси [1453]
Хімія [515]
Цінні папери [192]
Твори [272]
Статистика

Онлайн всего: 8
Гостей: 8
Пользователей: 0
Главная » Статьи » Реферати » Технічні науки

РЕФЕРАТ НА ТЕМУ: Створення найпростішого компілятора
«Основи побудови трансляторів».

Створення найпростішого компілятора.

Зміст.
Вступ.
1.Управління таблицею символів.
2.Аналіз і синтез.
3.Символи,шаблони,лексеми.
Висновок.
Список використаної літератури.

Вступ.
Компілятор- це програма, що перекладає з мови високого рівня на машинну мову. Прикладів можна навести багато: C, C++, Pascal, Ada, Fortran, Algol... Можна розширити це поняття, включивши сюди будь-які програми, що перекладають з однієї мови на іншу, наприклад, програми, що транслюють Паскаль у C. Проте більшість з них виконує дії, що є загальними для багатьох компіляторів, і тому будується на тих самих базових принципах.
Концептуально, транслятор працює пофазно, при ому в процесі кожної фази відбувається перетворення вихідної програми з одного представлення у інше. Типове розбиття компілятора на фази показано на рисунку .1.
Рисунок 2.1- Фази компілятора
На практиці, деякі фази транслятора можуть бути згруповані разом, проміжні фази всередині представлення програми можуть не створюватися.
Крім того, неформально, диспетчер таблиці символів та обробник помилок можуть вважатися фазами компілятора.
1.Управління таблицею символів.
Вона являє собою структуру даних, яка містить записи про кожного ідентифікатора з полями його атрибутів. Дана структура дозволяє легко знайти інформацію про необхідний ідентифікатор і внести зміни. Якщо лексичним аналізатором в вихідній програмі знайдено ідентифікатор, то він записується в таблицю символів. Наприклад, в оголошенні змінних на мові Pascal
var position, initial, rate : real
коли лексичний аналізатор знайде ці символи, то їх тим ще є невідомим.
В процесі решти фаз інформація про ідентифікатори вноситься в таблицю символів і використовується в різний спосіб. Наприклад, при семантичному аналізі необхідно знати генерації проміжного коду необхідно знати типи ідентифікаторів, щоби гарантувати їх коректне використання в вихідній програмі і згенерувати правильні операції по роботі з ними.
2.Аналіз і синтез.
Можна виділити дві основні частини процесу компіляції: аналіз і синтез. На першому етапі аналізується структура вихідного тексту і створюється деяке проміжне представлення програми. На другому етапі за цим представленням синтезується цільовий код. Неважко зрозуміти, що з цих двох етапів синтез більш спеціалізований, більше прив'язаний до конкретної ситуації.
Є кілька причин для поділу стадії аналізу компіляції на лексичний аналіз і синтаксичний аналіз:
1. Такий поділ часто дозволяє спростити одну з цих стадій. Якщо розробляється нова мова, то поділ лексичних (мовних) і синтаксичних (правил правопису) приводить до більш зрозумілої структури мови в цілому.
2. Поліпшується ефективність компілятора. Окремий лексичний аналізатор дозволяє будувати спеціалізований і більш ефективний обробник для задачі. Багато часу витрачається при читанні вихідної програми і розбитті її на лексеми. Особлива техніка буферизації для читання вхідних символів і обробки лексем може значно прискорити швидкодію компілятора.
3. Розширюється переносимість компілятора. Особливості вхідного алфавіту і інші, залежні від пристрою вводу аномалії зачіпають тільки лексичний аналізатор.
Розроблені спеціалізовані засоби, що полегшують автоматизацію розробки лексичних і синтаксичних аналізаторів, коли вони відділені один від іншого.
Багато програм, що формально не є компіляторами, виконують аналіз вихідного тексту. Як приклади можна навести:
1. Структурні редактори. На відміну від звичайних текстових редакторів, ці редактори орієнтовані на конкретний тип документів. Наприклад, є текстові редактори, які при введенні програм на C чи C++ самі робить потрібні відступи в вкладених блоках, виділяють різним кольором елементи програми, можуть перевіряти відповідність дужок та ін.
2. Програми красивого друку. Як і в попередньому прикладі, вони аналізують текст програми і друкують його, виділяючи лексичні елементи жирним шрифтом, курсивом, підкресленням і т.ін.
3. Інтерпретатори. Вони відрізняються від компіляторів тим, що не видають цільовий код, а виконують проаналізовані команди. Такі мови, як Smalltalk чи Lisp, є інтерпретованими. Деякі мови компілюються не в машинний код, а в спеціалізований код, що потім інтерпретується; у якості прикладу можна назвати Java чи ранні версії Clipper'a. До інтерпретаторів відносяться командні оболонки операційних систем, наприклад, COMMAND.COM. Інтерпретатором певною мірою є і процесор ЕОМ.
4. Утиліти для обробки текстів. Наприклад, програма grep шукає в тексті фрагменти, що можуть мати досить складну структуру, а програма awk виконує складні перетворення текстових файлів.
5. Програми форматування текстів. Як приклад можна назвати систему підготовки наукових текстів TeX. При наборі в текст вставляються спеціальні команди форматування; компілятор TeX видає опис документа у двійковому форматі, що потім інтерпретується програмами перегляду і друку. Сюди ж можна віднести програми, що працюють з такими форматами, як RTF чи HTML, а також препроцесори текстів програм.
6. Засоби для розробки компіляторів. Такі програми приймають на вході опис мови і генерують програму-аналізатор.
7. "Силіконові компілятори". Сучасні інтегральні схеми настільки складні і містять так багато логічних елементів, що їх уже давно ніхто не проектує вручну від початку до кінця. Замість цього логіка схеми описується на спеціалізованій мові високого рівня; спеціальні автомати за цим описом виготовляють матриці для схем.
Лексичний аналіз є першою фазою компіляції. Його основна задача - читання вхідних символів і формування послідовності термінальних символів мови для синтаксичного аналізатора. Іноді лексичний аналізатор розділяють на дві фази: сканування і власне лексичний аналіз.
Лексичний аналіз призначений для групування символів вхідного ланцюжка в більш великі конструкції, називані лексемами. З кожною лексемою зв'язано два поняття:
- клас лексеми, що визначає загальну назву для категорії елементів, що володіють загальними властивостями (наприклад, ідентифікатор, ціле число, рядок символів і т.д.);
- значення лексеми, що визначає підрядок символів вхідного ланцюжка, що відповідають розпізнаному класу лексеми. У залежності від класу, значення лексеми може бути перетворене у внутрішнє представлення вже на етапі лексичного аналізу. Так, наприклад, роблять з числами, перетворюючи їх у двійкове машинне представлення, що забезпечує більш компактне збереження і перевірку правильності діапазону на ранній стадії аналізу
3.Символи, шаблони, лексеми.
У загальному випадку є множина вхідних рядків, для яких лексичний аналізатор видає той самий відповідний їм термінальний символ мови (поняття, token). Ця множина рядків задається шаблоном, що пов'язаний з даним символом мови. Говориться, що шаблон відповідає (match) кожному рядку множини. Лексема - це ланцюжок символів вхідної програми, відповідна шаблону для символу.
Символи (tokens) | Приклади лексем | Неформальний опис шаблону
const | const | const
if | if | if
relation | <, <=, = | < або <= або = або <> або >= або >
id | pi, count, D2 | буква з наступними за нею буквами і цифрами
num | 3.1416, 6.02E23 | будь-яка цілочисельна константа
Шаблон - це правило, що описує множину лексем. Шаблон для символу const - це єдиний рядок const, що повторює ключове слово. Шаблон для символу relation є множина усіх відношень Паскаля. Для точного опису шаблонів більш складних символів, таких як id чи num використовується нотація регулярних виразів.
Висновок.
Сьогодні штучні мови широко застосовуються не тільки в програмуванні, але і в інших областях. З їхньою допомогою описується структура різного роду документів, тривимірних віртуальних світів, графічних інтерфейсів користувача й багатьох інших об'єктів, що використовуються у моделях і в реальному світі. Для того, щоб ці текстові описи були коректно складені, а потім правильно розпізнані й інтерпретовані, використовуються спеціальні методи їхнього аналізу й перетворення. В основі методів лежить теорія мов і формальних граматик, а також теорія автоматів. Програмні системи, призначені для аналізу й інтерпретації текстів (в тому числі текстів програм), називаються трансляторами.

Список_використаної_літератури.
1. Ахо А., Сети Р., Ульман Дж. Компілятори. Принципи, технології, інструменти. М.: Вид-во «Вільямс», 2001.–768 с.
2. Ахо А., Ульман Дж. Теорія синтаксичного аналізу, перекладу і компіляції. Том 1,2. М., Світ.
3. Хантер Р. Проектування і конструювання компіляторів.
4. Льюис Ф., Розенкранц Д., Стирна Р. Теоретичні основи проектування компіляторів.
5. Пратт Т. Мови програмування: розробка і реалізація.
6. Грис Д. Конструювання компіляторів для цифрових обчислювальних машин.
Категория: Технічні науки | Добавил: DoceNt (20.12.2014)
Просмотров: 297 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: