1 /*  -*- c++ -*-
2     ksieve/parser.h
3 
4     This file is part of KSieve,
5     the KDE internet mail/usenet news message filtering library.
6     SPDX-FileCopyrightText: 2002-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 
15 namespace KSieve
16 {
17 class ScriptBuilder;
18 class Error;
19 
20 /** @short Parser for the Sieve grammar.
21     @author Marc Mutz <mutz@kde.org>
22 **/
23 class KSIEVE_EXPORT Parser
24 {
25 public:
26     Parser(const char *scursor, const char *const send, int options = 0);
27     ~Parser();
28 
29     void setScriptBuilder(ScriptBuilder *builder);
30     ScriptBuilder *scriptBuilder() const;
31 
32     bool parse();
33 
34     const Error &error() const;
35 
36     class Impl;
37 
38 private:
39     Impl *i = nullptr;
40 
41 private:
42     const Parser &operator=(const Parser &);
43     Parser(const Parser &);
44 };
45 } // namespace KSieve
46 
47