1.7.П олучение опз для оператора цикла for
О
ператор
цикла: for <пц>
:= <нз> to <кз>
do <тц>;
можно представить в виде дерева:
Особенности обработки:
1. Символ for играет роль
открывающей скобки и имеет приоритет
0. В вершину стека записывается FOR
<пц>.
2. Символ to является
закрывающей скобкой для предшествующего
выражения, поэтому имеет приоритет 1 и
выталкивает из стека все знаки до записи
FOR. Новая метка mi
добавляется в таблицу меток и к записи
FOR – получается FOR
<пц> mi.
В выходную строку записывается mi:
<пц>.
3. Символ do является
закрывающей скобкой для предшествующего
выражения , поэтому имеет приоритет 1 и
выталкивает из стека все знаки до записи
FOR. Новая метка mi+1
добавляется в таблицу меток и к записи
FOR – получается FOR
<пц> mi
mi+1.
В выходную строку записывается <=
mi+1
УПЛ.
4. Конец оператора цикла (символы «;» и
end). При их появлении стек
очищается. Если при этом встретится
запись FOR <пц> mi
mi+1,
то это означает окончание оператора
цикла. В выходную строку добавляется
запись <пц> <пц> 1 + := mi
БП mi+1:
После этого запись FOR из стека
удаляется.