parser should be less dependent on compiler