anchor.diff:            begin
               if not (AExpressionKind in [ekText,ekUnknown]) then
                 EVisualGridParserException.Create('Bad numeric expression');
  +
               LToken := tkPercent;
             end;
           '\':
  
positive.code:   LToken: TToken = tkNone;
    LPrevToken: TToken = tkNone;
    LExpression: utf8string;
  
    procedure NextValue;
    begin
  
negative.code:             NextValue;
        tkPercent:
          if AExpressionKind = ekText then
          begin
            if LLastPercent then
              raise EVisualGridParserException.Create('Unexpected occurrence of % found');
            case LPrevToken of
              tkText:
                begin
                  if (AExpressionRecord.TextMatchKind = tmkUnknown) then
                    AExpressionRecord.TextMatchKind:=tmkMatchTextEnd
                  else
                    AExpressionRecord.TextMatchKind:=tmkMatchTextAnywhere;
                  LLastPercent:=true;
                end;
              tkNone:
                AExpressionRecord.TextMatchKind:=tmkMatchTextBeginning;
              tkPercent:
                raise EVisualGridParserException.Create('Unexpected occurrence of % found');
            end;
          end
          else
            raise EVisualGridParserException.Create('Unexpected occurrence of % found');
        tkLess..tkGreaterOrEqual:
          case AExpressionKind of
            ekNum:
  