DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Розробка та реалізація компонент системного програмного забезпечення

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2005
Тип роботи:
Курсова робота
Предмет:
Системне програмне забезпечення
Група:
КН-11
Коротко про документ

Про що ця робота

У курсовому проєкті розроблено компілятор із простої вхідної мови програмування на мову Сі. Робота містить детальний опис лексичного та синтаксичного аналізаторів, генератора коду й результати тестування.

У роботі розглядаються

  • Системне програмне забезпечення
  • Теорія трансляції
  • Лексичний аналіз
  • Синтаксичний аналіз
  • Генерація коду
  • Мова програмування Сі
  • Формальні граматики

Зміст і розділи

  1. Анотація
  2. Завдання на курсовий проект
  3. Формальний опис вхідної мови програмування
  4. Розробка компілятора вхідної мови програмування
  5. Розробка лексичного аналізатора
  6. Розробка синтаксичного аналізатора
  7. Розробка генератора коду
  8. Відладка та тестування компілятора
  9. Висновки
  10. Література
  11. Додаток А. Текст програми
  12. Додаток Б. Тестові програми
Для кого:Студенти технічних спеціальностей, викладачі та розробники програмного забезпечення.
Викладачі:Викладач кафедри електронних обчислювальних машин

Ключові поняття

генератор кодутокенлексемаграмматиканотація Бекуса-Науравхідна мова

Частина тексту файла (без зображень, графіків і формул):

