Flow¶
A raw query (either from stdin, a file, or a string) hits the main main.ts.
This query then gets categorised into the type of statement it is (SELECT,
INSERT, UPDATE, DELETE etc…), as the SQL grammar is pretty damn huge, there is
a lexer per statement.
Once it has been categorised, it is then lexxed by the relevant lexer. See the
src/lexer directory for the inner workings.
i.e. if we have the statement
SELECT name FROM user
This will hit the lexer will categorise this as a SELECT statement which the select lexer will then tokenise.
tokenise. The tokenised string is then passed through to every checker to look for any linting errors.