search_text
    : and_expression
    | and_expression search_text
    | and_expression OR search_text

and_expression
    : boolean_expression
    | boolean_expression AND and_expression

boolean_expression
    : NOT expression
    | expression

expression
    : ( search_text )
    | COLUMN expression
    | value

value
    : OPERATOR string
    | string

string
    : WORD
    | STRING

terminal:
    OR               -> /OR[ ]/
    AND              -> /AND[ ]/
    NOT              -> /NOT[ ]/
    COLUMN           -> /[^><= :\(\)"][^ :\(\)"]*:/
    STRING           -> /"(\\.|[^\\"])*"/
    WORD             -> /[^><= :\(\)"][^ :\(\)"]*/
    OPERATOR         -> /(>=?|<=?|!?=)/
    LEFT_PARENTHESE  -> /\(/
    RIGHT_PARENTHESE -> /\)/

ignore: " "