CSS-Styles überschreiben?



  • Happosai schrieb:

    In meiner Parser-Funktion sind bisher insgesamt 3 Schleifen drin... 2x Strings und 1x Keywords.

    Mein SH arbeitet allgemeiner, es kennt weder Strings noch Kommentare noch Keywords. Es übernimmt nur die regulären Ausdrücke aus der Konfigurationsdatei. Denn nicht jede Sprache hat Keywords. Oder Strings.

    Berücksichtigt dein Parser maskierte Zeilenumbrüche und maskierte Zeichen?

    // Kommen-\
       tar
    "\""
    /* \*/ "Mehrzeiliger Kommentar ist nicht maskierbar*/"
    

    Das gibt es auch nicht in jeder Sprache. Steht sowas auch in der LST-Datei?



  • Kannste mir mal helfen und nen Auszug aus deiner Konf.-Datei posten/PN? Vielleicht komm ich ja damit selbst drauf, wie ich meinen Code verbessern kann... 😉

    Bye.



  • <language=cpp "C/C++ Code">
    <!--
    Im php-Code steht z.B.:
    preg_match($color[1], $code, $matches);
    
    Zu dem Format dieser Datei:
    Die erste Zahl nach <color ist die Farbnummer.
    0 = Kommentare
    1 = Keywords
    2 = Strings
    3 = Präprozessor o.ä.
    usw..
    Das sind alles nur Vorschläge, dem php-Code ist egal, was es welcher Farbnummer zuordnet! 
    
    Die zweite (die 1. alleinstehende Zahl) gibt das Element von $matches an, das eingefärbt werden muss.
    
    Als Beispiel hier die Definitionen für Kommentare und Keywords.
    -->
    <color0 0>#(//((\n)|([^\n]))*)|(/\*(.*?)\*/)#s</color0>
    <color1 1 "cpp_keywords.txt">#(?:(?:[^a-zA-Z_])|(?:^))("cpp_keywords.txt")(?:(?:[^a-zA-Z_])|(?:$))#</color1>
    
    </language>
    

    Der String "cpp_keywords.txt" im regulären Ausdruck für Keywords wird durch die ganze Liste von Keywords ersetzt, die in der Datei cpp_keywords.txt steht.
    Das sieht dann so aus:

    #(?:(?:[^a-zA-Z_])|(?:^))(auto|bad_cast|bad_typeid|bool|break|usw...)(?:(?:[^a-zA-Z_])|(?:$))#
    

    Das Format ist sicher nicht ideal. Ich habe das nicht wirklich geplant, das ist eher beim coden gewachsen. 🙂
    Vielleicht wäre es auch besser, die Definitionen direkt in das Skript zu schreiben. Dann würde man sich den Overhead der externen Dateien sparen.


Anmelden zum Antworten