18 #ifndef NURIA_MINILEXER_HPP
19 #define NURIA_MINILEXER_HPP
21 #include "essentials.hpp"
26 #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
27 #include <QRegularExpression>
31 class MiniLexerPrivate;
39 inline LexerRule (
const QString &name = QString ()) : m_name (name) { }
40 inline LexerRule (
const char *name) : m_name (QLatin1String (name)) { }
41 inline const QString &name ()
const {
return this->m_name; }
42 inline void setName (
const QString &name) { this->m_name = name; }
53 inline LexerDefinition (
const QString &name = QString ()) : m_name (name) { }
54 inline LexerDefinition (
const char *name) : m_name (QLatin1String (name)) { }
55 inline const QString &name ()
const {
return this->m_name; }
56 inline void setName (
const QString &name) { this->m_name = name; }
136 typedef QPair< int, QString > TokenValue;
137 typedef QList< TokenValue > TokenValueList;
139 explicit MiniLexer (QObject *parent = 0);
146 Qt::CaseSensitivity matchSensitivity ()
const;
153 void setMatchSensitivity (Qt::CaseSensitivity value);
163 TokenValueList tokenValueList ()
const;
170 TokenValue tokenValue (
int at)
const;
175 const QString &value (
int at)
const;
180 int token (
int at)
const;
194 void addRule (
const QString &name,
const QRegExp ®Exp,
int token);
197 void addRule (
const QString &name,
const QString &
string,
int token);
199 #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
201 void addRule (
const QString &name,
const QRegularExpression ®Exp,
int token);
222 void addDefinition (
const QString &name,
const QVariantList &def);
229 bool lex (
const QString &data);
235 QString lastError ()
const;
241 int errorPosition ()
const;
247 bool hasStartDefinition ()
const;
252 bool hasRule (
const QString &name)
const;
257 bool hasDefinition (
const QString &name)
const;
295 static MiniLexer *createInstanceFromDefinition (
const QString &definition, QString &error);
305 void chopValueList (
int lastValidLength);
310 bool lexDefinition (
const QVariantList &def,
const QString &data,
int &pos);
313 MiniLexerPrivate *d_ptr;
320 Q_DECLARE_METATYPE(Nuria::LexerDefinition)
322 #endif // NURIA_MINILEXER_HPP
A simple lexer. You can use this class if you want to parse some data based on regular expressions...
Definition: minilexer.hpp:133
Definition: minilexer.hpp:37
Definition: minilexer.hpp:51