26#ifndef ROUTER_SRC_ROUTING_GUIDELINES_SRC_RULES_PARSER_H_
27#define ROUTER_SRC_ROUTING_GUIDELINES_SRC_RULES_PARSER_H_
77 std::function<
void(
const std::string &)> tracer =
nullptr)
121 bool type_error(YYLTYPE *llocp,
const std::string &msg,
141 std::string::size_type
pos_{0};
144 std::function<void(
const std::string &)>
tracer_;
Conducting the whole scanning and parsing of routing guidelines rules.
Definition: rules_parser.h:74
bool session_rand_used() const
Definition: rules_parser.h:86
std::vector< rpn::Token > rpn_
Definition: rules_parser.h:133
bool emit_concat(const List_info *arguments, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:687
std::string buf_
Definition: rules_parser.h:140
Rules_parser(const Rules_parser &)=delete
bool emit_resolve(YYLTYPE *llocp, Exp_info *ret, rpn::Token::Type resolve_ver)
Definition: rules_parser.cc:660
bool extended_session_info_used() const
Definition: rules_parser.h:82
bool emit_in_op(const Exp_info &e, List_info *list, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:462
bool type_error(YYLTYPE *llocp, const std::string &msg, rpn::Token::Type expected, rpn::Token::Type got)
Definition: rules_parser.cc:803
void emit_null()
Definition: rules_parser.cc:434
bool emit_like_op(const Exp_info &str, const Exp_info &pattern, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:491
void emit(rpn::Token::Type type, const YYLTYPE &loc)
Definition: rules_parser.cc:429
bool extended_session_info_in_use_
Definition: rules_parser.h:136
Rules_parser(Rules_parser &&)=delete
rpn::Context * context_
Definition: rules_parser.h:135
bool emit_function(const rpn::Function_definition *function, List_info *arguments, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:558
Rules_parser & operator=(Rules_parser &&)=delete
bool emit_regexp(const List_info *arguments, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:701
void trace(const std::string &s)
Definition: rules_parser.h:124
void emit_string(std::string_view str, rpn::Token::Type type=rpn::Token::Type::STR)
Definition: rules_parser.cc:444
std::string error_
Definition: rules_parser.h:134
void is_extended_session_info(std::string_view name)
Definition: rules_parser.cc:717
void uses_session_rand(std::string_view name)
Definition: rules_parser.cc:724
std::function< void(const std::string &)> tracer_
Definition: rules_parser.h:144
bool check_role_types(const Exp_info &left, const Exp_info &right, YYLTYPE *llocp)
Definition: rules_parser.cc:752
void emit_log_operation(rpn::Token::Type type, double arg_split, const YYLTYPE &loc)
Definition: rules_parser.cc:449
static std::vector< std::string > get_keyword_names()
Definition: rules_parser.cc:816
std::string::size_type pos_
Definition: rules_parser.h:141
void emit_num(double val, rpn::Token::Type type=rpn::Token::Type::NUM)
Definition: rules_parser.cc:439
bool emit_reference(std::string_view name, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:728
bool session_rand_value_used_
Definition: rules_parser.h:137
Rules_parser & operator=(const Rules_parser &)=delete
rpn::Expression parse(std::string buf, rpn::Context *context)
Definition: rules_parser.cc:410
bool emit_network(Exp_info *ret)
Definition: rules_parser.cc:653
static std::vector< std::string > get_function_names()
Definition: rules_parser.cc:824
Rules_parser(std::function< void(const std::string &)> tracer=nullptr)
Definition: rules_parser.h:76
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1084
Definition: buf0block_hint.cc:30
void right(std::string *to_trim)
Definition: trim.h:41
void left(std::string *to_trim)
Definition: trim.h:35
Definition: routing_guidelines_datatypes.h:31
bool is_member_role(const std::string &s)
Definition: rules_parser.cc:45
const std::array< std::string_view, 4 > k_member_roles
Definition: rules_parser.h:40
const std::array< std::string_view, 2 > k_routing_strategies
Definition: rules_parser.h:46
const std::array< std::string_view, 3 > k_cluster_roles
Definition: rules_parser.h:43
bool is_cluster_role(const std::string &s)
Definition: rules_parser.cc:49
constexpr char kUndefinedRole[]
Keyword meaning that the member/cluster role is undefined.
Definition: routing_guidelines.h:56
std::vector< Exp_info > List_info
Definition: rules_parser.h:58
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2880
required string type
Definition: replication_group_member_actions.proto:34
int yyparse(routing_guidelines::Rules_parser *rp)
int yylex(union YYSTYPE *lvalp, YYLTYPE *llocp, routing_guidelines::Rules_parser *rp)
Definition: rules_parser.cc:244
void yyerror(YYLTYPE *llocp, routing_guidelines::Rules_parser *rp, const char *msg)
Definition: rules_parser.cc:397
Definition: rules_parser.h:53
rpn::Token::Type type
Definition: rules_parser.h:55
int toks
Definition: rules_parser.h:54
Definition: fts0pars.cc:155