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_) )
54 (
stan::lang::expr_type, type_))
58 (
stan::lang::expr_type, type_) )
65 template <
typename Iterator>
66 term_grammar<Iterator>::term_grammar(variable_map& var_map,
67 std::stringstream& error_msgs,
68 expression_grammar<Iterator>& eg)
69 : term_grammar::base_type(term_r),
71 error_msgs_(error_msgs),
73 indexes_g(var_map, error_msgs, eg) {
74 using boost::spirit::qi::_1;
75 using boost::spirit::qi::_a;
76 using boost::spirit::qi::_b;
77 using boost::spirit::qi::char_;
78 using boost::spirit::qi::double_;
79 using boost::spirit::qi::eps;
80 using boost::spirit::qi::int_;
81 using boost::spirit::qi::hold;
82 using boost::spirit::qi::lexeme;
83 using boost::spirit::qi::lit;
84 using boost::spirit::qi::no_skip;
85 using boost::spirit::qi::string;
86 using boost::spirit::qi::_pass;
87 using boost::spirit::qi::_val;
88 using boost::spirit::qi::labels::_r1;
147 %= ( (string(
"integrate_ode_rk45") >> no_skip[!char_(
"a-zA-Z0-9_")])
148 | (
string(
"integrate_ode_bdf") >> no_skip[!char_(
"a-zA-Z0-9_")]) )
176 %= ( (string(
"integrate_ode_rk45") >> no_skip[!char_(
"a-zA-Z0-9_")])
177 | (
string(
"integrate_ode_bdf") >> no_skip[!char_(
"a-zA-Z0-9_")])
178 | (
string(
"integrate_ode") >> no_skip[!char_(
"a-zA-Z0-9_")])
218 >> !(lit(
'.') | lit(
'e') | lit(
'E'));
224 fun_r.name(
"function and argument expressions");
231 %= lexeme[char_(
"a-zA-Z")
232 >> *char_(
"a-zA-Z0-9_.")];
234 prob_args_r.name(
"probability function arguments");
236 %= (lit(
'(') >> lit(
')'))
246 args_r.name(
"function arguments");
248 %= (lit(
'(') >> lit(
')'))
251 dim_r.name(
"array dimension (integer expression)");
256 dims_r.name(
"array dimensions");
boost::spirit::qi::rule< Iterator, boost::spirit::qi::locals< variable, fun >, expression(var_origin), whitespace_grammar< Iterator > > factor_r
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
boost::spirit::qi::rule< Iterator, int_literal(), whitespace_grammar< Iterator > > int_literal_r
Template specification of functions in std for Stan.
boost::phoenix::function< validate_int_expression > validate_int_expression_f
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::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > dims_r
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::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