text processing utilities

Highlight Dokumentation

Syntax-Tests

Eingabedateien, deren Namen mit syntax_test_ beginnen, können innerhalb von Kommentaren Spalten- und Zustandsmarken enthalten, um die Syntaxerkennung von highlight in der vorherigen Ausgabezeile zu testen. Schlägt ein solcher Test fehl, wird eine Fehlermeldung ausgegeben und Highlight mit Fehlerstatus beendet.

Testfall-Definition

Ein Testfall besteht aus zwei Angaben: Zeile und erwarteter Status.
Die Zeile wird mit ^ ("hier") or < ("Beginn des Kommentars / erste Spalte") angegeben.
Der Status wird mit einem der folgenden Bezeichner beschrieben:

std: standard / no recognition
str: string
num: number
slc: single line comment
com: multiline comment
esc: escape character
ppc: preprocessor
pps: preprocessor string
opt: operator
ipl: interpolation
ws:  whitespace
kwX: keyword group X (X: a..z)

Diese Bezeichner entsprechen den CSS-Klassennamen der HTML Ausgabe.

Add a leading `~` to an indicator to match any other state as success.

Beispiel

#include <iostream>
#include "myheader"
// ^ ppc ^^^^^^^^^^ pps       1)  

int main() {
//  ^^^^ kwd                  2)  
/* comment comment comment  
 * <  com ^ ws     ^ com      3)
 */

    int var =   0x1234;
/*      ^^^ std ^    ^ num */
    //< kwb ^ opt             4)
    std::cout << "whatever: " << var <<   "\n";
//               ^          ^ str    ^^opt ^^ esc
    return 0;
    /*  <   kwa               5) */
}

  1. Diese Zeile prüft, ob in der vorherigen Zeile eine Compiler-Direktive und ein String vorhanden sind. Die ^ Markierung deutet auf die Position der erwarteten Elemente.
  2. Die Schlüsselwortgruppe kwd wird geprüft (Funktionen werden in der C-Syntax als kwd hervorgehoben)
  3. Das < zeigt auf Spalte 0 da der Kommentar in dieser Spalte beginnt. ws steht für Whitespace.
  4. Eine Eingabezeile kann mit mehreren Testkommentaren geprüft werden. Hier wird mit opt der Operator getestet.
  5. < zeigt auf Spalte 4, den Beginn des Kommentars.

Beim Verarbeiten dieser Datei wird keine zusätzliche Ausgabe erzeugt, weil die Tests keine Fehler ergeben. Der Fehlerstatus ist 0.

Wenn man kwa in 5) in kwb (oder einen anderen Wert) ändert, wird highlight einen Fehler ausgeben und mit Status 1 beendet:

highlight: Could not validate file:
syntax_test_1.c line 17, column 4: got kwa instead of kwb

Die GUI von highlight zeigt diese Fehlermeldungen im Fehlerausgabedialog an.

Tupel7