The Visitor class is used to dynamically resolve type information about a given Node.
<postfix> [ <expr> ]
[ postfix -> name ]
[left = right]
[ { [ <statement>* ] } ]
[ { [ <statement>* ] } ]
[ break ; ]
[ case expr : [expr] ]
( type-expr ) expr ..type-expr is type encoded
One of:
[ [ declarator { = <expr> } ] , ...
[ default : [expr] ]
[ delete [expr] ]
[ do [{ ...
[ postfix .
[ enum [name] [{ [name [= value] ]* }] ]
[ expr (, expr)* ]
[ for ( stmt expr ; expr ) statement ]
[ [type] ( [expr] ) ]
[ postfix ( args ) ]
Function definition: [ [modifiers] name declarator [ { ...
[ if ( expr ) statement (else statement)? ]
[left op right]
[ extern ["C++"] [{ body }] ]
[ namespace Foo = Bar ; ]
[ namespace <identifier> [{ body }] ]
One of:
[ ( expr ) ]
[ expr ++ ]
[ sizeof ( [type [???] ] ) ]
[ switch ( expr ) statement ]
[ template < [types] > [decl] ]
[ throw [expr] ]
[ try [{}] [catch ( arg ) [{}] ]* ]
One of:
[op expr]
[ using Foo :: x ; ]
[ using namespace Foo ; ]
[ while ( expr ) statement ]