It's some kind of LR Parser. There are three steps. Build a parser by grammars (ex: query → SELECT select-list FROM from-list) parser.py is auto-generated parser from the parser builder. Lexer, ...
('select-query', ['SELECT', 'select-list', 'FROM', 'sources', 'where_clause']), ('select-query', ['SELECT', 'select-list', 'FROM', 'sources', 'groupby_clause ...