| Autor |
Beitrag |
blackbirdXXX

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Mo 13.11.06 20:32
Hallo
Ich arbeite zusammen mit ein paar anderen Leuten an einer in Python geschriebenen Forensoftware. Das Highlighter System, dass wir für eben dieses entwickelt haben wurde dann vor wenigen Wochen als extra Library veröffentlicht, damit man es auch ohne pocoo verwenden kann.
Allerdings sind meine Delphi Tage weit hinter mir und ich bin mir nicht sicher in wie weit der Highlighter stimmt. Eventuell könntet ihr mir helfen den Delphi Highlighter zu testen.
Online kann man das auf der offiziellen pygments (Name der Lib) webseite: pygments.pocoo.org/demo/ oder auf diesem Pastebin: paste.pocoo.org/
Könntet ihr, sofern ihr Fehler findet die Links dazu hier posten und kommentieren, was falsch hervorgehoben wird?
Danke im Voraus,
Armin
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Mo 13.11.06 23:50
Hallo,
ein paar Fehler:
>>> Probleme mit Kommentaren und anderem innerhalb Uses
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, ToolWin, ComCtrls, ExtCtrls, StdCtrls, Buttons, checklst, commctrl, FileCtrl, ShlObj, shellapi, OleCtrls, SHDocVw_TLB, ActiveX, Calendar, Mask, ColorGrd, wininet; uses WinProcs, WinTypes,
SysUtils; uses Forms, Unit1 in 'Unit1.pas' ; |
>>> String gilt als reserviertes Schlüsselwort
Delphi-Quelltext
>>> folgende sind keine reservierten Schlüsselworte
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if EditTitel.Color = $009DA6F7 then inc(i); dec(i); if bl = False then bl := True; MenueProjektSpeichernClick(self); break; |
Der Link dazu >>> paste.pocoo.org/show...7ca552f48ba586208e3/
ps.: Die Auftstellung erhebt nicht den Anspruch der Vollständigkeit
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
wolke
      
