* feat: Reimplement keywords as BTreeSet for more efficient lookup Added a `Token` type to perform case-insensitive comparisons to avoid allocations when performing lookups in the set. Also introduced new `keyword` combinator to replace use of `tag_no_case`. This is necessary to prevent eagerly recognising tags without the appropriate separator. For example, `tag_no_case("OR")` will recognise `ORDER` in a conditional expression. The new combinator a `keyword` follows the pattern: ``` keyword ::= (a..z | A..Z)* keyword_separator keyword_separator ::= ' ' | '(' | ')' | ';' | ',' | '=' | '\n' | '\t' ``` * fix: Allow quoted time; using more efficient case-insensitive comparison * fix: Digits to right of decimal point are optional * fix: More idiomatic use of zip * fix: Use `keyword` combinator and adjust whitespace handling * fix: <> is a valid alias for the != operator * fix: Special handling of DISTINCT identifier for function call name * chore: Add tests * chore: Feedback to remove unnecessary comments * chore: Switch from BTreeSet to HashSet – thanks @domodwyer! |
||
---|---|---|
.. | ||
src | ||
Cargo.toml |