#pragma once #include #include #include #include // --------------------------------------------------------------------------- // SyntaxHighlighter – Regelbasierte Basis-Klasse. // Unterklassen befüllen m_rules und können highlightBlock() überschreiben // um mehrzeilige Konstrukte (Block-Kommentare, heredocs, …) zu behandeln. // --------------------------------------------------------------------------- class SyntaxHighlighter : public QSyntaxHighlighter { Q_OBJECT public: explicit SyntaxHighlighter(QTextDocument *parent = nullptr); protected: struct HighlightRule { QRegularExpression pattern; QTextCharFormat format; }; void highlightBlock(const QString &text) override; // Unterklassen befüllen dies im Konstruktor QVector m_rules; // Mehrzeilige Block-Kommentare (/* ... */) QRegularExpression m_commentStartExpression; QRegularExpression m_commentEndExpression; QTextCharFormat m_multiLineCommentFormat; bool m_hasMultiLineComment = false; }; // --------------------------------------------------------------------------- // CppHighlighter – C und C++ // --------------------------------------------------------------------------- class CppHighlighter : public SyntaxHighlighter { Q_OBJECT public: explicit CppHighlighter(QTextDocument *parent = nullptr); protected: void highlightBlock(const QString &text) override; }; // --------------------------------------------------------------------------- // CssHighlighter – CSS // --------------------------------------------------------------------------- class CssHighlighter : public SyntaxHighlighter { Q_OBJECT public: explicit CssHighlighter(QTextDocument *parent = nullptr); protected: void highlightBlock(const QString &text) override; }; // --------------------------------------------------------------------------- // HtmlHighlighter – HTML (mit eingebettetem CSS in