Add abstract parser to decouple general parser responsibilities from implementation-specific translation