Syntax-Highlighting für Delphi/C++Builder



  • Wie groß wäre der Aufwand, das Syntax-Highlighting derart zu erweitern, daß die C++Builder-Schlüsselwörter auch hervorgehoben würden? Da die Schlüsselwörter alle mit "__" präfiziert sind, dürfte es keine Highlighting-Konflikte mit normalem C++-Code geben, also wäre der einfachste Weg wohl, das C++-Highlighting zu erweitern. Ansonsten könnte man auch ein [ bcb ]-Tag einführen.

    Die zusätzlichen Schlüsselwörter sind:

    __asm
    __automated
    __cdecl
    __classid
    __classmethod
    __closure
    __declspec
    __delphirtti
    __dispid
    __emit__
    __except
    __export
    __fastcall
    __finally
    __import
    __inline
    __int8
    __int16
    __int32
    __int64
    __msfastcall
    __msreturn
    __pascal
    __property
    __published
    __rtti
    __stdcall
    __thread
    __try
    __uuidof
    

    Außerdem kommt es im C++Builder-Unterforum öfters vor, daß man Delphi-Code zitieren möchte. Wäre es möglich, dafür ein zusätzliches Tag einzuführen, vielleicht [ delphi ] oder [ pascal ]?
    Kommentare sind dort mit { und } bzw. (* und ) abgegrenzt, außerdem sind Zeilenkommentare wie in C++ mit // möglich. Compiler-Direktiven verwenden {$ und } oder ($ und *).

    // Kommentar
    { Mehrzeilen-
      kommentar }
    (* Noch ein
       Mehrzeilenkommentar *)
    {$MINENUMSIZE 4} // Compiler-Direktive
    (*$HPPEMIT END '#include <something.hpp>'*) // Compiler-Direktive
    
      // Reservierte Wörter:
    and
    end
    interface
    record
    var
    array
    except
    is
    repeat
    var  
    as
    exports
    label
    resourcestring    
    with        
    asm
    file
    library
    set    
    xor
    begin
    finalization  
    mod
    set
    xor
    case
    finally
    nil
    shr
    class
    for
    not
    string
    const
    function
    object
    then
    constructor
    goto
    of
    threadvar
    destructor
    if
    or
    to
    dispinterface     
    implementation    
    packed
    try
    div
    in
    procedure    
    type
    do
    inherited
    program      
    unit
    downto
    initialization  
    property
    until
    else
    inline
    raise
    uses
    
      // Kontextsensitive Wörter (am besten auch einfach mit highlighten):
    absolute
    export
    public
    stdcall
    abstract
    external
    near
    published
    strict
    assembler
    far
    nodefault
    read
    stored
    automated
    final
    operator
    readonly
    unsafe
    cdecl
    forward
    out
    reference
    varargs
    contains
    helper
    overload
    register
    virtual
    default
    implements
    override
    reintroduce
    winapi
    delayed
    index
    package
    requires
    write
    deprecated
    inline
    pascal
    resident
    writeonly
    dispid
    library
    platform
    safecall
    dynamic
    local
    private
    sealed
    experimental
    message
    protected
    static
    


  • Das erstere dauert ca. 10 Minuten, das mit Delphi 1-2 Stunden.

    Ich habe allerdings mein Entwicklungszeugs zur Zeit nicht dabei... ich habe schon wieder so eine lange Todo-Liste mit Kleinigkeiten...



  • Danke für die Einschätzung. Es eilt ja nicht 😉 Ich wollte nur wissen, ob es grundsätzlich möglich ist, und falls ja, mit welchem Aufwand verbunden.

    Wenn man dir die Sache irgendwie vereinfachen kann, gib Bescheid.



  • Builder geht schon.



  • Sehr schön, danke.


  • Administrator

    Habe gerade zufällig diesen Thread gefunden und kann es mir nicht verkneifen...

    Done! 🙂

    // Kommentar 
    { Mehrzeilen- 
      kommentar } 
    (* Noch ein 
       Mehrzeilenkommentar *) 
    {$MINENUMSIZE 4} // Compiler-Direktive 
    (*$HPPEMIT END '#include <something.hpp>'*) // Compiler-Direktive 
    
      // Reservierte Wörter: 
    and 
    end 
    interface 
    record 
    var 
    array 
    except 
    is 
    repeat 
    var   
    as 
    exports 
    label 
    resourcestring     
    with         
    asm 
    file 
    library 
    set     
    xor 
    begin 
    finalization   
    mod 
    set 
    xor 
    case 
    finally 
    nil 
    shr 
    class 
    for 
    not 
    string 
    const 
    function 
    object 
    then 
    constructor 
    goto 
    of 
    threadvar 
    destructor 
    if 
    or 
    to 
    dispinterface     
    implementation     
    packed 
    try 
    div 
    in 
    procedure     
    type 
    do 
    inherited 
    program       
    unit 
    downto 
    initialization   
    property 
    until 
    else 
    inline 
    raise 
    uses 
    
      // Kontextsensitive Wörter (am besten auch einfach mit highlighten): 
    absolute 
    export 
    public 
    stdcall 
    abstract 
    external 
    near 
    published 
    strict 
    assembler 
    far 
    nodefault 
    read 
    stored 
    automated 
    final 
    operator 
    readonly 
    unsafe 
    cdecl 
    forward 
    out 
    reference 
    varargs 
    contains 
    helper 
    overload 
    register 
    virtual 
    default 
    implements 
    override 
    reintroduce 
    winapi 
    delayed 
    index 
    package 
    requires 
    write 
    deprecated 
    inline 
    pascal 
    resident 
    writeonly 
    dispid 
    library 
    platform 
    safecall 
    dynamic 
    local 
    private 
    sealed 
    experimental 
    message 
    protected 
    static
    

    Mit nur etwas mehr als einem Jahr Verspätung 😃

    Grüssli



  • Dravere schrieb:

    Done! 🙂
    [...]
    Mit nur etwas mehr als einem Jahr Verspätung 😃

    Super! Jetzt hoffen wir mal, daß Delphi und C++Builder noch eine Weile leben, sonst war's für die Katz 🤡

    Im Ernst, umsonst wäre es natürlich auch dann nicht, weil so ein Produkt auch noch lange nach dem Ableben benutzt wird, wie man an den zahlreichen BCB5- oder BCB6-Threads sieht.


Anmelden zum Antworten