anchor.diff:    while (not (P^ in tokens)) do begin
       if ((P = FSourceEnd) or (P^ = #0)) then begin
         // TODO end of buffer?
  +      Log('end of buffer @ ConsumeTokensTill', ltInfo);
  +      FSourcePtr := P;
  +      ReadBuffer;
  +      P := FSourcePtr;
       end;
       if (P^ = CALL_MACRO_CHAR) then begin
         SetString(res, StartP, P-StartP);
  
positive.code:     SetLength(result, idx+1);
      result[idx] := arg;
      Inc(idx);
    end;
    if (P^ <> ')') then begin
      raise Exception.Create('Missing )');
  
negative.code:           Flush;
            // emit correct line number macro
            macroRes := #10#13+'#linenumber '+IntToStr(currentLine)+' '+IntToStr(linePos)+' '+filename+#10#13;
            FData.WriteBuffer(PChar(macroRes)^, Length(macroRes));
            IncP;
            macroRes := ProcMacro();
            FData.WriteBuffer(PChar(macroRes)^, Length(macroRes));
  