1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
#ifndef _ConditionParser_h_
#define _ConditionParser_h_
#include "Lexer.h"
#include "ParseImpl.h"
#include "ValueRefParser.h"
#include "EnumParser.h"
#include "MovableEnvelope.h"
#include <boost/spirit/include/qi.hpp>
namespace Condition {
enum class SortingMethod : uint8_t;
enum class ComparisonType : int8_t;
enum class ContentType : uint8_t;
struct Condition;
}
namespace parse { namespace detail {
using condition_payload = MovableEnvelope<Condition::Condition>;
using condition_signature = condition_payload ();
using condition_parser_rule = rule<condition_signature>;
using condition_parser_grammar = grammar<condition_signature>;
}}
namespace parse {
struct conditions_parser_grammar : public detail::condition_parser_grammar {
conditions_parser_grammar(const parse::lexer& tok, detail::Labeller& label);
~conditions_parser_grammar();
detail::condition_parser_rule start;
private:
struct Impl;
std::unique_ptr<Impl> m_impl;
};
}
#endif
|