integrate preprocessor into compiler