24#ifndef ROUTER_SRC_ROUTING_GUIDELINES_SRC_RULES_PARSER_H_
25#define ROUTER_SRC_ROUTING_GUIDELINES_SRC_RULES_PARSER_H_
75 std::function<
void(
const std::string &)> tracer =
nullptr)
119 bool type_error(YYLTYPE *llocp,
const std::string &msg,
138 const std::string *
buf_{
nullptr};
139 std::string::size_type
pos_{0};
142 std::function<void(
const std::string &)>
tracer_;
Conducting the whole scanning and parsing of routing guidelines rules.
Definition: rules_parser.h:72
rpn::Expression parse(const std::string &buf, rpn::Context *context)
Definition: rules_parser.cc:366
bool session_rand_used() const
Definition: rules_parser.h:84
std::vector< rpn::Token > rpn_
Definition: rules_parser.h:131
bool emit_concat(const List_info *arguments, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:644
Rules_parser(const Rules_parser &)=delete
bool emit_resolve(YYLTYPE *llocp, Exp_info *ret, rpn::Token::Type resolve_ver)
Definition: rules_parser.cc:617
bool extended_session_info_used() const
Definition: rules_parser.h:80
bool emit_in_op(const Exp_info &e, List_info *list, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:419
bool type_error(YYLTYPE *llocp, const std::string &msg, rpn::Token::Type expected, rpn::Token::Type got)
Definition: rules_parser.cc:755
void emit_null()
Definition: rules_parser.cc:391
bool emit_like_op(const Exp_info &str, const Exp_info &pattern, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:448
void emit(rpn::Token::Type type, const YYLTYPE &loc)
Definition: rules_parser.cc:386
bool extended_session_info_in_use_
Definition: rules_parser.h:134
Rules_parser(Rules_parser &&)=delete
rpn::Context * context_
Definition: rules_parser.h:133
bool emit_function(const rpn::Function_definition *function, List_info *arguments, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:515
Rules_parser & operator=(Rules_parser &&)=delete
bool emit_regexp(const List_info *arguments, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:658
void trace(const std::string &s)
Definition: rules_parser.h:122
const std::string * buf_
Definition: rules_parser.h:138
void emit_string(std::string_view str, rpn::Token::Type type=rpn::Token::Type::STR)
Definition: rules_parser.cc:401
std::string error_
Definition: rules_parser.h:132
void is_extended_session_info(std::string_view name)
Definition: rules_parser.cc:674
void uses_session_rand(std::string_view name)
Definition: rules_parser.cc:681
std::function< void(const std::string &)> tracer_
Definition: rules_parser.h:142
bool check_role_types(const Exp_info &left, const Exp_info &right, YYLTYPE *llocp)
Definition: rules_parser.cc:704
void emit_log_operation(rpn::Token::Type type, double arg_split, const YYLTYPE &loc)
Definition: rules_parser.cc:406
static std::vector< std::string > get_keyword_names()
Definition: rules_parser.cc:768
std::string::size_type pos_
Definition: rules_parser.h:139
void emit_num(double val, rpn::Token::Type type=rpn::Token::Type::NUM)
Definition: rules_parser.cc:396
bool emit_reference(std::string_view name, YYLTYPE *llocp, Exp_info *ret)
Definition: rules_parser.cc:685
bool session_rand_value_used_
Definition: rules_parser.h:135
Rules_parser & operator=(const Rules_parser &)=delete
bool emit_network(Exp_info *ret)
Definition: rules_parser.cc:610
static std::vector< std::string > get_function_names()
Definition: rules_parser.cc:776
Rules_parser(std::function< void(const std::string &)> tracer=nullptr)
Definition: rules_parser.h:74
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1117
Definition: buf0block_hint.cc:30
Definition: routing_guidelines_datatypes.h:30
bool is_member_role(const std::string &s)
Definition: rules_parser.cc:43
const std::array< std::string_view, 4 > k_member_roles
Definition: rules_parser.h:38
const std::array< std::string_view, 2 > k_routing_strategies
Definition: rules_parser.h:44
const std::array< std::string_view, 3 > k_cluster_roles
Definition: rules_parser.h:41
bool is_cluster_role(const std::string &s)
Definition: rules_parser.cc:47
constexpr char kUndefinedRole[]
Keyword meaning that the member/cluster role is undefined.
Definition: routing_guidelines.h:54
std::vector< Exp_info > List_info
Definition: rules_parser.h:56
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:232
void yyerror(YYLTYPE *llocp, routing_guidelines::Rules_parser *rp, const char *msg)
Definition: rules_parser.cc:353
Definition: rules_parser.h:51
rpn::Token::Type type
Definition: rules_parser.h:53
int toks
Definition: rules_parser.h:52
Definition: fts0pars.cc:155