4.2.5. Примеры
постфиксных польских записей.
Польские постфиксные записи часто используют в качестве промежуточного
представления операторов языков программаирования на этапе синтаксического
анализа при компиляции. В качестве примеров такого применения приведем
постфиксные выражения для некоторых
операторов Паскаля.
Знак присваивания можно рассматривать как символ операции, поэтому
оператор присваивания:
где I-идентификатор, а Е- арифметическое выражение, можно записать в виде
постфиксного выражения
где E'- постфиксная запись выражения Е .
Для описания построения записи конструкции с условием требуется введение
новых элементов: метки и операторов условного и безусловного переходов.
Условимся для обозначения меток в постфиксных выражениях использовать
идентификаторы М,М1,М2,...,а
для обозначения переходов воспользуемся операторами Условный
Переход
по значению Ложь (УПЛ) и
Безусловный Переход (БП).
Операндами этих операторов являются метки.
Первый оператор выполняет переход к метке, если значение выражения,
предшествующего этому оператору, ложно. Если же значение выражения, предшествующего
оператору УПЛ, истинно, то оператор пропускается и выполняется оператор,
расположенный непосредственно за УПЛ.
Результатом оператора безусловного перехода с меткой М является то,
что следующим выполняется оператор из рассматриваемой последовательности,
помеченный М.
Для постфиксного представления простого условного оператора
где <R> - отношение, а <S>
- оператор , воспользуемся условным оператором перехода.
В результате получаем выражение:
в котором <R'> и <S'>
являются постфиксными выражениями соответствующего выражения и оператора,
а М - метка. Опреатор <S'>
в этом выражении также как и в заданном
условном операторе выполняется только в том случае, когда отношение
<R'> - истино.
Для полного условного оператора
IF <R> THEN <S1>ELSE <S2>,
где<R> - отношение, а <S1>,<S2
>- операторы, постфиксное представление должно обеспечивать выполнение
одного из операторов <S1>или
<S2>в зависимости от условия
<R>.
Исходя из этого положения, постфиксную форму полного условного оператора
можно записать так:
<R'> M1 УПЛ <S1'>
M2 БП М1 <S2'> M2
,
где <R'> - постфиксная запись отношения
<R>, <S1'> и <S2'>-
постфиксные записи операторов <S1>,<S2>,
а М1 и М2
- метки.