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.
- Bei UTF-8 Eingabe muss `--encoding=utf-8` gesetzt sein, sonst wird die Position der Marken nicht korrekt berechnet.
- Nur die 100 letzten Zustandswechsel jeder Eingabezeile werden für Tests ausgewertet.
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) */ }
- 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.
- Die Schlüsselwortgruppe kwd wird geprüft (Funktionen werden in der C-Syntax als kwd hervorgehoben)
- Das < zeigt auf Spalte 0 da der Kommentar in dieser Spalte beginnt. ws steht für Whitespace.
- Eine Eingabezeile kann mit mehreren Testkommentaren geprüft werden. Hier wird mit opt der Operator getestet.
- < 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.