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: " "