AW: SynHighlighter erweitern
12. Sep 2012, 16:42
Hallo,
habe mir vor einiger Zeit einen eigenen Highlighter gebaut für Pascalscript von RemObjects mit Anpassungen für mein Programm. Als Basis habe ich den Highlighter für Pascal/Delphi genommen. Da mir das manuelle Anpassen zu viel Arbeit wurde, habe ich mir ein Pascalscript geschrieben, das aus einer Textdatei Codefragmente erstellt, die per {$I dateiname}
in den Quelltext des Highlighters eingebunden werden. Damit kann ich mir die veränderlichen Fragmente eines Highlighter generieren.
Da nicht jeder Pascalscript zur Verfügung hat, habe ich das Pascalscript nach Delphi übertragen und hier rangehängt.
Das Programm benötigt als ersten Parameter den Namen einer Datei, die die zu verwendenen Zeichenfolgen (Schlüsselwörter...) und den Typen für TtkTokenKind
enthält, je Zeile: Zeichenfolge|TtkTokenKind
. Als zweiten Parameter erwartet es entweder die Zeichenfolge ROPS oder PHP, da es hier Unterschiede beim Aufbau der Hashtable gibt. Der Dateiname muss in der Form SynRopsSyn.Functionen.txt
aufgebaut sein, da hieraus auch Teile des Quelltextes generiert werden.
Habe für vier Highlighter entsprechende Dateien beigefügt, die zum Testen und Weiterentwickeln geeignet sein sollten. Das Fragment mit einem Namen in der Form SynHighlighterROPS.PrivateFunc.inc
ist im Abschnitt private
des Highlighters hinter function KeyComp(const aKey: String): Boolean;
einzufügen, das Fragment mit einem Namen in der Form SynHighlighterROPS.IdentFuncTable.inc
muss in die procedure TSynROPSSyn.InitIdent;
eingefügt werden und das Fragment mit einem Namen in der Form SynHighlighterROPS.FuncSource.inc
wird im Implementierungsteil hinter function TSynROPSSyn.KeyComp(const aKey: String): Boolean;
eingefügt und ersetzt den gesamten Quelltext bis vor function TSynROPSSyn.AltFunc: TtkTokenKind;
.
Für PHP sind generierte Fragmente beigefügt.
Eventuell kann ja jemand, für die Anpassung vorhandener Highlighter, damit was anfangen.
Geändert von nahpets (21. Nov 2017 um 17:41 Uhr)
|