- if an parse error occurs, memory will be leaked--implement an
  allocator and do a non-recursive free if parse fails

- IDL tree to IDL string will not properly escape identifiers that
  are keywords, generating bogus output without warning
