Recursive descent parser. Very fun to make, as you start out simple, and it's easy to keep extending and adding more and more complexity. I'd recommend this: http://compilers.iecc.com/crenshaw/
It's about actual assembly code generation, but you can just make it an interpreter instead of generating code. It gives you the general idea of how a recursive descent parser works. Also, it's in Pascal, but since pascal it pretty straight forwards you can map it easily to C++ or whatever other language you're working with.