anchor.diff:     if Name[Index] in ['0'..'9'] then begin
       if Index>1 then begin
        Value:=Value*10;
  -    end else begin  
  +    end else begin
        Value:=0;
       end;
       inc(Value,byte(ansichar(Name[Index]))-byte(ansichar('0')));
  
positive.code:             end else begin
               raise EFLRE.Create('Syntax error');
              end;
              Value:=CountInternalCaptures;
              inc(CountInternalCaptures);
              if (CountCaptures+1)>length(CapturesToSubMatchesMap) then begin
               SetLength(CapturesToSubMatchesMap,(CountCaptures+1)*2);
              end;
              CapturesToSubMatchesMap[CountCaptures]:=Value;
              inc(CountCaptures);
              NamedGroupStringIntegerPairHashMap.Add(Name,Value);
              if NamedGroupStringList.IndexOf(Name)<0 then begin
               NamedGroupStringList.Add(Name);
              end else begin
               raise EFLRE.Create('Duplicate named group');
              end;
              NamedGroupStringIntegerPairHashMap.Add(IntToStr(Value),Value);
              if NamedGroupStringList.IndexOf(IntToStr(Value))<0 then begin
               NamedGroupStringList.Add(IntToStr(Value));
              end else begin
               raise EFLRE.Create('Duplicate named group');
              end;
              GroupIndexIntegerStack.Add(Value);
              GroupNameStringStack.Add(Name);
              try
               result:=NewNode(ntPAREN,ParseDisjunction,nil,nil,Value);
              finally
               GroupIndexIntegerStack.Delete(GroupIndexIntegerStack.Count-1);
               GroupNameStringStack.Delete(GroupNameStringStack.Count-1);
              end;
             end;
            end;
            'P':begin
  
negative.code:               end else begin
                 raise EFLRE.Create('Syntax error');
                end;
                result:=NewNamedGroup(Name);
               end
               else begin
                raise EFLRE.Create('Syntax error');
  