anchor.diff:             raise EFLRE.Create('Syntax error');
             end;
            end;
  +         'Q':begin
  +          inc(SourcePosition);
  +          while SourcePosition<=SourceLength do begin
  +           TemporaryNode:=nil;
  +           case Source[SourcePosition] of
  +            '\':begin
  +             inc(SourcePosition);
  +             if (SourcePosition<=SourceLength) and (Source[SourcePosition]='E') then begin
  +              inc(SourcePosition);
  +              break;
  +             end else begin
  +              TemporaryNode:=NewNode(ntCHAR,nil,nil,NewCharClass(['\'],true));
  +             end;
  +            end;
  +            #128..#255:begin
  +             if rfUTF8 in Flags then begin
  +              UnicodeChar:=UTF8CodeUnitGetCharAndIncFallback(Source,SourcePosition);
  +              LowerCaseUnicodeChar:=UnicodeToLower(UnicodeChar);
  +              UpperCaseUnicodeChar:=UnicodeToUpper(UnicodeChar);
  +              if (rfIGNORECASE in Flags) and (LowerCaseUnicodeChar<>UpperCaseUnicodeChar) then begin
  +               TemporaryNode:=NewAlt(NewUnicodeChar(LowerCaseUnicodeChar),NewUnicodeChar(UpperCaseUnicodeChar));
  +              end else begin
  +               TemporaryNode:=NewUnicodeChar(UnicodeChar);
  +              end;
  +             end else begin
  +              TemporaryNode:=NewNode(ntCHAR,nil,nil,NewCharClass([Source[SourcePosition]],true));
  +              inc(SourcePosition);
  +             end;
  +            end;
  +            else begin
  +             if (rfIGNORECASE in Flags) and (Source[SourcePosition] in ['a'..'z','A'..'Z']) then begin
  +              UnicodeChar:=byte(TFLRERawByteChar(Source[SourcePosition]));
  +              LowerCaseUnicodeChar:=UnicodeToLower(UnicodeChar);
  +              UpperCaseUnicodeChar:=UnicodeToUpper(UnicodeChar);
  +              TemporaryNode:=NewNode(ntCHAR,nil,nil,NewCharClass([TFLRERawByteChar(byte(LowerCaseUnicodeChar)),TFLRERawByteChar(byte(UpperCaseUnicodeChar))],true));
  +             end else begin
  +              TemporaryNode:=NewNode(ntCHAR,nil,nil,NewCharClass([Source[SourcePosition]],true));
  +              inc(SourcePosition);
  +             end;
  +            end;
  +           end;
  +           if assigned(TemporaryNode) then begin
  +            if assigned(result) then begin
  +             result:=Concat(result,TemporaryNode);
  +            end else begin
  +             result:=TemporaryNode;
  +            end;
  +           end else begin
  +            raise EFLRE.Create('Syntax error');
  +           end;
  +          end;
  +         end;
            else begin
             if (rfUTF8 in Flags) and (byte(TFLRERawByteChar(Source[SourcePosition]))>=$80) then begin
              UnicodeChar:=UTF8CodeUnitGetCharAndIncFallback(Source,SourcePosition);
  
positive.code: ********************************************************************************
  
  FLRE - Fast Light Regular Expressions - A fast light regular expression library
  Copyright (C) 2015-2016, Benjamin 'BeRo' Rosseaux
  
  The source code of the FLRE engine library and helper tools are
  distributed under the Library GNU Lesser General Public License Version 2.1 
  
negative.code:         end;
         end else begin
          raise EFLRE.Create('Syntax error');
         end;
        end;
        '[':begin
  