- Supports comments - more efficient as it scans the text block instead of repeatedly searching throught the whole block - type matching based on catalog (but need to add aliases manually) - added many keywords todo: - heap corruption bug - symbol stops at special char like parenthese or operator or something similar.
42 lines
889 B
C++
42 lines
889 B
C++
#pragma once
|
|
|
|
#include <QSyntaxHighlighter>
|
|
#include <QRegularExpression>
|
|
|
|
#include <vector>
|
|
|
|
class SqlHighlighter : public QSyntaxHighlighter
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
SqlHighlighter(QTextDocument *parent = 0);
|
|
|
|
protected:
|
|
void highlightBlock(const QString &text) override;
|
|
|
|
private:
|
|
struct HighlightingRule
|
|
{
|
|
QRegExp pattern;
|
|
QTextCharFormat format;
|
|
|
|
HighlightingRule(const QRegExp ®ex, const QTextCharFormat &f)
|
|
: pattern(regex), format(f)
|
|
{}
|
|
};
|
|
//QVector<HighlightingRule> highlightingRules;
|
|
std::vector<HighlightingRule> highlightingRules;
|
|
|
|
// QRegExp commentStartExpression;
|
|
// QRegExp commentEndExpression;
|
|
|
|
QTextCharFormat keywordFormat;
|
|
// QTextCharFormat classFormat;
|
|
// QTextCharFormat singleLineCommentFormat;
|
|
// QTextCharFormat multiLineCommentFormat;
|
|
// QTextCharFormat quotationFormat;
|
|
// QTextCharFormat functionFormat;
|
|
|
|
};
|
|
|