search: add literal search parser for and/or operators
Created by: rvantonder
Stacked PR no. 4. This adds the logic for RFC 176. The diff might seem large, but half of it is just moving existing tests to its own file. Summary:
-
Add a new, self-contained
literal_parser.go
. It became too brittle/difficult to attempt to thread in the new logic to the existing parser. So, I'm duplicating some parts of the existing parser to make this easier to implement and read (likeparseAndLiteral
andp.parseOrLiteral
) that can definitely be deduped later -
The main important additions are some of the logic in
parseParameterListLiteral
and callees to get the behavior described in RFC 176. The callees are very similar to existing scanners inparser.go
. -
Ported existing tests, added more, and made them more explicit to understand when results are due to a heuristic label.