Move parsing into rule objects to allow for different parsing types in the future