Страница 106 из 187
2.5410306
exp(2*3*log(1.5))
2.5410306
sin(PI/2)
1
atan(1)*DEG
45
Несколько улучшилась и работа распознавателя. В hoc2 присваивание x = expr не только вызывало присваивание, но и приводило к печати значения, поскольку все выражения печатаются:
$ hoc2
x=2*3.14159
6.28318 В случае присваивания переменной значение печатается
В программе hoc3 проводится различие между присваиваниями и выражениями; значения печатаются только для выражений:
$ hoc3
x=2*3.14159 Присваивание: значение не печатается
x Выражение:
6.28318 Значение печатается
Получившаяся в результате всех этих изменений программа настолько велика (около 250 строк текста), что для простоты редактирования и ускорения компиляции лучше разбить ее на отдельные файлы. Итак, теперь мы имеем пять файлов вместо одного: