What is an interpreter?