Parsing programming languages is an essential component of the front-end of most tools for program analysis, manipulation, comprehension, visualization, maintenance and reverse-engineering. One problem with the construction of a front-end for a programming language is the wide-spread ad-hoc treatment of grammarware development, even for the parsing phase, which is typically more structured than subsequent phases of language development. In this paper we describe our approach to augment the GNU gcc C++ parser to generate a parse tree for the input program in XML format. We have chosen C++ because of the well-documented difficulty in developing a parser for the language. To validate the generated parse tree, we traverse the tree and regenerate the source code, comparing the original source with the regenerated source. We apply our approach to three different test suites including the gcc test suite that accompanies the compiler and two other test suites including the Mozilla browser. We evaluate the adequacy of these test suites by measuring their coverage of the non-terminals and the production rules imbedded in the grammar of the C++ parser. Finally, we exploit mutation testing to evaluate the structural correctness of the generated parse tree.