101
ключевое слово ELSE (или END), поместим такую же системную метку в
соответствующем месте постфиксной записи. Таким образом, системная
метка присутствует в анализируемой программе в двух местах: после
выражения в точке, где выполняется передача управления вперед, а также в
точке, куда должно быть передано управление. С помощью этих данных
генератор кода установит соответствующую адресную
связь.
Можно построить команду перехода вперед, которая обходит список
операторов, следующих за ключевым словом THEN, однако в связи с
обработкой ключевого слова END могут возникнуть некоторые осложнения.
Если в предложении IF слово ELSE опущено, то передача управления должна
быть совершена в точку, соответствующую слову END. Однако если слово
ELSE входит в предложение IF, то управление должно быть
передано в
точку, соответствующую этому слову, а от группы операторов, следующих за
словом THEN, должен происходить безусловный переход к точке,
соответствующей слову END. Эта мера позволит после выполнения
операторов из группы, следующей за словом THEN, обойти выполнение
операторов, написанных после слова ELSE. Заметим, однако, что в обоих
случаях слово END представляет точку в предложении, куда
передается
управление одной командой перехода вперед. Благодаря этому
обстоятельству удается связать друг с другом части объектного кода,
реализующего предложение IF.
Учитывая сказанное выше, постфиксную запись предложения IF можно
представить в следующей форме:
<ВЫРАЖЕНИЕ>
Метка перехода вперед для слова IF
IF
<СПИСОК ПРЕДЛОЖЕНИЙ>
{Метка обхода /* Метка обхода списка операторов ELSE */
Метка перехода вперед