ВУЗ:
Составители:
- 14 -
Обозначения:
Str - скобочная структура
i - номер слова в скобочной структуре
Str(i) - адресация слова в скобочной структуре
U - массив уровней
U(i) - уровень i-той лексемы в скобочной структуре
Алгоритм определения массива уровней:
1. i = 0; U(i) = 0
2. i = i + 1; U(i) = 0;
if (конец_выражения) then выход;
3. if '(' или операнд then U(i) = U(i) + 1; goto 2;
4. U(i) = U(i) - 1; goto 2.
Обработка массива уровней для получения последовательности
троек сводится к следующему: сканировать массив с целью найти пя-
терку вида: k (k+1) k (k+1) k с максимальным k; вычислить эту пя-
терку и присвоить результат порожденной временной переменной с
приоритетом (k-1). Повторять сканирование до вычисления последней
пятерки c состоянием массива уровней: 010.
Пример: (a + b) * c + c * (f + d)
шаг 1 t1 t2 промежуточные переменные
1 3 5 4 2 порядок операций
(((a + b) * c) + (c * (f + d)))
01234 3 43 2 32 1 23 2 34 3 43210 массив уровней
¦¦+-----+ ¦ ¦ +-----+¦¦ вложенности
¦+---¦----+ +-----------+¦
+----¦------------------------+
k (k+1) k (k+1) k
шаг 2 t3 t4
((t1 * c) + (c * t2))
0123 2 32 1 23 2 3 210
+------+ +------+
шаг 3 t5
(t3 + t4)
012 1 210
+-------+
шаг 4 t5
010
Страницы
- « первая
- ‹ предыдущая
- …
- 11
- 12
- 13
- 14
- 15
- …
- следующая ›
- последняя »