slowly building out the parser generator and tree nodes