anchor.diff:    
     // CONVERSION FUNCTIONS
     TO_NUM    = "to_num";
  -  TO_UNIT   = "to_unit";
   }
   
   IDENTIFIER options { testLiterals = true; }:
  
positive.code:   selectlist[stmt]
    (                  { ExpressionIF e;               } 
      WHERE e=orclause { stmt.setClause(e);            }
    )?;
  
  selectlist [SelectStatement stmt]:
                   { ExpressionIF e;    }
  
negative.code:   { e = context.createExpression(LT(0).getText()); };
        
  function returns [FunctionIF f]:
    ( f=aggregate_function
    | f=simple_function
    );      
    
  aggregate_function returns [FunctionIF f]:
    ( COUNT | SUM | MAX | MIN | AVG | CONCAT)
    { f = context.createFunction(LT(0).getText()); };
    
  simple_function returns [FunctionIF f]:
    ( LOWERCASE | UPPERCASE | TITLECASE | LENGTH | SUBSTR | TRIM | TO_NUM)
    { f = context.createFunction(LT(0).getText()); };
  
  functionparam:
  