anchor.diff:    selectlist[stmt]
     (                  { ExpressionIF e;               } 
       WHERE e=orclause { stmt.setClause(e);            }
  -  )?;
  +  );
   
   selectlist [SelectStatement stmt]:
                    { ExpressionIF e;    }
  
positive.code:         (
           COMMA right=expr      { e.addChild(right);                               }
          )*
        ) RPAREN
      )
    );
    
  
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:
  