An interpreter is a medium that changes unrecognized information into a recognizable form. The interpreter pattern describes how to define a grammar for a simple language and represent sentences in that language to interpret them. It uses classes to represent each grammar rule and creates an abstract syntax tree to represent expressions. While it makes programming and problem solving easier, complex grammars can be difficult to maintain with this pattern.