arturo-query

Try:
A A B A or B A | B not A A -B ! A "A" 'A' "A B" A B or C !( A or B or C ) !( A | B | C ) !( A and B and C ) ( A | B | C | D | E ) F G day:6 ( month:jan | month:jun ) times !day:6 not black not not black ( ( ( A ) ( !B ( ( ) C ) ) ) ) or a a or a ! ( e f ) ():a a:()

Lexer output

Pick out tokens

Parser output

Remove superfluous nesting, promote like terms, pick out AND and NOT and OR, distribute negation

Final output

cartesian product of disjunctive terms, as an OR() of AND()'s