Es gibt viele Syntax-Highlighter fürs Web, aber nur recht wenige davon unterstützen Delphi; einige mehr immerhin Pascal an sich. EnlighterJS, der Highlighter, den ich hier als WordPress-Plugin benutze, kann (bisher) leider kein Delphi. Also habe ich mich daran gemacht, ihn um Delphi-Syntax-Highlighting zu erweitern.
Das Wichtigste für Syntax-Highlighting sind Keywords. Eine Liste der von Delphi 12 verwendeten Keywords findet man bei Embarcadero: Fundamental Syntactic Elements (Delphi). Dort gibt es zwei Kategorien: Reserved Words und Directives. EnlighterJS unterteilt Keywords einer Sprache allerdings in deutlich mehr Kategorien. Hier mein Versuch, die Delphi Schlüsselworte auf die EnlighterJS-Kategorien zu verteilen.
Vielleicht ist meine Einteilung ja irgendwann für jemand hilfreich, der vor dem gleichen „Problem“ steht.
Global Keywords (k0)
array automated class constructor destructor dispinterface exports file finalization function implementation initialization inline interface library object of packed procedure private program property protected public published record set unit uses
automated, private, protected, public und published gelten eigentlich nur innerhalb von Typdefinitionen als Schlüsselworte.
Control Structure Keywords (k1)
asm begin case do downto else end except finally for goto if raise repeat then to try until while with
Variable/Type Initialization Keyword (k2)
const resourcestring type threadvar var
const und var können innerhalb einer Funktionsdeklaration auch als Parameter-Qualifier verwendet werden.
Operators (k3)
and as div in is mod not or shl shr xor
Directives (k4)
absolute abstract assembler cdecl contains default delayed deprecated dispid dynamic experimental export external final forward helper implements index inline library local message name nodefault operator overload override package pascal platform read readonly reference register reintroduce requires safecall sealed static stdcall stored strict unsafe varargs virtual winapi write writeonly
index ist nur als Index Specifier in einer Property-Deklaration ein Schlüsselwort und name nur innerhalb einer Export-Anweisung.
Labels (k6)
label
Type Qualifiers/Modifier (k8)
const out var
Alle drei sind nur innerhalb eine Funktionsdeklaration als Parameter-Qualifier Schlüsselworte.
Special Keywords (k9), Boolean Expressions (b0), Null Expressions (e1)
false inherited nil self true
Typen
Bei den Typen habe ich mich dazu entschieden, sämtliche einfachen Datentypen und Stringtypen aus der Delphi-Doku zu übernehmen (Simple Data Types (Delphi) und String Types (Delphi)), auch wenn in der Delphi-IDE selbst nur string als Schlüsselwort hervorgehoben wird.