Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗапискаТекстССодержаниемVer1.docx
Скачиваний:
35
Добавлен:
17.03.2016
Размер:
460.55 Кб
Скачать

2.6.3 Поліз операторів input та output

Оператори мають наступний вигляд: input a1, a2, …, an ˩таoutput a1,a2,….,an ˩.

ПОЛІЗ таких операторів вводу-виводу можна побудувати наступним чином: a1 a2 … an n inputтаa1 a2 … an n output, де n – кількість операндів кожного оператора.

Символи матимуть наступне навантаження.

  • inputмає пріоритет 0. В ПОЛІЗ нічого не заносить. Використовується для підрахунку кількості операндів (змінних).

  • , знаходить в стеку inputабоoutputі збільшує лічильник змінних (n) на одиницю.

  • ˩знаходить в стекуinputабоoutputі генерує на вихідn inputабоn outputвідповідно.

2.6.4Приклад роботи програми

Побудуємо ПОЛІЗ тестової програми описаної вище.

На рисунку зображений ПОЛІЗ тестової програми (рисунок 2.8).

Рисунок 2.8. ПОЛІЗ тестової програми

Для побудови ПОЛІЗ операторів циклу, умовного переходу та вводу-виводу, відповідні службові слова були навантаженими додатковими функціями, які забезпечують додавання в ПОЛІЗ потрібних елементів.

2.6.5 Виконання поліз

Виконання ПОЛІЗ відбувається за наступним алгоритмом:

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

  • якщо поточний символ – двомісна операція, то вона застосовується до 2х верхніх комірок стеку, результат заноситься в другу комірку, а перша звільнюється;

  • якщо поточний символ – одномісна операція, то вона застосовується до верхньої комірки стеку, куди і заноситься результат;

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

Особливості виконання ПОЛІЗу.

  • Математичні операції +, -, *, / - двомісні. Вони застосовуються до 2х верхніх комірок стеку, результат заноситься в другу комірку, а перша звільнюється. Операндами можуть бути ідентифікатори або константи.

  • Операції порівняння >, <, >=, <=, =, <> - двомісні. Операндами можуть бути ідентифікатори або константи. Результатом операції є 1 у разі істини або 0 в іншому випадку.

  • Операція присвоєння := - двомісна операція. Перший операнд повинен бути ідентифікатором, а другий – ідентифікатором або константою. Під час виконання операції значення змінної, якій відповідаю перший операнд, повинно бути замінене в таблиці змінних на значення, якому відповідає другий операнд.

  • Операція умовного переходу УПБє двомісною операцією. Перший операнд – результат порівняння (0 або 1), другий – мітка, на яку необхідно перейти. Якщо перший операнд рівний 0, то здійснюється перехід, інакше продовжується виконання ПОЛІЗу з наступного символу.

  • Операція безумовного переходу БП – одномісна. Операнд – це мітка, на яку потрібно здійснити перехід [1].

3. Методична робота користувача з системою

При відкритті програми можна побачити головне вікно. У поле «Текст програми» можна ввести текст програми. Справа знаходиться «Меню» в якому знаходяться 4 кнопки:

  • «Лексичний аналізатор» - виконує лексичний аналіз програми

  • «Синтаксичний аналізатор» - виконує синтаксичний аналіз програми

  • «Побудувати ПОЛІЗ» - буду ПОЛІЗ програми

  • «Запуск» - запускає інтерпретатор.

Знизу знаходиться вікно помилок, в яке будуть виводитися помилки на етапі лексичного, синтаксичного аналізаторів, побудови ПОЛІЗу та інтерпретатору. Зверху знаходиться меню в якому користувач може відкрити файл програми, зберегти текст програми, відкрити таблицю лексем лексичного аналізатору та прочитати інструкцію щодо користування програми.

Більш детально це можна побачити на рисунку зображеному нижче (рисунок 3.1).

Рисунок 3.1. Головне вікно програми

Розроблений інтерфейс дуже зручний у користуванні. Дозволяє користувачу вводити текст з клавіатури, файлу, аналізує на предмет лексичних та синтаксичних помилок.