(Co-Admin)
Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
Turbo Delphi für Win32
|
Re: SynEdit-Highlighter, der Strings ignorieren soll
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,--
|
|
Zitat
|