1 #ifndef STAN_LANG_GRAMMARS_TERM_GRAMMAR_DEF_HPP 2 #define STAN_LANG_GRAMMARS_TERM_GRAMMAR_DEF_HPP 10 #include <boost/spirit/include/qi.hpp> 11 #include <boost/spirit/include/phoenix_core.hpp> 18 (std::vector<std::vector<stan::lang::expression> >,
22 (
stan::lang::expression, expr_)
23 (
std::vector<
stan::lang::idx>, idxs_) )
26 (
std::
string, integration_function_name_)
27 (
std::
string, system_function_name_)
28 (
stan::lang::expression, y0_)
29 (
stan::lang::expression, t0_)
30 (
stan::lang::expression, ts_)
31 (
stan::lang::expression, theta_)
32 (
stan::lang::expression, x_)
33 (
stan::lang::expression, x_int_) )
36 (
std::
string, integration_function_name_)
37 (
std::
string, system_function_name_)
38 (
stan::lang::expression, y0_)
39 (
stan::lang::expression, t0_)
40 (
stan::lang::expression, ts_)
41 (
stan::lang::expression, theta_)
42 (
stan::lang::expression, x_)
43 (
stan::lang::expression, x_int_)
44 (
stan::lang::expression, rel_tol_)
45 (
stan::lang::expression, abs_tol_)
46 (
stan::lang::expression, max_num_steps_) )
50 (
std::vector<
stan::lang::expression>, args_) )
53 (
std::vector<
stan::lang::expression>, args_) )
57 (
stan::lang::expr_type, type_))
61 (
stan::lang::expr_type, type_) )
68 template <
typename Iterator>
69 term_grammar<Iterator>::term_grammar(variable_map& var_map,
70 std::stringstream& error_msgs,
71 expression_grammar<Iterator>& eg)
72 : term_grammar::base_type(term_r),
74 error_msgs_(error_msgs),
76 indexes_g(var_map, error_msgs, eg) {
77 using boost::spirit::qi::_1;
78 using boost::spirit::qi::_a;
79 using boost::spirit::qi::_b;
80 using boost::spirit::qi::_c;
81 using boost::spirit::qi::char_;
82 using boost::spirit::qi::double_;
83 using boost::spirit::qi::eps;
84 using boost::spirit::qi::int_;
85 using boost::spirit::qi::hold;
86 using boost::spirit::qi::lexeme;
87 using boost::spirit::qi::lit;
88 using boost::spirit::qi::no_skip;
89 using boost::spirit::qi::string;
90 using boost::spirit::qi::_pass;
91 using boost::spirit::qi::_val;
92 using boost::spirit::qi::labels::_r1;
151 %= ( (string(
"integrate_ode_rk45") >> no_skip[!char_(
"a-zA-Z0-9_")])
152 | (
string(
"integrate_ode_bdf") >> no_skip[!char_(
"a-zA-Z0-9_")]) )
180 %= ( (string(
"integrate_ode_rk45") >> no_skip[!char_(
"a-zA-Z0-9_")])
181 | (
string(
"integrate_ode_bdf") >> no_skip[!char_(
"a-zA-Z0-9_")])
182 | (
string(
"integrate_ode") >> no_skip[!char_(
"a-zA-Z0-9_")])
226 >> !(lit(
'.') | lit(
'e') | lit(
'E'));
232 fun_r.name(
"function and argument expressions");
241 %= lexeme[char_(
"a-zA-Z")
242 >> *char_(
"a-zA-Z0-9_.")];
246 %= (lit(
'(') >> lit(
')'))
258 args_r.name(
"function arguments");
260 %= (lit(
'(') >> lit(
')'))
264 dim_r.name(
"array dimension (integer expression)");
269 dims_r.name(
"array dimensions");
boost::phoenix::function< require_vbar > require_vbar_f
boost::phoenix::function< set_var_type > set_var_type_f
boost::phoenix::function< deprecated_integrate_ode > deprecated_integrate_ode_f
boost::phoenix::function< set_fun_type_named > set_fun_type_named_f
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > term_r
Probability, optimization and sampling library.
boost::spirit::qi::rule< Iterator, fun(var_origin), whitespace_grammar< Iterator > > fun_r
Structure for an indexed expression.
boost::spirit::qi::rule< Iterator, int_literal(), whitespace_grammar< Iterator > > int_literal_r
Template specification of functions in std for Stan.
std::stringstream & error_msgs_
boost::spirit::qi::rule< Iterator, integrate_ode_control(var_origin), whitespace_grammar< Iterator > > integrate_ode_control_r
boost::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > prob_args_r
boost::phoenix::function< exponentiation_expr > exponentiation_f
boost::spirit::qi::rule< Iterator, std::string(), whitespace_grammar< Iterator > > identifier_r
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > exponentiated_factor_r
boost::phoenix::function< transpose_expr > transpose_f
boost::phoenix::function< multiplication_expr > multiplication_f
boost::spirit::qi::rule< Iterator, expression(var_origin), boost::spirit::qi::locals< std::vector< std::vector< expression > >, std::vector< idx > >, whitespace_grammar< Iterator > > idx_factor_r
BOOST_FUSION_ADAPT_STRUCT(stan::lang::expr_type,(stan::lang::base_expr_type, base_type_)(size_t, num_dims_)) namespace stan
boost::spirit::qi::rule< Iterator, double_literal(), whitespace_grammar< Iterator > > double_literal_r
boost::phoenix::function< add_expression_dimss > add_expression_dimss_f
boost::phoenix::function< set_array_expr_type > set_array_expr_type_f
boost::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > dims_r
boost::spirit::qi::rule< Iterator, array_expr(var_origin), whitespace_grammar< Iterator > > array_expr_r
boost::phoenix::function< validate_int_expr_silent > validate_int_expr_silent_f
boost::phoenix::function< is_prob_fun > is_prob_fun_f
boost::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > args_r
boost::spirit::qi::rule< Iterator, boost::spirit::qi::locals< variable, fun, array_expr >, expression(var_origin), whitespace_grammar< Iterator > > factor_r
boost::phoenix::function< assign_lhs > assign_lhs_f
boost::phoenix::function< validate_integrate_ode > validate_integrate_ode_f
boost::spirit::qi::rule< Iterator, variable(), whitespace_grammar< Iterator > > variable_r
indexes_grammar< Iterator > indexes_g
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > dim_r
boost::phoenix::function< elt_multiplication_expr > elt_multiplication_f
expression_grammar< Iterator > & expression_g
boost::phoenix::function< logical_negate_expr > logical_negate_expr_f
boost::phoenix::function< add_idxs > add_idxs_f
boost::phoenix::function< division_expr > division_f
boost::phoenix::function< elt_division_expr > elt_division_f
boost::phoenix::function< negate_expr > negate_expr_f
boost::spirit::qi::rule< Iterator, integrate_ode(var_origin), whitespace_grammar< Iterator > > integrate_ode_r
boost::phoenix::function< validate_integrate_ode_control > validate_integrate_ode_control_f
boost::phoenix::function< left_division_expr > left_division_f
boost::phoenix::function< modulus_expr > modulus_f
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > negated_factor_r