Зворотний зв'язок

Зворотний польський запис та алгоритм його побудови

На порядок знаків у вихідному виразі впливає їх старшинство, або пріоритет:

L( a + b * c ) = a b c * + ; L( a + b - c ) = a b + c - .

Операція '*' старша за '+', тому в першому виразі операція '+' застосовується до значень a та b*c. У другому виразі старшинство '+' та '-' однакове, операції мають властивість лівостороннього зв'язування, тому '+' застосовується до a і b, а '-' – до a+b і c.

Отже, коли у вхідній послідовності читається знак операції op2, з верхівки магазина треба видати у вихідний вираз усі знаки, пріоритети яких не нижчі від пріоритету op2 (усі вони є знаками з виразу E1), і тільки після цього запам'ятати op2 у магазині. Якщо пріоритет знака з верхівки магазина нижче ніж у op2, то op2 записується в магазин, оскільки має появитися у вихідному виразі раніше.

Процес побудови ЗПЗ виразу можна подати послідовністю трійок вигляду

(вихідна послідовність лексем;

магазин;

непрочитана частина виразу).

Верхівку магазина будемо вказувати праворуч.

Приклад 1. Початок перетворення виразу a+b*c зображається послідовністю трійок

( ; ; a + b * c ) – початковий стан: вихідна послідовність і магазин порожні;

( a ; ; + b * c ) – ім'я перенесено у вихідну послідовність;

( a ; + ; b * c ) – знак перенесено в магазин;

( a b ; + ; * c ) – ім'я перенесено у вихідну послідовність.

Після цього знак '*' вміщується в магазин над знаком '+':

( a b ; + * ; c ).

Пріоритет операції '*' вищий від '+', тому b є операндом '*', а не '+'.

При перетворенні виразу a+b-c результатом читання його початку a+b буде

( a b ; + ; - c ),

після чого знак '-' "виштовхне" з магазина '+', тобто наступною буде трійка

( a b + ; - ; c ).

Пріоритети '+' і '-' рівні, тому b пов'язується з операцією '+' ліворуч.

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


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат