122
1.
В строку
st с помощью функции
TestCh() собираем сим-
волы множества
chars. Если
st = «if», то мы имеем де-
ло с оператором
if, иначе — с выражением.
2.
Если
st = «if», то в строку
sExpres собираются симво-
лы логического выражения, стоящие за
if, а для этого собира-
ем символы от первой скобки (до
последней закрывающей
скобки).
3.
Вызываем
процедуру PFormula(
sExpres, Op.Node) (лис-
тинг 4.30) для создания дерева логического выражения.
4.
В строку
sThen собираются
символы оператора от начала
строки до
else (если
else в операторе присутствует). Этот
оператор выполняется, если выражение — истинно.
5.
Создается
узел оператора op1 типа
typeOpera-
tor
= ifthen.
6.
Рекурсивно
вызывается
функция
SetOperator
(ref
sThen
, out op1).
7.
Если
sElse = «», то
op.operElse = null,
иначе ре-
курсивно вызывается функция
SetOperator(ref sThen,
out
op2).
8.
Если
st != «if», то определяем номер переменной, соот-
ветствующий этой строке.
9.
Создается узел оператора
op типа
typeOperator = ex-
pression
.
10.
Вызываем процедуру PFormula(ref s, out D) для соз-
дания дерева, соответствующего
выражению в правой части
оператора присваивания.
Листинг 4.29 содержит полный текст функции
SetOperator().
Do'stlaringiz bilan baham: