anchor.diff:             FreeAndNil(UnicodeCharClass);
             end;
            end;
  -         'g':begin
  +         'g','k':begin
             inc(SourcePosition);
  -          if (SourcePosition<=SourceLength) and (Source[SourcePosition]='{') then begin
  +          if (SourcePosition<=SourceLength) and (Source[SourcePosition] in ['{','''','<']) then begin
  +           case Source[SourcePosition] of
  +            '{':begin
  +             TerminateChar:='}';
  +            end;
  +            '<':begin
  +             TerminateChar:='>';
  +            end;
  +            else begin
  +             TerminateChar:='''';
  +            end;
  +           end;
              inc(SourcePosition);
              Name:='';
              while (SourcePosition<=SourceLength) and (Source[SourcePosition] in ['0'..'9','A'..'Z','a'..'z','_']) do begin
               Name:=Name+Source[SourcePosition];
               inc(SourcePosition);
              end;
  -           if (SourcePosition<=SourceLength) and (Source[SourcePosition]='}') then begin
  +           if (SourcePosition<=SourceLength) and (Source[SourcePosition]=TerminateChar) then begin
               inc(SourcePosition);
               result:=NewBackReferencePerName(Name);
              end else begin
  
positive.code:      OldFlags:TFLREFlags;
       Name,TemporaryString:ansistring;
       TemporaryNode:PFLRENode;
   begin
    result:=nil;
    try
  
negative.code:           inc(SourcePosition);
           end;
           'A':begin
            result:=NewNode(ntBOT,nil,nil,nil,0);
            inc(SourcePosition);
           end;
           'Z':begin
            result:=NewNode(ntEOT,nil,nil,nil,0);
            inc(SourcePosition);
           end;
  