Split compiler into two parts so that multiple compilers with a shared base can be made.