I'm reading "Programming: Principles and Practice Using C++" and one of the first programs illustrated is actually a calculator.
Being new to parsers in general, I love to see how two different approaches work: in the book the author implements the code by creating a formal (BNF-like) grammar first whereas in this articles the author draws diagrams first.