anchor.diff:                end;
               ekNum:
                 if not (LPrevToken in NUM_OPERATORS) then
  -                raise Exception.Create('Bad numeric expression')
  +                raise EVisualGridParserException.Create('Bad numeric expression')
                 else
                 begin
                   while c^ in [#1..#32] do Inc(c);
  
positive.code:       case AExpressionRecord.SetKind of
          skNumericBetweenInclusive:
            if LPrevToken <> tkClosingBracket then
              raise Exception.Create('Badly closed "between" expression');
          skNumericBetweenExclusive:
            if LPrevToken <> tkClosingParenthesis then
              raise Exception.Create('Badly closed "between" expression');
        end;
    end;
  
    if (LValueIdx = 0) and (LValue^='') then
      raise Exception.Create('Expression error (no value)');
  
    SetLength(AExpressionRecord.Values, LValueIdx + 1);
    for i := 0 to LValueIdx do
  
negative.code:                 tkGreaterOrEqual: NumericComparisionKind:=nckNumericGTE;
                end;
            ekSet:
              raise EVisualGridParserException.CreateFmt('Unexpected token found : "%s"', [TokenToStr(LToken)]);
          end;
        tkOpeningParenthesis, tkOpeningBracket:
          if AExpressionKind = ekSet then
            if LPrevToken <> tkNone then
              raise EVisualGridParserException.CreateFmt('Bad "between" expression. Unexpected "%s"', [TokenToStr(LToken)])
            else
            with AExpressionRecord do
            case LToken of
  