A compiler, even for simple languages, is a complex system. With lots of objects, roles and distributed responsibilities, from parsing the input file and lexical analysis to bytecode generation. On the other side, clients need simple interfaces to be able to use the compiler, thus one might want to consider Facade pattern that hides the internal details from external clients.
A central part of the compiler is processing the Abstract Syntax Tree (AST), constructed by syntactic analyzer component, based on the grammar of the language. Interpreter pattern is a way to represent the grammar, the AST built on top of it and the process of evaluation of the tree.
Click here for details.