It is a common task to parse a small text. Such situations are always a dilemma: shall we use some third-party professional and good tools for parsing such as Bison or ANTLR, or shall we try to write it by hand using only C++ and standard library? The third-party tools are good for handling the parsing of complex texts, and it is easy to write parsers using them, but they require additional tools for creating C++ or C code from their grammar, and add more dependencies to your project.
Handwritten parsers are usually hard to maintain, but they require nothing except a C++ compiler.
Let's start from a very simple task to parse a date in the ISO format as follows:
YYYY-MM-DD
The following are the examples of possible input:
2013-03-01 2012-12-31 // (woo-hoo, it almost a new year!)
We will need parser's grammar from the following link http://www.ietf.org/rfc/rfc333:
date-fullyear = 4DIGIT date-month = 2DIGIT ; 01-12 date-mday = 2DIGIT ; 01-28, 01-29...