explanation of the interpreter pattern 1668754