Libksieve

lexer.h
1/* -*- c++ -*-
2 ksieve/lexer.h
3
4 This file is part of KSieve,
5 the KDE internet mail/usenet news message filtering library.
6 SPDX-FileCopyrightText: 2003 Marc Mutz <mutz@kde.org>
7
8 SPDX-License-Identifier: GPL-2.0-only
9*/
10
11#pragma once
12
13#include "ksieve_export.h"
14
15class QString;
16
17namespace KSieve
18{
19class Error;
20
21class KSIEVE_EXPORT Lexer
22{
23public:
24 enum Options { IncludeComments = 0, IgnoreComments = 1, IncludeLineFeeds = 0, IgnoreLineFeeds = 2 };
25
26 Lexer(const char *scursor, const char *send, int options = 0);
27 ~Lexer();
28
29 /** Return whether comments are returned by @ref
30 nextToken. Default is to not ignore comments. Ignoring them
31 can speed up script parsing a bit, and can be used when the
32 internal representation of the script won't be serialized into
33 string form again (or if you simply want to delete all
34 comments)
35 **/
36 bool ignoreComments() const;
37
38 /** Return whether line feeds are returned by @ref
39 nextToken. Default is to not ignore line feeds. Ignoring them
40 can speed up script parsing a bit, and can be used when the
41 internal representation of the script won't be serialized into
42 string form again.
43 **/
44 bool ignoreLineFeeds() const;
45
46 const Error &error() const;
47
48 bool atEnd() const;
49 int column() const;
50 int line() const;
51
52 enum Token {
53 None = 0,
54 Number, // 1, 100, 1M, 10k, 1G, 2g, 3m
55 Identifier, // atom
56 Tag, // :tag
57 Special, // {} [] () ,;
58 QuotedString, // "foo\"bar" -> foo"bar
59 MultiLineString, // text: \nfoo\n. -> foo
60 HashComment, // # foo
61 BracketComment, // /* foo */
62 LineFeeds // the number of line feeds encountered
63 };
64
65 /** Parse the next token and return it's type. @p result will contain
66 the value of the token. */
67 Token nextToken(QString &result);
68
69 void save();
70 void restore();
71
72 class Impl;
73
74private:
75 Impl *i = nullptr;
76
77private:
78 const Lexer &operator=(const Lexer &);
79 Lexer(const Lexer &);
80};
81} // namespace KSieve
void error(QWidget *parent, const QString &text, const QString &title, const KGuiItem &buttonOk, Options options=Notify)
const QList< QKeySequence > & save()
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri May 3 2024 11:48:06 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.