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_)
21 (
stan::lang::range, range_)
23 (
std::vector<
stan::lang::expression>, dims_)
24 (
stan::lang::expression, def_) )
27 (
stan::lang::range, range_)
28 (
stan::lang::expression, M_)
30 (
std::vector<
stan::lang::expression>, dims_)
31 (
stan::lang::expression, def_) )
34 (
stan::lang::range, range_)
35 (
stan::lang::expression, N_)
37 (
std::vector<
stan::lang::expression>, dims_)
38 (
stan::lang::expression, def_) )
41 (
stan::lang::range, range_)
42 (
stan::lang::expression, M_)
43 (
stan::lang::expression, N_)
45 (
std::vector<
stan::lang::expression>, dims_)
46 (
stan::lang::expression, def_) )
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, K_)
66 (
std::vector<
stan::lang::expression>, dims_) )
69 (
stan::lang::expression, M_)
70 (
stan::lang::expression, N_)
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_) )
85 (
stan::lang::expression, K_)
87 (
std::vector<
stan::lang::expression>, dims_) )
93 template <
typename Iterator>
94 var_decls_grammar<Iterator>::var_decls_grammar(variable_map& var_map,
95 std::stringstream& error_msgs)
96 : var_decls_grammar::base_type(var_decls_r),
98 error_msgs_(error_msgs),
99 expression_g(var_map, error_msgs),
100 expression07_g(var_map, error_msgs, expression_g) {
101 using boost::spirit::qi::_1;
102 using boost::spirit::qi::_3;
103 using boost::spirit::qi::char_;
104 using boost::spirit::qi::eps;
105 using boost::spirit::qi::lexeme;
106 using boost::spirit::qi::lit;
107 using boost::spirit::qi::no_skip;
108 using boost::spirit::qi::_pass;
109 using boost::spirit::qi::_val;
110 using boost::spirit::qi::labels::_a;
111 using boost::spirit::qi::labels::_r1;
112 using boost::spirit::qi::labels::_r2;
125 boost::phoenix::ref(error_msgs))]
173 >> no_skip[!char_(
"a-zA-Z0-9_")])
183 >> no_skip[!char_(
"a-zA-Z0-9_")])
192 >> no_skip[!char_(
"a-zA-Z0-9_")])
201 %= (lit(
"row_vector")
202 >> no_skip[!char_(
"a-zA-Z0-9_")])
212 >> no_skip[!char_(
"a-zA-Z0-9_")])
223 %= (lit(
"unit_vector")
224 >> no_skip[!char_(
"a-zA-Z0-9_")])
232 >> no_skip[!char_(
"a-zA-Z0-9_")])
240 >> no_skip[!char_(
"a-zA-Z0-9_")])
247 %= (lit(
"positive_ordered")
248 >> no_skip[!char_(
"a-zA-Z0-9_")])
254 " positive-def declaration");
256 %= (lit(
"cholesky_factor_cov")
257 >> no_skip[!char_(
"a-zA-Z0-9_")])
268 " correlation matrix declaration");
270 %= (lit(
"cholesky_factor_corr")
271 >> no_skip[!char_(
"a-zA-Z0-9_")])
278 %= (lit(
"cov_matrix")
279 >> no_skip[!char_(
"a-zA-Z0-9_")])
286 %= (lit(
"corr_matrix")
287 >> no_skip[!char_(
"a-zA-Z0-9_")])
299 dim1_r.name(
"size declaration: integer (data-only) in square brackets");
302 dims_r.name(
"array dimensions");
305 opt_dims_r.name(
"array dimensions (optional)");
308 opt_def_r.name(
"variable definition (optional)");
311 def_r.name(
"variable definition");
370 %= lexeme[char_(
"a-zA-Z")
371 >> *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, expression(var_origin), whitespace_grammar< Iterator > > int_data_expr_r
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > def_r
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > dim1_r
boost::phoenix::function< validate_definition > validate_definition_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_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
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > opt_def_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