Головна

 Використання компілятора С0 |  Мова асемблера IBM PC |  Об'єктний код компілятора C0 |  завдання |  Приклад звіту з лабораторної роботи 1 |  Загальні відомості про компіляторі С0 |  Трансляція виразів в компіляторі С0 |  Трансляція фрагмента програми |  Порядок виконання роботи |  Розширення можливостей транслятора С0 |

завдання

  1.  I. Аналіз завдання
  2.  I. Завдання для обов'язкового виконання
  3.  I. Завдання для обов'язкового виконання
  4.  I. Завдання для обов'язкового виконання
  5.  I. Завдання для обов'язкового виконання
  6.  I. Завдання для обов'язкового виконання
  7.  I. Завдання для обов'язкового виконання

Розширити мову і транслятор С0, реалізувавши в них такі можливості.

1) Запис числа в вісімковій системі числення, починаючи з цифри нуль, наприклад: 027 = 2 * 8 + 7 = 23.

2) Запис числа в шістнадцятковій системі числення, починаючи з 0x або 0X, наприклад: 0x4C = 4 * 16 + 12 = 76.

3) Запис службових слів як малими, так і великими літерами.

4) Завдання імен вхідного і вихідного файлів під час запуску транслятора.

5) Використання порозрядних операцій: кон'юнкції &, диз'юнкції | і заперечення ~, як в мові C.

6) Використання логічних операцій: кон'юнкції &&, диз'юнкції || і заперечення!, як в мові C.

7) Видача текстових повідомлень про помилки замість числових.

8) Використання оператора циклу з передумовою, як в мові C:

do оператор while (вираз);

9) Використання умовного оператора, як в мові C:

if (вираз) оператор [else оператор]

10) Використання оператора циклу for, Як в мові C:

for(вираз ; вираз ; вираз) оператор

вказівка: Зручно розташувати об'єктні коди виразів в тому порядку, як вони записані в операторі for, А необхідний порядок їх виконання забезпечити за рахунок міток і команд переходу, як робиться при трансляції операторів if и while.

11) Використання оператора перемикача, як в мові C:

switch (вираз)

{[case число: [оператор] ...]...

default: [оператор] ...

}

12) Опис локальних змінних на початку складеного оператора - блоку, як в мові C.

вказівка: Зручно виділяти і звільняти пам'ять для локальних змінних складеного оператора на початку кадру стека, використовуючи негативні зміщення.

13) Символьні константи виду: '*' = 42, 'A' = 65 і т. Д.

14) Коментарі виду: / * [символ]... * /, Як в мові С.

15) Малі коментарі, як в мові С ++, види:

// [символ]... кінець-рядки

16) Завдання початкових значень у визначенні глобальних змінних, наприклад: int a = 5, b, x = -78;

Контрольні питання і вправи

1. Які підпрограми компілятора С0 потрібно змінити для реалізації можливості задавати імена вхідного і вихідного файлу?

2. Які підпрограми компілятора С0 потрібно змінити для видачі тестових повідомлень про помилки замість номерів помилок?

3. Які підпрограми компілятора буде потрібно змінити для трансляції коментарів, якщо вони з'являться в мові С0?

4. Які підпрограми компілятора буде потрібно змінити для трансляції символьних констант, якщо вони з'являться в мові С0?

5. Які підпрограми компілятора буде потрібно змінити для трансляції логічних операцій, якщо вони з'являться в мові С0?

6. Які підпрограми компілятора буде потрібно змінити для трансляції операторів do-while, якщо вони з'являться в мові С0?

7. Які підпрограми компілятора буде потрібно змінити для трансляції початкових значень в описі глобальних змінних, якщо вони з'являться в мові С0?

8. Які підпрограми компілятора буде потрібно змінити для трансляції початкових значень в описі локальних змінних, якщо вони з'являться в мові С0?



 Приклад розширення мови і транслятора C0 |  Лабораторна робота № 4
© um.co.ua - учбові матеріали та реферати