rough pass at ast after working on grammar to remove ambiguities, left-recursion, simplify, and clean up; start specification document of regex to ast translation