Cross-language AST & parser generator