Refactored grammar to distinguish functor atom. Handwrote visitor pattern. This is an in-progress checkin