Delphi Syntax Highlighting (Keywords)


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.