Autor Beitrag
blackbirdXXX

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mo 13.11.06 23:50 
Hallo,

ein paar Fehler:
>>> Probleme mit Kommentaren und anderem innerhalb Uses
ausblenden 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,
//ein Kommentar
  commctrl, FileCtrl, ShlObj, shellapi, OleCtrls, SHDocVw_TLB, ActiveX,
  Calendar, Mask, ColorGrd, wininet;
//**********************************************
uses
  WinProcs,        { Imports RGB }
  WinTypes,        { Imports TBitmapInfoHeader }
{ declared these Windows units before Graphics so
  TBitmap from Graphics is used }

  SysUtils;        { Imports UpperCase }
//**********************************************
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};


>>> String gilt als reserviertes Schlüsselwort
ausblenden Delphi-Quelltext
1:
var s : String;					


>>> folgende sind keine reservierten Schlüsselworte
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 240



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Di 14.11.06 06:35 
Weil der in PHP, pocoo aber in Python geschrieben ist und blackbirdXXX überzeugter Anti-PHPist ist?

_________________
JSXGraph
blackbirdXXX Threadstarter

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Di 14.11.06 07:41 
user profile iconwolke 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/

user profile iconraziel 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 :D

@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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 14.11.06 08:39 
user profile iconblackbirdXXX hat folgendes geschrieben:
user profile iconwolke hat folgendes geschrieben:
wieso nutzt ihr nicht den geshi bzw. das selbe format, so dass man highlighting-formate leicht übertragen kann?


[...]

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/

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.

user profile iconblackbirdXXX hat folgendes geschrieben:
user profile iconraziel 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 :D

@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.

user profile iconblackbirdXXX hat folgendes geschrieben:
Weiß eigentlich jemand ob man Delphi Kommentare schachteln kann?

Nein. Kannst Du nicht.
ausblenden Delphi-Quelltext
1:
2:
3:
// Test { A
B
}

ist kein Mehrzeiliger Kommentar. // Test { A 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 14.11.06 08:52 
Hallo,

eine "Schachtelung" funktioniert nur wenn unterschiedliche Formen der Kommentierung genutzt werden.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  {  // Kommentar  }
  {  (* Kommentar *)  }
  (*  // Kommentar  *)
  (*  { Kommentar }  *)


das funktioniert auch
ausblenden Delphi-Quelltext
1:
  (*  {  { Kommentar }  }  *)					

entfernt man aber die äußere Klammerung führt das zu einem Fehler,
denn die folgenden Kommentierungen sind nicht möglich
ausblenden Delphi-Quelltext
1:
2:
3:
  {  { Kommentar }  }
  (*  (* Kommentar *)  *)
  (*  {  (* Kommentar *)  }  *)

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
blackbirdXXX Threadstarter

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Di 14.11.06 09:16 
user profile iconBenBE 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).

user profile iconBenBE 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.

user profile iconBenBE 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 56



BeitragVerfasst: Di 14.11.06 09:51 
user profile iconBenBE 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Di 14.11.06 11:04 
user profile iconJochen W. hat folgendes geschrieben:
Na ja, anderes Thema. :?

Exakt, daher bitte beim Thema bleiben und das hier per PN klären. Danke.

_________________
JSXGraph
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 14.11.06 11:23 
user profile iconblackbirdXXX hat folgendes geschrieben:
user profile iconBenBE 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 ;-)).

user profile iconblackbirdXXX hat folgendes geschrieben:
user profile iconBenBE 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).

user profile iconblackbirdXXX hat folgendes geschrieben:
user profile iconBenBE 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.

user profile iconblackbirdXXX 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 Threadstarter

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Di 14.11.06 12:48 
user profile iconBenBE 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 56



BeitragVerfasst: Di 14.11.06 13:01 
user profile iconblackbirdXXX hat folgendes geschrieben:
Eventuell kennt ihr ein paar kurze Code Schnippsel bei denen Keywords zB abhängig vom Kontext sind


hier :-)

ausblenden Delphi-Quelltext
1:
property test: boolean read ftest write ftest;					

ohne Property davor sieht es so aus:
ausblenden Delphi-Quelltext
1:
test: boolean read ftest write ftest;					
blackbirdXXX Threadstarter

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Di 14.11.06 14:08 
user profile iconJochen W. hat folgendes geschrieben:
user profile iconblackbirdXXX hat folgendes geschrieben:
Eventuell kennt ihr ein paar kurze Code Schnippsel bei denen Keywords zB abhängig vom Kontext sind


hier :-)

ausblenden Delphi-Quelltext
1:
property test: boolean read ftest write ftest;					

ohne Property davor sieht es so aus:
ausblenden Delphi-Quelltext
1:
test: boolean read ftest write ftest;					


Danke für den Hinweis. Das funktioniert jetzt:
paste.pocoo.org/show/116/

_________________
Klein, schwarz und ärgert Techniker? Jumper!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 14.11.06 18:15 
user profile iconblackbirdXXX hat folgendes geschrieben:
Danke für den Hinweis. Das funktioniert jetzt:
paste.pocoo.org/show/116/

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 Threadstarter

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Di 14.11.06 18:34 
user profile iconBenBE hat folgendes geschrieben:
user profile iconblackbirdXXX hat folgendes geschrieben:
Danke für den Hinweis. Das funktioniert jetzt:
paste.pocoo.org/show/116/

In Zeile 43 ist die Behandlung von Hex-Zahlen falsch ... Bitte überprüfen.

Oki. Hab ich behoben.

user profile iconBenBE 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 :D

_________________
Klein, schwarz und ärgert Techniker? Jumper!