The is no reason to lose that structural information. It also makes it easy for users to do deferred parsing of an untyped ast (without having to do a redundant lex) with extended parsers or until gencpp is able to do parsing of execution statements or expressions.