An undocumented prerequisite to this is the creation of a basic set of SQL tokens and a basic SQL lexer.
Some specific improvements I want to keep in mind:
1) make distinction between different types of paths as we are parsing them. This could mean either by referencing a SessionFactory, etc (for entity-name resolution e.g.) or by asserting what we are expecting according to the current syntax elements. I chose the latter as it kept this phase cleaner w/o needing to inject SessionFactory etc.
2) Better alignment with SQL specs in terms of AST. This is a general goal for all the phases.
3) verboseness over succinctness where applicable for maintainability.