ENH: Move tokenization routines into vtkParseString.

The preprocessor has some code that is more widely useful to the
parser.  Move that code into vtkParseString.

Change-Id: I80b692a129677cb3f1ccfb7177c4c7099440ec72
Add missing rule for nested template declarations.

Change-Id: I2b1b9c3820cc12d6425eb524f94c8b30100b0619
Add special right angle bracket handling for C++11.

The C++11 standard allows a pair of right angles ">>" to be broken
into two right angle brackets in order to terminate a template
argument list.  In order to improve compatibility with C++11 code,
I've added the same flexibility to the wrapper's parser.  I have
checked the generated xml for VTK both before and after this change,
and the resulting xml was identical.

Change-Id: I73a77e10c5c18482f2a7c14185da835dcaaa99f2
Simplify the enumerator_list rule for enum definitions.

Even though C++03 disallows trailing commas in enum definitions,
all compilers allow them, so we must do the same.  The simplest
way to do this is to allow enumerator_definition to be empty,
rather than to tack on another rule.

Change-Id: I61a7fbcf1d9696b9d357f87bd6805c3873466398
Allow qualifiers const, volatile with method pointers.

Change-Id: Ic11e56d1948b353eb7746e877b05e1b49049931a
Fix parsing of parentheses within function parameter declarations.

According to the C++ standard, in an abstract declarator (e.g. function
parameter declaration), if there is only one set of parentheses then the
parentheses are to be intepreted as a function decorator.  The parser was
incorrectly interpreting them as parentheses around a possibly absent
parameter name.

Change-Id: I4fecd3de16914e75329dec78f0d2d351b9e3dae9
Remove the unused "reject_class()" method.

Change-Id: Ie3feabee7c1b53071dd6dc79454f2fbf86e9ff2c
Handle friend functions where "friend" is not first specifier.

This leaves "typedef" as the only specifier that must be placed as
the first specifier, and even then this restriction on "typedef" is
only when used with a function e.g. "int typedef x(int y);"

Change-Id: I901f4a76ebf080ec777e718d1d13a59c5572fa89
Add ability to parse function try blocks.

These are an odd language construct that I've never seen before.

Change-Id: Icd7fd487d97f0cbda9f3e9c50682e9b4e79d62f0
Allow a parameter list that is nothing but ellipsis.

Change-Id: I3de48c4aea212de88f82f291de92ec9994705921
Add parsing of rvalue references for C++11 support.

Change-Id: I4db5f0e1115b8dba2791c450ae4a9616f1b3553d
Add constexpr specifier to support C++11 code.

Also add "explicit" to keyword list, since it was missing.

Change-Id: I5e97330b0ba17609f42f0141cbff8999196ec0d0
Add decltype() to parser via new decltype_specifier rule.

There is no code to deduce the type for decltype() yet, but at least
code containing decltype() can be parsed.

Change-Id: I160eb7129f12c1b5d0f643185de6c86cd54e3c5f
Add "auto" keyword with C++11 interpretation.

Change-Id: I09eae6e45642bd457a9e0d4cd6c3996da21030fb
Add parsing of trailing return types for C++11.

Change-Id: I12d17afe3b23bf8d3048ae202abf8857e4b2246b
Add parsing of "final" and "override" for C++11.

Change-Id: I436dbc1b664331a2a0bf7c49e02c27eafb041019
Add nullptr literal and type for C++11.

Also allow "std::" scope in front of size_t.

Change-Id: I35c1ded836b56e2ed15382583b9ba714e6ef5a8c
Ignore static_assert() declarations in c++11 code.

The parameters can be parsed as macro parameters in the lexer, since
we are not going to be performing any actions on the parameters.

Change-Id: I1f7f94723e52e7d0f048a558b44c80d4c2464026
Add new C++11 noexcept trailing specifier.

Change-Id: Ice6bdd4abcc8ac16526e9415a0addf4135870fd1
Change the class_specifier rules to better match standard.

This should not create any functional changes, it is primarily for
readability.

Change-Id: I80ed535b2520ec3f34d5ec5093cbec3a37dc50a8