![]() |
Vcsn
2.5.dev
Be Rational
|
Random expression generator. More...
#include <random-expression.hh>
Public Types | |
using | expressionset_t = ExpressionSet |
using | expression_t = typename expressionset_t::value_t |
using | weight_t = typename expressionset_t::weight_t |
using | weightset_t = typename expressionset_t::weightset_t |
Public Member Functions | |
random_expression_impl (const expressionset_t &es, const std::string ¶m, RandomGenerator &gen) | |
std::ostream & | print_random_expression (std::ostream &out, const format &fmt={}) const |
Print a random expression string (not parsed, so there might be some syntactic sugar such as <+ ). More... | |
std::string | random_expression_string () const |
A random expression string (not parsed, so there might be some syntactic sugar such as <+ ). More... | |
expression_t | random_expression () const |
A random expression (parsed, so there cannot be syntactic sugar such as <+ ). More... | |
Private Member Functions | |
void | parse_param_ (const std::string ¶m) |
std::string | make_param_ (unsigned length) const |
A string that specifies the current parameters. More... | |
void | print_weight_ (std::ostream &out, const format &fmt) const |
Print random weight. More... | |
void | print_label_ (std::ostream &out, const format &fmt) const |
Print label. More... | |
void | print_unary_exp_ (std::ostream &out, unsigned length, const std::string &op, const format &fmt) const |
Print expression with unary operator. More... | |
void | print_binary_exp_ (std::ostream &out, unsigned length, const std::string &op, const format &fmt) const |
Print binary expression with binary operator. More... | |
template<typename ExpSet = expressionset_t> | |
auto | print_tuple_exp_ (std::ostream &out, unsigned length, const std::string &op, const format &fmt) const -> std::enable_if_t< context_t_of< ExpSet >::is_lat, void > |
Print a tuple operator. More... | |
template<typename ExpSet = expressionset_t> | |
auto | print_tuple_exp_ (std::ostream &out, unsigned length, const std::string &op, const format &fmt) const -> std::enable_if_t<!context_t_of< ExpSet >::is_lat, void > |
Print a tuple operator. More... | |
std::ostream & | print_random_expression_ (std::ostream &out, unsigned length, const format &fmt) const |
Private Attributes | |
expressionset_t | es_ |
weightset_t | ws_ |
unsigned | length_ |
std::map< std::string, float > | operators_ |
For each operator, its probability. More... | |
const std::unordered_map< std::string, int > | arities_ |
Number of arguments of each operator. More... | |
std::vector< float > | proba_op_ |
Vector of weights associated with the operators, i.e., the probabilities to pick each operator. More... | |
RandomGenerator & | gen_ |
Random generator. More... | |
std::string | random_weight_params_ |
Random weights generator parameters. More... | |
random_weight< weightset_t, RandomGenerator > | random_weight_ {gen_, ws_} |
Random weights generator. More... | |
discrete_chooser< RandomGenerator > | choose_ {gen_} |
Random selection in containers. More... | |
Random expression generator.
ExpressionSet | the expression set type. |
RandomGenerator | the random number engine type. |
Definition at line 31 of file random-expression.hh.
using vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::expression_t = typename expressionset_t::value_t |
Definition at line 35 of file random-expression.hh.
using vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::expressionset_t = ExpressionSet |
Definition at line 34 of file random-expression.hh.
using vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::weight_t = typename expressionset_t::weight_t |
Definition at line 36 of file random-expression.hh.
using vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::weightset_t = typename expressionset_t::weightset_t |
Definition at line 37 of file random-expression.hh.
|
inline |
Definition at line 39 of file random-expression.hh.
References vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::gen_, and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::parse_param_().
|
inlineprivate |
A string that specifies the current parameters.
Definition at line 115 of file random-expression.hh.
References vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::operators_, vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::random_weight_params_, vcsn::res, and vcsn::rat::to_string().
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_tuple_exp_().
|
inlineprivate |
Definition at line 75 of file random-expression.hh.
References vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::arities_, vcsn::has(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::length_, vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::operators_, vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::proba_op_, vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::random_weight_, vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::random_weight_params_, vcsn::detail::transform(), and vcsn::detail::v.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::random_expression_impl().
|
inlineprivate |
Print binary expression with binary operator.
It is composed of the left and right side, and the operator. The number of symbols is randomly distribued between both side.
Definition at line 174 of file random-expression.hh.
References vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::gen_, vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_label_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_().
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_().
|
inlineprivate |
Print label.
Definition at line 136 of file random-expression.hh.
References vcsn::format::delimit(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::es_, vcsn::format::for_labels(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::gen_, and vcsn::random_label().
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_binary_exp_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_().
|
inline |
Print a random expression string (not parsed, so there might be some syntactic sugar such as <+
).
Definition at line 50 of file random-expression.hh.
References vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::length_, and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_().
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::random_expression_string().
|
inlineprivate |
Definition at line 234 of file random-expression.hh.
References vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::arities_, vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::choose_, vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::operators_, vcsn::detail::out(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_binary_exp_(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_label_(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_tuple_exp_(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_unary_exp_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::proba_op_.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_binary_exp_(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_unary_exp_().
|
inlineprivate |
Print a tuple operator.
GCC5 crashes on the equivalent code with static_if.
Definition at line 197 of file random-expression.hh.
References vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::es_, vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::make_param_(), and vcsn::random_expression_string().
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_().
|
inlineprivate |
Print a tuple operator.
Definition at line 223 of file random-expression.hh.
References vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::es_.
|
inlineprivate |
Print expression with unary operator.
Definition at line 144 of file random-expression.hh.
References vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_weight_().
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_().
|
inlineprivate |
Print random weight.
Definition at line 127 of file random-expression.hh.
References vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::es_, vcsn::format::for_weights(), vcsn::detail::out(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::random_weight_.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_unary_exp_().
|
inline |
A random expression (parsed, so there cannot be syntactic sugar such as <+
).
Definition at line 67 of file random-expression.hh.
References vcsn::conv(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::es_, and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::random_expression_string().
Referenced by vcsn::dyn::random_expression().
|
inline |
A random expression string (not parsed, so there might be some syntactic sugar such as <+
).
Definition at line 58 of file random-expression.hh.
References vcsn::detail::out(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression().
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::random_expression().
|
private |
Number of arguments of each operator.
Definition at line 281 of file random-expression.hh.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::parse_param_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_().
|
private |
Random selection in containers.
Definition at line 317 of file random-expression.hh.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_().
|
private |
Definition at line 274 of file random-expression.hh.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_label_(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_tuple_exp_(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_weight_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::random_expression().
|
private |
Random generator.
Definition at line 311 of file random-expression.hh.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_binary_exp_(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_label_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::random_expression_impl().
|
private |
|
private |
For each operator, its probability.
Definition at line 278 of file random-expression.hh.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::make_param_(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::parse_param_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_().
|
private |
Vector of weights associated with the operators, i.e., the probabilities to pick each operator.
Definition at line 309 of file random-expression.hh.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::parse_param_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_random_expression_().
|
private |
Random weights generator.
Definition at line 315 of file random-expression.hh.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::parse_param_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::print_weight_().
|
private |
Random weights generator parameters.
Definition at line 313 of file random-expression.hh.
Referenced by vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::make_param_(), and vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::parse_param_().
|
private |
Definition at line 275 of file random-expression.hh.