ВУЗ:
Составители:
30
Пример 2.14. Оператор x:=x+9 в ПОЛИЗе имеет вид: x x 9 + :=.
Оператор перехода в терминах ПОЛИЗа означает, что процесс интер-
претации необходимо продолжить с того элемента ПОЛИЗа, который указан
как операнд операции перехода. Чтобы можно было ссылаться на элементы
ПОЛИЗа, будем считать, что все они пронумерованы, начиная с единицы (на-
пример, последовательные элементы одномерного массива). Пусть ПОЛИЗ
оператора, помеченного меткой
L, начинается с номера p, тогда оператору без-
условного перехода
goto L в ПОЛИЗе будет соответствовать:
p!, где ! – операция выбора элемента ПОЛИЗа, номер которого равен p.
Условный оператор. Введем вспомогательную операцию – условный
переход «по лжи» с семантикой
if (not B) then goto L. Это двуместная операция с
операндами
B и L. Обозначим ее !F, тогда в ПОЛИЗе она будет записываться:
B p !F, где p – номер элемента, с которого начинается ПОЛИЗ оператора,
помеченного меткой
L.
С использованием введенной операции условный оператор
if B then S
1
else S
2
в ПОЛИЗе будет записываться:
B p
1
!F S
1
p
2
! S
2
, где p
1
– номер элемента, с которого начинается ПОЛИЗ
оператора
S
2
, а p
1
– оператора, следующего за условным оператором.
Пример 2.15. ПОЛИЗ оператора if x>0 then x:=x+8 else x:=x-3 представлен
в таблице 2.3.
Таблица 2.3 – ПОЛИЗ оператора if
лексема
x
0 > 13 !F
x x
8 + := 18 !
x x
3 - := …
номер 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Оператор цикла. С учетом введенных операций оператор цикла
while B do S в ПОЛИЗе будет записываться:
B p
1
!F S p
o
!, где p
o
– номер элемента, с которого начинается ПОЛИЗ вы-
ражения
B, а p
1
– оператора, следующего за данным оператором цикла.
Операторы ввода и вывода языка М одноместные. Пусть R – обозначе-
ние операции ввода, а
W – обозначение операции вывода, тогда оператор read(I)
в ПОЛИЗе запишется как
I R, а оператор write(E) – E W.
Составной оператор begin S
1
; S
2
;...; S
n
end в ПОЛИЗе записывается как
S
1
S
2
... S
n
.
Пример 2.16. ПОЛИЗ оператора while n>3 do begin write(n*n-1); n:=n-1
end представлен в таблице 2.4.
Таблица 2.4 – ПОЛИЗ оператора while
лексема
n
3 > 19 !F
n n
*1-
W n n
1 - := 1 ! …
номер 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Пример 2.14. Оператор x:=x+9 в ПОЛИЗе имеет вид: x x 9 + :=. Оператор перехода в терминах ПОЛИЗа означает, что процесс интер- претации необходимо продолжить с того элемента ПОЛИЗа, который указан как операнд операции перехода. Чтобы можно было ссылаться на элементы ПОЛИЗа, будем считать, что все они пронумерованы, начиная с единицы (на- пример, последовательные элементы одномерного массива). Пусть ПОЛИЗ оператора, помеченного меткой L, начинается с номера p, тогда оператору без- условного перехода goto L в ПОЛИЗе будет соответствовать: p!, где ! – операция выбора элемента ПОЛИЗа, номер которого равен p. Условный оператор. Введем вспомогательную операцию – условный переход «по лжи» с семантикой if (not B) then goto L. Это двуместная операция с операндами B и L. Обозначим ее !F, тогда в ПОЛИЗе она будет записываться: B p !F, где p – номер элемента, с которого начинается ПОЛИЗ оператора, помеченного меткой L. С использованием введенной операции условный оператор if B then S1 else S2 в ПОЛИЗе будет записываться: B p1 !F S1 p2 ! S2, где p1 – номер элемента, с которого начинается ПОЛИЗ оператора S2, а p1 – оператора, следующего за условным оператором. Пример 2.15. ПОЛИЗ оператора if x>0 then x:=x+8 else x:=x-3 представлен в таблице 2.3. Таблица 2.3 – ПОЛИЗ оператора if лексема x 0 > 13 !F x x 8 + := 18 ! x x 3 - := … номер 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Оператор цикла. С учетом введенных операций оператор цикла while B do S в ПОЛИЗе будет записываться: B p1 !F S po !, где po – номер элемента, с которого начинается ПОЛИЗ вы- ражения B, а p1 – оператора, следующего за данным оператором цикла. Операторы ввода и вывода языка М одноместные. Пусть R – обозначе- ние операции ввода, а W – обозначение операции вывода, тогда оператор read(I) в ПОЛИЗе запишется как I R, а оператор write(E) – E W. Составной оператор begin S1; S2;...; Sn end в ПОЛИЗе записывается как S1 S2... Sn. Пример 2.16. ПОЛИЗ оператора while n>3 do begin write(n*n-1); n:=n-1 end представлен в таблице 2.4. Таблица 2.4 – ПОЛИЗ оператора while лексема n 3 > 19 !F n n * 1 - W n n 1 - := 1 ! … номер 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 30
Страницы
- « первая
- ‹ предыдущая
- …
- 28
- 29
- 30
- 31
- 32
- …
- следующая ›
- последняя »