На головну

Польська інверсний запис

  1.  Log-файлу запис 130.92.6.97.600 означає, що пакет передається з IP-адреси 130.92.6.97 з 600-го порту.
  2.  Алгебраїчна запис Комплексних чисел
  3.  У базі даних запис - це ...
  4.  Вид форма (запис) Табличний
  5.  Подвійна запис на рахунках
  6.  Подвійна запис операцій на рахунках
  7.  Документ. Запис Книги Покупок

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

Тому розглянемо лише основну ідею створення і зупинимося на використанні в обчисленнях Постфіксний уявлень.

Генерація.

Тут, лише з міркувань наочної демонстрації ідеї, як вихідної форми програми візьмемо блок-схему.

Нехай транслюється умовний оператор вхідного мови, що має вигляд:

IF (A - B) 10, 15, 20

Для даного вхідного мови визначено, що

IF - службове слово оператора умови.

A - B - арифметичний вираз.

10, 15, 20 - мітки.

Робота оператора полягає в обчисленні арифметичного виразу

І порівняння отриманого результату з нулем на більше, дорівнює або менше нуля.

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

"Сенсу" оператора заздалегідь поставлена ??у відповідність заготівля вихідного коду - в даному випадку - заготівля блок-схеми. При аналізі змісту оператора витягується арифметичне вираз, що вимагає подальшої обробки і конкретні мітки переходів.

       
 
   
 


1

 X> 0 10



 1 "семантика"

 X = 0 15 оператора IF.


1

 X <0 20


 обробка помилки


Тут якраз хороший привід повернутися до питання трансляції арифметичних виразів. Часто для них (і не тільки) виконують перетворення в польську инверсную запис (полізім), Що спрощує подальше виконання-вичіслеіе.

Взагалі є три способи запису операцій:

1. інфіксной: a * b (наприклад, а + b).

2. Префіксний: * ab (наприклад, S (a, b)).

3. Постфіксний: ab * (наприклад, а й b - підсумувати)

Про третій, Постфіксний, способі і йдеться. Його ще називають

польського інверсного записом; в пам'ять про польського математики Яні Лукашевича.

Перетворення виразів в полізім з легкої руки Е. Дейкстри (першої величини в області теоретичного програмування) стали часто зображати у вигляді "залізничного роз'їзду".

 вихід вхід магазина (стека)

 n верхівка магазину




 поняття транслятора |  детермінованого |  Перехід від праволінейной граматики до автоматної |  Детерміновані автомати з магазинною пам'яттю |  S і q - граматики |  LL (1) - граматики. |  LR - граматики |  Використання матриць з передування. |  функції передування |  атрибутних граматики |

© um.co.ua - учбові матеріали та реферати