Интерпретаторы, компиляторы и виртуальные машины
После того как дерево построено, обрабатывать его можно множеством способов. Наиболее прямолинейный метод, применяемый, кстати, в Awk, – это прямой обход дерева с попутным вычислением узлов. Упрощенная версия алгоритма такого вычисления для языка, основанного на целочисленных выражениях, может включать в себя восходящий обход типа такого:
Первые несколько выражений case вычисляют простые выражения вроде констант или значений; следующие вычисляют арифметические выражения, а дальше может идти обработка специальных случаев, условных выражений и циклов. Для реализации управляющих структур нашему дереву потребуется не показанная здесь дополнительная информация, которая представляет собой поток управления.
Подобно тому, как мы делали в pack и unpack, здесь можно заменить явный переключатель таблицей указателей на функции. Отдельные операции при этом будут выглядеть практически так же, как и в варианте с переключателем: