Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

Информатика->Реферат
Вектор состояния, или слово состояния программы (ССП), в любой момент времени должен содержать информацию, достаточную для продолжения выполнения прог...полностью>>
Информатика->Реферат
Разработать даталогическую модель реляционной базы данных в среде выбранной СУБД (определить базовые таблицы, первичные и внешние ключи, выполнить нор...полностью>>
Информатика->Реферат
В современных экономических условиях, когда многим предприятиям приходится балансировать на грани рентабельности, а конкуренция на рынке обостряется, ...полностью>>
Информатика->Реферат
Для контроля правильности работы необходимо разработать тест. Для этого выбрать координаты двух точек по формуле рассчитать длину отрезка между ними и...полностью>>

Главная > Реферат >Информатика

Сохрани ссылку в одной из сетей:

Анотація

В курсовій роботі був розроблений транслятор з вхідної мови програмування, заданої завданням, на мову асемблер, з подальшою компіляцією отриманого коду і створення виконавчого файлу. Даний транслятор виконує лексичний аналіз, синтаксичний і семантичний, при наявності помилок у вхідному тексті програми створює список помилок і попереджень. У курсовій роботі створений лексичний аналізатор на базі скінченного автомата, а синтаксичний аналізатор на основі низхідного методу з використанням рекурсивного спуску.

Транслятор був розроблений за допомогою технології C# в середовищі MS Visual Studio 2010.

Зміст

Анотація……………………………………………………………………………………2

Зміст………………………………………………………………………………………3

Завдання на курсову роботу……………………………………………………………..4

Вступ………………………………………………………………………………………5

  1. Огляд методів та способів проектування трансляторів………………………….7

  2. Формальний опис вхідної мови програмування………………………………….8

    1. Деталізований опис вхідної мови в термінах розширеної нотації

Бекуса-Наура…………………………………………………………………………………….8

    1. Опис термінальних символів та ключових слів……………………………………..10

  1. Розробка транслятора вхідної мови програмування……………………………12

    1. Вибір технології програмування………………………………………………………12

    2. Проектування таблиць транслятора та вибір структур даних………………13

    3. Розробка лексичного аналізатора……………………………………………………16

      1. Розробка граф-схеми алгоритму…………………………………………17

      2. Опис програми реалізації лексичного аналізатора…………………..17

    4. Розробка синтаксичного та семантичного аналізатора……………………….19

      1. Розробка дерев граматичного розбору…………………………………20

      2. Розробка граф-схеми алгоритму…………………………………………21

      3. Опис програми реалізації синтаксичного та

семантичного аналізатора…………………………………………………………………..22

    1. Розробка генератора коду…………………………………………………………….23

      1. Розробка граф-схеми алгоритму…………………………………………23

      2. Опис програми реалізації генератора коду…………………………….24

  1. Опис інтерфейсу та інструкції користувача……………………………………..25

  2. Відлагодження та тестування програми…………………………………………27

    1. Виявлення лексичних помилок………………………………………………………….27

    2. Виявлення синтаксичних помилок…………………………………………………….28

    3. Виявлення семантичних помилок……………………………………………………..29

    4. Загальна перевірка коректності роботи транслятора…………………………30

Висновки…………………………………………………………………………………31

Список літератури……………………………………………………………………..32

Додатки………………………………………………………………………………….33

А. Лістинг програм……………………………………………………………………………33

Завдання на курсову роботу

Тема: Розробка транслятора з вхідної мови програмування.

- типи даних: INT32_t, BOOLEAN, const string;

- оператор вводу: READ;

- оператор виводу: WRITE;

- блок тіла програми: START, FINISH

- оператор: WHILE DO (Паскаль);

- регістр ключових слів: Up;

- регістр ідентифікаторів: Low2 ;

- операції арифметичні: ADD, SUB, MUL, DIV,MOD;

- операції порівняння: =, <>, LE, GE

- операції логічні: !, &, |;

- коментар: $$...

- ідентифікатори змінних, числові константи, рядкові константи;

- оператор присвоєння: >>;

Для отримання виконавчого файлу з вихідного асемблерного коду потрібно використовувати ml.ex (MASM32) вбудований в MS Visual Studio 2010.

Вступ

Транслятор – програма або технічний засіб, що виконує трансляцію програми. Транслятор зазвичай виконує також діагностику помилок, формує словники ідентифікаторів, видає для друку тексти програми і т. д.

Трансляція програми – перетворення програми, представленої на одній з мов програмування, в програму на іншій мові, в певному сенсі, рівносильну з першою. Мова, на якій представлена вхідна програма, називається вихідним мовою, а сама програма – вихідним кодом. Вихідна мова називається цільовою мовою або об'єктним кодом.

Поняття трансляції відноситься не тільки до мов програмування, але і до інших комп'ютерних мов, на зразок мов розмітки, аналогічних HTML, і до природних мов, на зразок англійської або російської

Транслятори поділяються на:

  • Адресний.

  • Діалоговий.

  • Багатопрохідної.

  • Зворотний. (детранслятор).

  • Однопрохідної.

  • Оптимізуючий.

  • Синтаксично-орієнтований (синтаксично-керований).

  • Тестовий.

Мова процесорів (машинний код) зазвичай є низькорівневою. Існують платформи, які використовують в якості машинної мову високого рівня (наприклад, iAPX-432), але вони є винятком із правила через складність і високу вартість. Транслятор, який перетворює програми в машинну мову, який приймає і виконуваний безпосередньо процесором, називається компілятором.

Процес компіляції як правило складається з декількох етапів: лексичного, синтаксичного та семантичного аналізів (англ. Semantic analysis), генерації проміжного коду, оптимізації та генерації результуючого машинного коду. Крім цього, програма як правило залежить від сервісів, наданих операційною системою і сторонніми бібліотеками (наприклад, файловий ввід-висновок або графічний інтерфейс), і машинний код програми необхідно пов'язати з цими сервісами. Для зв'язування зі статичними бібліотеками виконується редактор зв'язків або компонувальник (який може представляти із себе окрему програму або бути частиною компілятора), а з операційною системою і динамічними бібліотеками зв'язування виконується на початку виконання програми завантажувача.

1. Огляд методів та способів проектування трансляторів

Є такі методи створення компіляторів:

1. Прямий метод- цільовою мовою і мовою реалізації є асемблер.

2. Метод розкрути- саме цей метод і використовується у даній курсовій роботі, тобто вибирається інструмент (в даній курсовій це мова асемблер), для якого вже існує компілятор.

3.Використання крос-трансляторів.

4.З використанням віртуальних машин–дає спосіб отримати переносимо програму.

5. Компіляція на ходу.

В даній курсовій роботі згідно із завданням для парних варіантів необхідно реалізувати низхідний метод граматичного розбору. Низхідний розбір — один з методів визначення приналежності вхідного рядка деякій формальній мові, описаній LL(k)-граматикою.

Для кожного нетермінального символу K будується функція, яка для будь-якого вхідного слова x робить дві речі:

  • Знаходить найбільший початок z слова x, здатний бути початком виводжуваного з K слова

  • Визначає, чи є початок z виводжуваним з K

Така функція має задовольняти наступні критерії:

  • зчитувати із ще необробленого вхідного потоку максимальний початок A, який є початком деякого слова, виводжуваного з K

  • визначати чи є A вивідним з K або просто невивідним початком виводжуваного з K слова

У випадку, якщо такий початок зчитати не вдається (і коректність функції для нетермінала K доведена), тоді вхідні дані не відповідають мові, і потрібно зупинити розбір.Розбір містить у собі виклики описаних вище функцій. Якщо для зчитаного нетермінала є складене правило, тоді при його розборі будуть викликані інші функції для розбору терміналів, що входять в нього. Дерево викликів, починаючи із самої«верхньої» функції еквівалентно дереву розбору.

Низхідний метод аналізу реалізується на основі контекстно-вільних граматик.

Контекстно-вільна граматика G це четвірка (N,T,P,S):

  • N та T скінченні множини, що не перетинаються

  • P скінченна підмножина

При цьому, використовують наступні назви: N — множина нетермінальних символів, T — множина термінальних символів, P — множина правил виводу S початковий символ. Правила (α,β)єP записують як α→β.

В лівій частині правила виводу має знаходитись одна змінна (нетермінальний символ). Формально, має виконуватись , wobei .

LL аналізатор це алгоритм синтаксичного аналізу методом рекурсивного спуску для підмножини контекстно-вільних граматик. Він обробляє вхід зліва направо (тому перша буква означає Left), та будує ліворекурсивне виведення рядка (тому його порівнюють з LR аналізатором ). Клас граматик, що розпізнаються цим аналізатором називається LL граматиками.

Далі описується табличний аналізатор — альтернатива алгоритму рекурсивного спуску, який зазвичай кодується вручну (хоча не завжди, дивіться наприклад ANTLR для генератора аналізаторів LL(*) граматик методом рекурсивного спуску).

LL аналізатори називаються LL(k) аналізаторами, якщо вони дивляться на k токенів вперед протягом аналізу виразу. Якщо такий аналізатор існує та може розпізнавати вирази граматики без бектрекінгу, тоді граматика називається LL(k) граматикою. З цих граматик найпопулярнішою граматикою є граматика LL(1), бо незважаючи на її обмеженість, вона має дуже простий аналізатор. Мови, що відповідають LL(k) граматикам з великим k вважаються такими, що важко аналізуються, хоча сьогодні це не зовсім вірно через доступність та поширеність генераторів синтаксичних аналізаторів, що підтримують LL(k) граматики.

LL аналізатор називається LL(*) аналізатором, якщо він не обмежений скінченним числом токенів для попереднього перегляду, а може приймати рішення визначаючи чи належать вхідні токени регулярній мові (наприклад використовуючи ДСкА).

Існує конкуренція між «європейською школою» проектування мов, яка віддає перевагу LL граматикам, та «американською», яка частіше використовує LR-граматики. Це багато в чому завдяки традиціям викладання та детальному опису методів та інструментів в літературі. Інший вплив іде від досліджень Ніклауса Вірта в вищій технічній школі Цюріха, які описували багато способів оптимізації LL(1) мов, та компіляторів.

Аналізатор працює на рядках з певної контекстно вільної граматики.

Аналізатор складається з

  • вхідного буфера, в якому зберігається вхідний рядок

  • стека в якому зберігають термінальні та нетермінальні символи з граматики, що аналізується.

  • таблицю аналізу яка каже яке ( якщо існує ) правило граматики застосувати залежно від символів на вершині стеку, та наступного вхідного токена.

Аналізатор застосовує правило з таблиці, яке відповідає символу на вершині стеку (рядок таблиці) та символу з вхідного потоку (стовпець).



Загрузить файл

Похожие страницы:

  1. Системне програмне забезпечення С

    Реферат >> Информатика
    ... з дисципліни “Системне програмне забезпечення” Тема: Розробка обєктно-орієнтованих ... програмування, який дозволяє створювати модулі з графічним інтерфейсом під операційну систему ... в стислий термін. Таким чином, програмування на Visual C++ 6.0 та Assembler ...
  2. Програмне забезпечення ПК Cистемне програмне забезпечення

    Реферат >> Астрономия
    Програмне забезпечення ПК Системне програмне забезпечення Програмне ... 'ютерних мережах. Програмні модулі ОС, як ... програмування призначені для полегшення та для часткової автоматизації процесу розробки ... систем залежать від їх призначення. Наприклад, для систем ...
  3. Розробка програмного забезпечення для ведення електронного обліку успішності школярів

    Курсовая работа >> Информатика
    ... набору готових програмних модулів для вирішення типових завдань програмування. Підключаються ... бізнес-логіки до системних додатків, що використовують низькорі ... сучасних засобів розробки програмного забезпечення для мережевих інформаційних систем. Вибрані і ...
  4. Розробка засобами Delphi дидактичного ілюстративного матеріалу для розвязання задачі з аналітичної Технологія візуального

    Курсовая работа >> Информатика
    ... програмування RAD (Rapid Application Development — середа швидкої розробки ... ємо ці координати у систему рівнянь: Слідом вирахову ... для вибору одного з системних кольорів. Timer (таймер ... файл програмного модуля. 11 Кб 7. Unit1.pas Файл програмного модуля головно ...
  5. Розробка комплексу програм автоматизації праці менеджера торгової фірми

    Курсовая работа >> Информатика
    ... і програми 6 Інструкція системному програмісту 7. струкція користувачев ... ється використанням структурного програмування; тим, що програма ... розробку програмних документів, схем алгоритмів програм, даних та систем ... ів програми. Стуктура модуля ТIMIDLG має сл ...

Хочу больше похожих работ...

Generated in 0.0021178722381592