add stuff from expression compiler, which should probably be put into a separate grammar