Verschachtelte Kommentare

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Verschachtelte Kommentare

Beitrag von Patito »

Was ist bei verschachtelten Kommentaren jetzt erlaubt?
{{ } ist doch normalerweise ein gültiger Kommentar?!

Ich parse gerade ein wenig den FPC-Source und mein Parser beschwert sich in folgendem File über ein $ENDIF ohne $IF.

https://github.com/alrieckert/freepasca ... 68kcnv.pas

Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Verschachtelte Kommentare

Beitrag von Patito »

Noch so ein fragwürdiges Beispiel aus dem FPC Source:

https://github.com/graemeg/freepascal/b ... numlib.pas

Zeile 285:
{procedure Intsle(l: ArbInt; e: ArbFloat); {$IFDEF Needsstdcall} stdcall; {$ENDIF} external 'TpNumLib' index 117;}

Benutzeravatar
theo
Beiträge: 10900
Registriert: Mo 11. Sep 2006, 19:01

Re: Verschachtelte Kommentare

Beitrag von theo »

Kommt auf den Modus an. Mit {$mode delphi} Ist es gültig.
Dann wird es sogar im Editor anders angezeigt.

Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Verschachtelte Kommentare

Beitrag von Patito »

Ah, Danke. Andere Highlighter (z.B. Notepad++, GitHub) kennen sowas anscheinend nicht.
Bei näherer Betrachtung bin ich der Meinung, dass solche verschachtelte Kommentare verboten gehören {{}}
sowas führt nur zu einem unangenehmen Kompatibilitätschaos.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Verschachtelte Kommentare

Beitrag von corpsman »

ist doch eigentlich recht einfach, zu musst nur merken in welchem Mode du bist und entsprechend die öffnenden und schließenden Kommentare zählen. Immer wenn alle "0" sind hast du echten Quellcode for dir.
--
Just try it

Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Verschachtelte Kommentare

Beitrag von Patito »

corpsman hat geschrieben:ist doch eigentlich recht einfach, zu musst nur merken in welchem Mode du bist und entsprechend die öffnenden und schließenden Kommentare zählen. Immer wenn alle "0" sind hast du echten Quellcode for dir.
Ich probier es mal. Wenn im Code ein $mode vorhanden ist, kann man zumindig eindeutig sagen was los ist.
Wenn kein $mode da ist, muss ein Parser aber erst mal raten ob ein zufälliges File aus dem Internet als Default $mode delphi oder $mode objfpc habe will.

Z.B. der Highlighter hier im Forum kennt wohl auch nur $mode delphi Kommentare.

Code: Alles auswählen

 
{$mode objfpc }
{{Test } Test }
{{Test } XZY;
 
{$mode delphi }
{{Test } Test }
{{Test } XZY;
 
Github kennt es nicht, Notepad++ kennt es nicht, das Forum hier kennt es nicht
-> Ich denke seltsame Kommentare sollten lieber deprecated werden.
Früher war das mal eine gut Idee um Blöcke einfacher auskommentieren zu können,
aber heutzutage kann man das ja einfacher über Tools machen, die // verwenden.

Da verschachtelte Kommentare aber nicht so alltäglich sind ist für mich das ganze auch erst mal nicht so problematisch.

Etwas unangenehmer finde ich gerade bei FPC die Include-Files. Ich vergleiche gerade ein wenig Delphi mit FPC und habe hier
einen Stapel mit ca 250 MB Delphi .pas Files (Jedi, Indy, ...) und 250 MB FreePascal .pas Files (FPC, Lazarus, ...).
Bei FreePascal verlassen sich sehr viele Units darauf, dass jemand irdendeinen Such-Pfad richtig eingestellt hat um die Include-Files zu finden.
Bei Delphi habe ich da wesehtlich weniger Unklarheiten. Viele Packages benutzen dort sehr schön eindeutige Relativ-Pfade für die Include-Files.
Da muss sich ein Parser dann gar keine Gedanken über Such-Pfade machen, die in irgendwelchen Config-Files versteckt sind.

Antworten