anchor.diff:        raise Exception.Create('Unexpected char in expression');
       end;
   
  +    if (AExpressionKind = ekText) and (LToken in CONVERTABLE_TOKENS_TO_STR) then
  +      LValue^:=LValue^+TokenToStr(LToken);
  +
       if LPrevToken in [tkClosingBracket, tkClosingParenthesis] then
         raise Exception.Create('Invaild expression (char detected after closing bracket)');
   
  
positive.code:         if AExpressionKind in [ekSet, ekNum] then
            raise Exception.Create('Unexpected string literal in expression');
        tkClosingBracket:
          if AExpressionRecord.SetKind<>skNumericBetweenInclusive then
            raise Exception.Create('Badly closed "between" expression');
        tkClosingParenthesis:
          if AExpressionRecord.SetKind<>skNumericBetweenExclusive then
            raise Exception.Create('Badly closed "between" expression');
        tkComma:
          begin
            NextValue;
          end;
        tkPercent:
          case LPrevToken of
            tkText:
              if (AExpressionRecord.TextMatchKind = tmkUnknown) then
  
negative.code:               LValue^:=LValue^+c^;
                Inc(c);
              until not (c^ in ['0'..'9', '.']);
              case AExpressionKind of
                ekUnknown, ekSet, ekNum: LToken:=tkNum;
                ekText: LToken:=tkText;
              end;
            end;
          '%':
            begin
  