Moved expression code to classes to make it more obvious how its parsed