refactor ast into its own package
preserve location of parse errors, normalize parse and mapping errors