Національний університет “Львівська Політехніка” Кафедра “Електронні обчислювальні машини” КУРСОВИЙ ПРОЕКТ на тему: „Розробка та реалізація компонент системного програмного забезпечення” Львів 2005 Анотація В курсовому проекті розроблено компілятор з простої мови програмування . Компілятор розроблений в середовищі програмування Borland C/C++ на мові С, та поданий у пояснювальній записці, а також в електронному варіанті. В пояснювальній записці подано огляд існуючих методів розробки компіляторів, детальний опис мови, а також описано процес розробки програми компілятора на рівні блок-схем ексту програми. В додатку міститься текст компілятора, а також результати тестування програми. Завдання на курсовий проект Розробити транслятор заданої вхідної мови програмування, до якої висуваються наступні базові вимоги : Кожна програма починається зі слова start і закінчується словом stop. Все що до start і після stop не аналізується. Наприклад як у мові Паскаль begin end. Програма має надавати можливість працювати зі змінними. Змінні перед використанням мають бути попередньо оголошені за наступним форматом: “тип даних” “змінна1”, “змінна2”; Наприклад int x,y; Присвоєння до змінних виконується оператором присвоєння :=. Наприклад x:=y+5; Програма має надавати можливість працювати з константами. Константи ініціюються наступним чином: “константа” = “число;”. Наприклад а=3; Ввід даних зі стандартного вводу відбувається оператором input(), а вивід оператором output(). Наприклад input(x); output (y). Програма має працювати з типом даних char, int. Програма має виконувати операції  EMBED Equation.3 ,&,~,> Програма має надавати можливість використовувати оператор case (Pascal) Програма має надавати можливість працювати з масивами. Вихідною мовою трансляції є мова С. Математичний вираз має бути розібраний в залежності від пріоритету виконання та розписаний викликом власних С функцій. Цільова мова компілятора: ANSI C. Для отримання виконавчого файлу на виході розробленого компілятора скористатися програмою bcc.exe. Мова розробки компілятора: ANSI C. Реалізувати інтерфейс командного рядка. На вхід розробленого компілятора має подаватися текстовий файл, написаний на заданій мові програмування. На виході розробленого компілятора мають з’являтися чотири файли: файл з повідомленнями про помилки (або про їх відсутність), файл на мові СІ, об’єктний та виконавчий файли. Назва вхідної мови програмування утворюється від першої букви у прізвищі студента та номеру його варіанту. Саме таке розширення повинні мати текстові файли, написані на цій мові програмування. Зміст Анотація……………………………………………………………………….……………..2 Завдання на курсовий проект....................................................................................3 Формальний опис вхідної мови програмування.......................................................5 Розробка компілятора вхідної мови програмування...............................................7 Формальний опис вхідної мови програмування.................................................7 2.1.1Повне дерево граматичного розбору………………………….………………….9 Розробка лексичного аналізатора....................................................................11 Розробка синтаксичного аналізатора...............................................................13 Розробка генератора коду.................................................................................15 Відладка та тестування компілятора......................................................................16 Висновки...................................................................................................................17 Література.................................................................................................................18 Додаток А. Текст програми………………………………………………..……..................19 Додаток Б. Тестові програми ........................................................................................31 Аналітичний розділ Компілятор – програма, яка зчитує текст програми, що написана на одній мові –вхідній, і транслює (переводить) його в еквівалентний текст на іншій мові – цільовій. Процес компіляціі складається з двох частин: аналізу та синтезу. Аналіз – це розбиття вхідної програми на складові частини та створення її проміжного представлення. Синтез – це процес конструювання потрібної цільової програми із проміжного представлення. Стосовно компіляції аналіз поділяють на три фази – лінійного, ієрархічного та семантичного аналізу. Під час лінійного аналізу потік символів вхідної програми зчитується зліва направо і групується у токени (token) – послідовності символів із певним спільним значенням. Тобто токеном є сукупність символів із певним логічним значенням. Сукупність символів, що формує токен – це лексема. Фаза ієрархічного аналізу передбачає процес, коли символи чи токени ієрархічно групуються у вкладені конструкції із спільним значенням. Семантичний аналіз – перевіряє коректність спільного розташування компонентів програми. Лінійний аналіз – це, власне, і є лексичний аналіз або сканування. Лексичний аналізатор – це, відповідно, програма, котра втілює принципи такого лінійного аналізу. Для прикладу розглянемо таку конструкцію: point = init + var * 23 Отримавши таку інструкцію лексичний аналізатор згрупує наступні послідовності символів, токени: 1. ідентифікатор point. 2. символ присвоєння =. 3. ідентифікатор init. 4. знак додавання. 5. ідентифікатор var. 6. знак множення. 7. число 23. Пробіли, що розділяють токени, зазвичай ігноруються. Коротко роботу лексичного аналізатора можна описати так: аналізатор зчитує символи із вхідного потоку, групує їх в лексеми та передає токени, які створені цими лексемами, разом з їх атрибутами синтаксичному аналізатору. Стосовно методів лексичний анлізатор можна поділити на прямий а непрямий лексичний аналізатор. Непрямий лексичний аналіз полягає у послідовній перевірці лексем на відповідність токенам. Якщо аналізатор не „впізнає” в поточній лексемі один з токенів, то відбувається повернення у потоці вхідних символів і здійснюється перевірка на відповідність наступному токену. А прямий лексичний аналіз дозволяє визначити відповідний токен без повернення в потоці вхідних символів. Непрямий лексичний аналізатор як програма на мові високого рівня складається із окремих функцій, кожна з яких розпізнає лише одну лексему. Такі функції мають схожу структуру та відрізняються, в основному, тільки лексемою, що потрібна для порівняння із вхідною. Функції викликаються в певному порядку, що визначається перевагою в аналізі одних лексем перед іншими. Наявність приорітету пояснються тим, що деякі лексеми мають подібні початкові символи і деякі лексеми можуть складатися із простіших лексем. Прямий лексичний аналізатор як програма складається із функцій, що розпізнають окремі лексеми. Така програма зчитує один вхідний символ на кожному кроці і передає його функції, яка може розпізнати лексему чи сформувати помилку. Для лексем, що мають подібні послідовності символів, існують функції, які розпізнають саме ці послідовності. В цих функціях реалізовані інші функції, що розпізнають решту символів у лексемах. Повідомлення про помилку може бути згенеровано тоді, коли не знайдено відповідної послідовності символів. 2. Розробка компілятора вхідної мови програмування     2.1. Формальний опис вхідної мови програмування Одною з перших задач, що виникають при побудові компілятора, є визначення вхідної мови програмування. Для цього я використовую розширену нотацію Бекуса-Наура (Backus/Naur Form - BNF). Перелік термінальних символів та ключових слів
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!