Beiträge: 240
|
Verfasst: Di 14.11.06 01:14
wieso nutzt ihr nicht den geshi bzw. das selbe format, so dass man highlighting-formate leicht übertragen kann?
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Di 14.11.06 06:35
Weil der in PHP, pocoo aber in Python geschrieben ist und blackbirdXXX überzeugter Anti-PHPist ist?
_________________ JSXGraph
|
|
blackbirdXXX 

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Di 14.11.06 07:41
wolke hat folgendes geschrieben: | | wieso nutzt ihr nicht den geshi bzw. das selbe format, so dass man highlighting-formate leicht übertragen kann? |
Erstens weil Geshi in PHP geschrieben ist, wir aber einen in Python geschrieben Highlighter brauchen. Auf der einen Seite für unser pocoo Projekt, auf der anderen auch für Trac, MoinMoin, ViewCVS und jede Menge anderer in Python geschriebener Programme, die momentan nur enscript aufrufen um Sourcecode hervorzuheben.
Außerdem ist die Qualität von Genshi absolut schlecht. Sowas kann es nicht korrekt highlighten:
pygments.pocoo.org/demo/44/ oder sowas pygments.pocoo.org/demo/30/
raziel hat folgendes geschrieben: | | Weil der in PHP, pocoo aber in Python geschrieben ist und blackbirdXXX überzeugter Anti-PHPist ist? |
Das hat mit dem jetzt weniger zu tun, aber ja, mein Verhältnis zu PHP ist nicht gerade sehr gut
@Lannes: Danke für den Hinweis, da wurde auf eine Regel vergessen. Das behebe ich heute nach der Schule.
Weiß eigentlich jemand ob man Delphi Kommentare schachteln kann?
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 14.11.06 08:39
Könntest Du mir bitte die genaue GeSHi-Version sagen, mit der das getestet wurde? (GeSHi 1.0.7.X --> qbnz.org oder 1.1.X geshi.org???) Bitte auch die genauen Fehler mir nochmal per Mail erklären, reiche es dann entsprechend an den Lang-Dev weiter. Solltest Du für das Highlighten von Delphi-Source spezielle Fehler finden, einfach nen Link zu dem Source + kurze Fehlerbeschreibung an mich, dann kümmer ich mich drum.
Ach ja: GeSHi schafft es von der Qualität aber immerhin auf bessere Syntax-Treue als der Highlighter hier im DF. Ferner ist der GeSHi (speziell die Version 1.1.X) nicht auf die Fehlerkorrektur, sondern das syntaxgetreue Highlighting von syntaktisch korrekten Source-Abschnitten ausgelegt.
blackbirdXXX hat folgendes geschrieben: | raziel hat folgendes geschrieben: | | Weil der in PHP, pocoo aber in Python geschrieben ist und blackbirdXXX überzeugter Anti-PHPist ist? |
Das hat mit dem jetzt weniger zu tun, aber ja, mein Verhältnis zu PHP ist nicht gerade sehr gut
@Lannes: Danke für den Hinweis, da wurde auf eine Regel vergessen. Das behebe ich heute nach der Schule. |
Ich teste die hier genannten Sources mal gegen den aktuellen GeSHi. Soweit ich weiß, müssten die aber problemlos (und korrekt) dargestellt werden können.
blackbirdXXX hat folgendes geschrieben: | | Weiß eigentlich jemand ob man Delphi Kommentare schachteln kann? |
Nein. Kannst Du nicht.
Delphi-Quelltext
ist kein Mehrzeiliger Kommentar. ist aber ein einzeiliger Kommentar ...
//Edit: Der Support für Ruby ist in der aktuellen Beta-Version noch nicht implementiert. Für Delphi hauen aber alle drei Beispiele oben vom Highlighting hin.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 14.11.06 08:52
Hallo,
eine "Schachtelung" funktioniert nur wenn unterschiedliche Formen der Kommentierung genutzt werden.
Delphi-Quelltext
das funktioniert auch
Delphi-Quelltext
entfernt man aber die äußere Klammerung führt das zu einem Fehler,
denn die folgenden Kommentierungen sind nicht möglich
Delphi-Quelltext
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
blackbirdXXX 

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Di 14.11.06 09:16
BenBE hat folgendes geschrieben: | | Könntest Du mir bitte die genaue GeSHi-Version sagen, mit der das getestet wurde? (GeSHi 1.0.7.X --> qbnz.org oder 1.1.X geshi.org???) Bitte auch die genauen Fehler mir nochmal per Mail erklären, reiche es dann entsprechend an den Lang-Dev weiter. Solltest Du für das Highlighten von Delphi-Source spezielle Fehler finden, einfach nen Link zu dem Source + kurze Fehlerbeschreibung an mich, dann kümmer ich mich drum. |
Den Delphi Lexer hab ich bei Geshi gar nicht getestet. Und Ruby gibts noch nicht im neuen Geshi System (Das übrigens ein weitaus besser funktionierendes Lexer System hat als das alte).
BenBE hat folgendes geschrieben: | | Ach ja: GeSHi schafft es von der Qualität aber immerhin auf bessere Syntax-Treue als der Highlighter hier im DF. Ferner ist der GeSHi (speziell die Version 1.1.X) nicht auf die Fehlerkorrektur, sondern das syntaxgetreue Highlighting von syntaktisch korrekten Source-Abschnitten ausgelegt. |
Das selbe gilt für Pygments.
BenBE hat folgendes geschrieben: | | //Edit: Der Support für Ruby ist in der aktuellen Beta-Version noch nicht implementiert. Für Delphi hauen aber alle drei Beispiele oben vom Highlighting hin. |
Dinge die die in Geshi nicht funktionieren:
- python tripple quotes
- der ganze ruby highlighter (fancy strings gehen nicht, heredocs nicht, regex nicht)
- die regular expressions im javascript highighlighter
- verschachtelte Lexer (inline assembler in delphi/c, javascript/css in html, html um php, css um php etc...)
Mit dem neuen Lexer System wären solche Dinge zwar möglich, aber es ist verdammt komplex das Ding. Da ist unser Ansatz etwas einfacher zu Verwenden.
Wenn ihr mal Hilfe zum Ruby Lexer braucht, sofern ihr einen Implementiert, kannst du dich ja an mich wenden 
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
Jochen W.
      
