language independent macroprocessor