Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: SynEdit-Highlighter, der Strings ignorieren soll

  Alt 2. Dez 2005, 14:46
Hallo marabu, herzlichen Dank für deine Bemühungen.

Ich habe es nun hier eingefügt:
\synedit\SynGen\SynGenUnit.pas, Z. 1364 ff.:

Delphi-Quellcode:
  for I := 0 to (EnclosedList.Count - 1) do
  begin
    {
    if (TLexEnclosedBy(EnclosedList[I]).StartsWith <> '') then
    begin
      Writeln(OutFile, '      ''' +
        StuffString(TLexEnclosedBy(EnclosedList[I]).StartsWith[1]) + ''': fProcTable[I] := ' +
        TLexEnclosedBy(EnclosedList[I]).ProcName + 'OpenProc;');
    end;
    }

    // --------------------------------------------------------------------------
    // the following condition enables EOL termination for
    // enclosures in the ENCLOSEDBY section of SYNGEN grammar
    // files when terminator is an empty string
    // (marabu 2005-12-02)
    if TLexEnclosedBy(EnclosedList[I]).EndsWith <> 'then
    begin
      Write(OutFile, sPrefix, ' if ');
      for J := 1 to Length(TLexEnclosedBy(EnclosedList[I]).EndsWith) do
      begin
        if (J > 1) then
        begin
          Writeln(OutFile, ' and');
          Write(OutFile, sPrefix, ' ');
        end;
        Write(OutFile, '(fLine[Run' + AddInt(J - 1) + '] = '''
        + StuffString(TLexEnclosedBy(EnclosedList[I]).EndsWith[J]) + ''')');
      end;
      Writeln(OutFile, ' then');
      Writeln(OutFile, sPrefix, ' begin');
      Writeln(OutFile, sPrefix, ' Inc(Run, '
      + IntToStr(Length(TLexEnclosedBy(EnclosedList[I]).EndsWith)) + ');');
      Writeln(OutFile, sPrefix, ' fRange := rsUnKnown;');
      Writeln(OutFile, sPrefix, ' Break;');
      Writeln(OutFile, sPrefix, ' end;');
    end;
    // --------------------------------------------------------------------------
  end;
Nur hat dies leider keine Auswirkung auf das Ergebnis. Erzeugt wird immer noch eine Unit, die wie folgt aussieht:

Delphi-Quellcode:
procedure TSynAdaSyn.Next;
begin
  fTokenPos := Run;
  case fRange of // <== Hier fehlt natürlich etwas
  else
    begin
      fRange := rsUnknown;
      fProcTable[fLine[Run]];
    end;
  end;
end;
Beim Aufruf von

Delphi-Quellcode:
ENCLOSEDBY

Comment,BraceComment,--
  Mit Zitat antworten Zitat