Hallo Matthias,
Zitat von
Matze:
Also müsste es ja irgendwie so in der Art gehen, nur geht es nicht, da dann die Parameter für eine Schleife in der erzeugten
Unit fehlen
Comment,BraceComment,--
da hast du recht. Ich habe mir SynGen mal angesehen. Ich weiß nicht warum, aber alle scheinen eine irre Freude daran zu haben die SynGen grammar files durch eigene Code-Strecken zu verbiegen - nur um EOL terminierte enclosures zu ermöglichen. Ich halte eine kleine Änderung an der SynGenUnit für komfortabler und effektiver:
Delphi-Quellcode:
begin
// ...
// 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;
Damit werden alle enclosures ohne definierten terminator durch EOL terminiert - und für deine Kommentarsyntax wird ein korrekter Parser wird generiert - hoffe ich...
Vorweihnachtliche Grüße vom marabu