Wichtig ist, dass du von vorne nach hinten durchgehst und dabei jeweils auf alle Möglichkeiten prüfst. Also suchst du z.B. für Pascal immer
nach dem ersten
- Kommentaranfang '{' oder '(*' oder '//'
oder
- Stringanfang '"' oder ''''
oder
- Anfang eines Schlüsselwortes 'a' bis 'z'.
Das darfst du nicht separat machen, denn sonst können Dinge wie
begin // hier gehts los bis end
deinen "Parser" hereinlegen wenn du erst alle Schlüsselwörter, dann alle Zeichenketten und danach erst alle Kommentare behandelst. Und wenn du die Reihenfolge änderst, dann kann man ihn mit
a := 'begin // hier gehts los bis end';
hereinlegen.
Ich habe kürzlich einen in PHP geschrieben (
hier), der dort natürlich die ohnehin schon gegebenen Möglichkeiten regulärer Ausdrücke nutzt. Da kannst du mal in den
Quelltext schauen. Für Pascal nehmen ich (vereinfacht) den regulären Ausdruck:
Code:
[[:<:]][a-zA-Z_]|'|//|{|\(\*
Allerdings bin ich zu wenig drin in .NET um zu wissen, ob's da auch reguläre Ausdrücke gibt