Beiträge: 56
|
Verfasst: Di 14.11.06 09:51
BenBE hat folgendes geschrieben: | | Ach ja: GeSHi schafft es von der Qualität aber immerhin auf bessere Syntax-Treue als der Highlighter hier im DF. |
Was hat denn diese Aussage hier in diesem Topic zu suchen.  Warum schreibst du jetzt etwas vom DF Highlighter? Kein Wunder das bestimmte Personen allergisch auf dich reagieren wenn du unterschwällig solche Kommentare abgibst. Na ja, anderes Thema. 
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Di 14.11.06 11:04
Jochen W. hat folgendes geschrieben: | Na ja, anderes Thema.  |
Exakt, daher bitte beim Thema bleiben und das hier per PN klären. Danke.
_________________ JSXGraph
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 14.11.06 11:23
blackbirdXXX hat folgendes geschrieben: | BenBE hat folgendes geschrieben: | | Könntest Du mir bitte die genaue GeSHi-Version sagen, mit der das getestet wurde? (GeSHi 1.0.7.X --> qbnz.org oder 1.1.X geshi.org???) Bitte auch die genauen Fehler mir nochmal per Mail erklären, reiche es dann entsprechend an den Lang-Dev weiter. Solltest Du für das Highlighten von Delphi-Source spezielle Fehler finden, einfach nen Link zu dem Source + kurze Fehlerbeschreibung an mich, dann kümmer ich mich drum. |
Den Delphi Lexer hab ich bei Geshi gar nicht getestet. Und Ruby gibts noch nicht im neuen Geshi System (Das übrigens ein weitaus besser funktionierendes Lexer System hat als das alte). |
Ich weiß. Bin an der Entwicklung des Dev-Branches 1.1.X beteiligt (daher der Delphi-Support  ).
blackbirdXXX hat folgendes geschrieben: | BenBE hat folgendes geschrieben: | | Ach ja: GeSHi schafft es von der Qualität aber immerhin auf bessere Syntax-Treue als der Highlighter hier im DF. Ferner ist der GeSHi (speziell die Version 1.1.X) nicht auf die Fehlerkorrektur, sondern das syntaxgetreue Highlighting von syntaktisch korrekten Source-Abschnitten ausgelegt. |
Das selbe gilt für Pygments. |
Beim aktuellen GeSHi-Core weiß ich z.B. beim Delphi-Parser von noch so einigen Dinge, die aber speziell Source-Fragmente angehen ... Das sind aber einfach Context-Probleme (im Wesentlichen).
blackbirdXXX hat folgendes geschrieben: | BenBE hat folgendes geschrieben: | | //Edit: Der Support für Ruby ist in der aktuellen Beta-Version noch nicht implementiert. Für Delphi hauen aber alle drei Beispiele oben vom Highlighting hin. |
Dinge die die in Geshi nicht funktionieren:
- python tripple quotes
- der ganze ruby highlighter (fancy strings gehen nicht, heredocs nicht, regex nicht)
- die regular expressions im javascript highighlighter
- verschachtelte Lexer (inline assembler in delphi/c, javascript/css in html, html um php, css um php etc...)
Mit dem neuen Lexer System wären solche Dinge zwar möglich, aber es ist verdammt komplex das Ding. Da ist unser Ansatz etwas einfacher zu Verwenden. |
Die ersten drei melde ich weiter ...
Der letzteist by-design und wird mit dem 1.1.Xer Branch behoben ... ASM in Delphi geht übrigens (im 1.1.Xer) schon (sogar besser als die Delphi-IDE dies macht *g*). Schau Dir einfach mal das Testscript auf geshi.org an.
blackbirdXXX hat folgendes geschrieben: | Wenn ihr mal Hilfe zum Ruby Lexer braucht, sofern ihr einen Implementiert, kannst du dich ja an mich wenden  |
Jup. Siehe in deinem Posteingang 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
blackbirdXXX 

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Di 14.11.06 12:48
BenBE hat folgendes geschrieben: | | ...Context-Probleme |
Die würden mich besonders interessieren. Besonders was "asm" Blöcke und Co angeht.
Eventuell kennt ihr ein paar kurze Code Schnippsel bei denen Keywords zB abhängig vom Kontext sind, oder der Highlighter in einem anderen State weitermacht (inline Assembler)
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
Jochen W.
      
Beiträge: 56
|
Verfasst: Di 14.11.06 13:01
|
|
blackbirdXXX 

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Di 14.11.06 14:08
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 14.11.06 18:15
In Zeile 43 ist die Behandlung von Hex-Zahlen falsch ... Bitte überprüfen.
Weitere Kontext-Abhängige Dinge sind die Keywords export, exports, library und name. Außerdem Außerdem gibt es bei Default, in, as, register (Aufrufkonvention) sowie einigen weiteren Ausnahmen. Schau einfach mal in die Delphi-Langfile im GeSHi 1.1.X rein (bzw. in den CodeParser).
Außerdem gibt es bei Compiler-Direktiven einige Ausnahmen. Die Definition gültiger Compiler-Direktiven ist in den Langfiles vollständig (soweit in DOH verzeichnet).
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
blackbirdXXX 

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Di 14.11.06 18:34
BenBE hat folgendes geschrieben: |
In Zeile 43 ist die Behandlung von Hex-Zahlen falsch ... Bitte überprüfen. |
Oki. Hab ich behoben.
BenBE hat folgendes geschrieben: | | Weitere Kontext-Abhängige Dinge sind die Keywords export, exports, library und name. Außerdem Außerdem gibt es bei Default, in, as, register (Aufrufkonvention) sowie einigen weiteren Ausnahmen. Schau einfach mal in die Delphi-Langfile im GeSHi 1.1.X rein (bzw. in den CodeParser). |
Bin ich schon dabei 
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
|