Rewrote expression evaluate recursive.