Partial evaluation: its application to compiler generator generation