Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория языков программирования методов трансляции.-1.pdf
Скачиваний:
13
Добавлен:
05.02.2023
Размер:
1.36 Mб
Скачать

148

1)Любой путь из начального участка в (в том числе и проходящий через несколько раз) проходит через вычисление А+В,

2)Вдоль любого такого пути между последовательным вычисле-

нием А+В и использованием А+В в не встречается переопределение ни А, ни В.

Отметим, что как и в линейном случае, применение алгебраических законов может увеличить число общих подвыражений.

Замена вычисления периода выполнения вычислениями периода компиляции

Если это возможно, то имеет смысл выполнить вычисление один раз при компиляции, а не повторять его многократно при исполнении объектной программы. Простой пример – размножение констант, т.е.

замена переменной на константу, когда значение переменной постоянно и известно.

Пример.

read R

PI ¬ 3.14159 A ¬ 4/3

B¬ A*PI

C¬ R ­3

V¬ B*C write V

Вчетвертом операторе вместоPI можно подставить 3.14159 и получить В ¬А*3.14159. Можно вычислить 4/3 и, подставив найденные выражения в В ¬ А*3.14159, получить В ¬ 1.3333*3.14159. Можно вычислить 1.3333*3.14159 = 4.18878 и, подставив его в операторV

¬ B*C , получить V ¬ 4.18849*C. Наконец можно удалить получившиеся бесполезные операторы. В результате у нас будет более короткая эквивалентная программа:

read R C¬R ­ 3

V ¬ 4.18878*С write V.

Замена сложных операций