This class provides a parser which can construct an SQL WHERE clause from a
Google-like search expression.
The expression recognizes boolean "AND", "OR", and "NOT" (providing no
operator between keywords implies "AND"), like so:
cat and dog
cat or dog
cat and not dog
If no operator appears between keywords or quoted strings, "AND" is assumed.
A comma can be used instead of "OR":
cat dog
cat, dog
cat not dog
The parser recognizes parentheses, so complex expressions can be created:
cat and not (dog or puppy)
Quoted strings are also recognized, and are taken as literal keywords:
"cat and dog"
Parsing is designed to be as fuzzy as possible, so it shouldn't error unless
people search for "AND", "OR", or "NOT" without quoting it or use unbalanced
parentheses.