1 #ifndef STAN_LANG_GRAMMARS_VAR_DECLS_GRAMMAR_DEF_HPP
2 #define STAN_LANG_GRAMMARS_VAR_DECLS_GRAMMAR_DEF_HPP
8 #include <boost/spirit/include/qi.hpp>
9 #include <boost/spirit/include/phoenix_core.hpp>
17 (std::vector<stan::lang::expression>, dims_) )
20 (
stan::lang::range, range_)
22 (
std::vector<
stan::lang::expression>, dims_) )
25 (
stan::lang::range, range_)
26 (
stan::lang::expression, M_)
28 (
std::vector<
stan::lang::expression>, dims_) )
31 (
stan::lang::range, range_)
32 (
stan::lang::expression, N_)
34 (
std::vector<
stan::lang::expression>, dims_) )
37 (
stan::lang::range, range_)
38 (
stan::lang::expression, M_)
39 (
stan::lang::expression, N_)
41 (
std::vector<
stan::lang::expression>, dims_) )
44 (
stan::lang::expression, K_)
46 (
std::vector<
stan::lang::expression>, dims_) )
49 (
stan::lang::expression, K_)
51 (
std::vector<
stan::lang::expression>, dims_) )
54 (
stan::lang::expression, K_)
56 (
std::vector<
stan::lang::expression>, dims_) )
59 (
stan::lang::expression, K_)
61 (
std::vector<
stan::lang::expression>, dims_) )
64 (
stan::lang::expression, M_)
65 (
stan::lang::expression, N_)
67 (
std::vector<
stan::lang::expression>, dims_) )
70 (
stan::lang::expression, K_)
72 (
std::vector<
stan::lang::expression>, dims_) )
75 (
stan::lang::expression, K_)
77 (
std::vector<
stan::lang::expression>, dims_) )
80 (
stan::lang::expression, K_)
82 (
std::vector<
stan::lang::expression>, dims_) )
88 template <
typename Iterator>
89 var_decls_grammar<Iterator>::var_decls_grammar(variable_map& var_map,
90 std::stringstream& error_msgs)
91 : var_decls_grammar::base_type(var_decls_r),
93 error_msgs_(error_msgs),
94 expression_g(var_map, error_msgs),
95 expression07_g(var_map, error_msgs, expression_g) {
96 using boost::spirit::qi::_1;
97 using boost::spirit::qi::_3;
98 using boost::spirit::qi::char_;
99 using boost::spirit::qi::eps;
100 using boost::spirit::qi::lexeme;
101 using boost::spirit::qi::lit;
102 using boost::spirit::qi::no_skip;
103 using boost::spirit::qi::_pass;
104 using boost::spirit::qi::_val;
105 using boost::spirit::qi::labels::_a;
106 using boost::spirit::qi::labels::_r1;
107 using boost::spirit::qi::labels::_r2;
120 boost::phoenix::ref(error_msgs))]
167 >> no_skip[!char_(
"a-zA-Z0-9_")])
175 >> no_skip[!char_(
"a-zA-Z0-9_")])
183 >> no_skip[!char_(
"a-zA-Z0-9_")])
194 %= (lit(
"row_vector")
195 >> no_skip[!char_(
"a-zA-Z0-9_")])
207 >> no_skip[!char_(
"a-zA-Z0-9_")])
221 %= (lit(
"unit_vector")
222 >> no_skip[!char_(
"a-zA-Z0-9_")])
233 >> no_skip[!char_(
"a-zA-Z0-9_")])
244 >> no_skip[!char_(
"a-zA-Z0-9_")])
254 %= (lit(
"positive_ordered")
255 >> no_skip[!char_(
"a-zA-Z0-9_")])
264 " positive-def declaration");
266 %= (lit(
"cholesky_factor_cov")
267 >> no_skip[!char_(
"a-zA-Z0-9_")])
282 " correlation matrix declaration");
284 %= (lit(
"cholesky_factor_corr")
285 >> no_skip[!char_(
"a-zA-Z0-9_")])
295 %= (lit(
"cov_matrix")
296 >> no_skip[!char_(
"a-zA-Z0-9_")])
306 %= (lit(
"corr_matrix")
307 >> no_skip[!char_(
"a-zA-Z0-9_")])
315 opt_dims_r.name(
"array dimensions (optional)");
319 dims_r.name(
"array dimensions");
385 %= lexeme[char_(
"a-zA-Z")
386 >> *char_(
"a-zA-Z0-9_.")];
boost::spirit::qi::rule< Iterator, row_vector_var_decl(var_origin), whitespace_grammar< Iterator > > row_vector_decl_r
boost::phoenix::function< set_int_range_upper > set_int_range_upper_f
boost::phoenix::function< set_int_range_lower > set_int_range_lower_f
boost::spirit::qi::rule< Iterator, std::string(), whitespace_grammar< Iterator > > identifier_name_r
boost::spirit::qi::rule< Iterator, ordered_var_decl(var_origin), whitespace_grammar< Iterator > > ordered_decl_r
Probability, optimization and sampling library.
boost::spirit::qi::rule< Iterator, positive_ordered_var_decl(var_origin), whitespace_grammar< Iterator > > positive_ordered_decl_r
expression_grammar< Iterator > expression_g
boost::spirit::qi::rule< Iterator, matrix_var_decl(var_origin), whitespace_grammar< Iterator > > matrix_decl_r
boost::spirit::qi::rule< Iterator, unit_vector_var_decl(var_origin), whitespace_grammar< Iterator > > unit_vector_decl_r
boost::spirit::qi::rule< Iterator, cholesky_corr_var_decl(var_origin), whitespace_grammar< Iterator > > cholesky_corr_decl_r
Template specification of functions in std for Stan.
boost::phoenix::function< empty_range > empty_range_f
boost::spirit::qi::rule< Iterator, std::string(), whitespace_grammar< Iterator > > identifier_r
boost::phoenix::function< add_var > add_var_f
boost::spirit::qi::rule< Iterator, cholesky_factor_var_decl(var_origin), whitespace_grammar< Iterator > > cholesky_factor_decl_r
boost::phoenix::function< set_double_range_lower > set_double_range_lower_f
boost::spirit::qi::rule< Iterator, range(var_origin), whitespace_grammar< Iterator > > range_brackets_int_r
boost::spirit::qi::rule< Iterator, simplex_var_decl(var_origin), whitespace_grammar< Iterator > > simplex_decl_r
boost::phoenix::function< validate_identifier > validate_identifier_f
BOOST_FUSION_ADAPT_STRUCT(stan::lang::expr_type,(stan::lang::base_expr_type, base_type_)(size_t, num_dims_)) namespace stan
boost::phoenix::function< validate_int_expr > validate_int_expr_f
boost::phoenix::function< validate_decl_constraints > validate_decl_constraints_f
boost::spirit::qi::rule< Iterator, int_var_decl(var_origin), whitespace_grammar< Iterator > > int_decl_r
boost::phoenix::function< validate_int_data_expr > validate_int_data_expr_f
boost::spirit::qi::rule< Iterator, double_var_decl(var_origin), whitespace_grammar< Iterator > > double_decl_r
expression07_grammar< Iterator > expression07_g
boost::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > dims_r
std::stringstream & error_msgs_
boost::spirit::qi::rule< Iterator, boost::spirit::qi::locals< bool >, var_decl(bool, var_origin), whitespace_grammar< Iterator > > var_decl_r
boost::spirit::qi::rule< Iterator, range(var_origin), whitespace_grammar< Iterator > > range_brackets_double_r
boost::spirit::qi::rule< Iterator, vector_var_decl(var_origin), whitespace_grammar< Iterator > > vector_decl_r
boost::spirit::qi::rule< Iterator, cov_matrix_var_decl(var_origin), whitespace_grammar< Iterator > > cov_matrix_decl_r
boost::phoenix::function< set_double_range_upper > set_double_range_upper_f
boost::phoenix::function< copy_square_cholesky_dimension_if_necessary > copy_square_cholesky_dimension_if_necessary_f
boost::spirit::qi::rule< Iterator, corr_matrix_var_decl(var_origin), whitespace_grammar< Iterator > > corr_matrix_decl_r
boost::spirit::qi::rule< Iterator, boost::spirit::qi::locals< bool >, std::vector< var_decl >bool, var_origin), whitespace_grammar< Iterator > > var_decls_r
boost::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > opt_dims_r