anchor.diff:      | exprRecursive
       ;
   
  -exprRecursive:
  -    matchNone
  -    ;
  -    
  -booleanPrimary:
  -    booleanPrimary IS NOT? (TRUE | FALSE | UNKNOWN |NULL)
  -      | booleanPrimary SAFE_EQ predicate
  -     | booleanPrimary comparisonOperator predicate
  -      | booleanPrimary comparisonOperator (ALL | ANY) subquery
  -      | predicate
  -      ;
  -
  -comparisonOperator:
  -    EQ_OR_ASSIGN | GTE | GT | LTE | LT | NEQ_SYM | NEQ
  -    ;
  -
  -predicate:
  -    bitExpr NOT? IN subquery
  +exprRecursive
  +    : matchNone
  +    ;
  +    
  +booleanPrimary
  +    : booleanPrimary IS NOT? (TRUE | FALSE | UNKNOWN |NULL)
  +    | booleanPrimary SAFE_EQ predicate
  +    | booleanPrimary comparisonOperator predicate
  +    | booleanPrimary comparisonOperator (ALL | ANY) subquery
  +    | predicate
  +    ;
  +
  +comparisonOperator
  +    : EQ_OR_ASSIGN 
  +    | GTE 
  +    | GT 
  +    | LTE 
  +    | LT 
  +    | NEQ_SYM 
  +    | NEQ
  +    ;
  +
  +predicate
  +    : bitExpr NOT? IN subquery
       | bitExpr NOT? IN LEFT_PAREN simpleExpr ( COMMA  simpleExpr)* RIGHT_PAREN
       | bitExpr NOT? BETWEEN simpleExpr AND predicate
       | bitExpr SOUNDS LIKE simpleExpr
  
positive.code:     | bitExpr
      ;
    
  bitExpr:
      bitExpr BIT_INCLUSIVE_OR bitExpr
      | bitExpr BIT_AND bitExpr
      | bitExpr SIGNED_LEFT_SHIFT bitExpr
      | bitExpr SIGNED_RIGHT_SHIFT bitExpr
  
negative.code:     | NOT NULL
      ;
  
  primaryKey
  	: PRIMARY KEY
  	;
  
  matchNone
      : 'Default does not match anything'
      ;
      
  idList
      : LEFT_PAREN ID (COMMA  ID)* RIGHT_PAREN
      ;
  
  rangeClause
      : NUMBER (COMMA  NUMBER)* 
      | NUMBER OFFSET NUMBER
      ;
  
  tableNamesWithParen
      : LEFT_PAREN tableNames RIGHT_PAREN
      ;
  
  tableNames
      : tableName (COMMA tableName)*
      ;
  
  columnNamesWithParen
      : LEFT_PAREN columnNames RIGHT_PAREN
      ;
  
  columnNames
      : columnName (COMMA columnName)*
      ;
      
  columnList
      : LEFT_PAREN columnNames RIGHT_PAREN
      ;
  
  indexNames
      : indexName (COMMA indexName)*
      ;
  
  rowNames
      : rowName (COMMA rowName)*
      ;
      
  bitExprs:
      bitExpr (COMMA bitExpr)*
      ;
  
  exprs
      : expr (COMMA expr)*
      ;
   
  exprsWithParen
      : LEFT_PAREN exprs RIGHT_PAREN
      ;
  
  //https://dev.mysql.com/doc/refman/8.0/en/expressions.html
  expr
      : expr OR expr
      | expr OR_SYM  expr
      | expr XOR expr
      | expr AND expr
  