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_)
52 (
stan::lang::expression, def_) )
55 (
stan::lang::expression, K_)
57 (
std::vector<
stan::lang::expression>, dims_)
58 (
stan::lang::expression, def_) )
61 (
stan::lang::expression, K_)
63 (
std::vector<
stan::lang::expression>, dims_)
64 (
stan::lang::expression, def_) )
67 (
stan::lang::expression, K_)
69 (
std::vector<
stan::lang::expression>, dims_)
70 (
stan::lang::expression, def_) )
73 (
stan::lang::expression, M_)
74 (
stan::lang::expression, N_)
76 (
std::vector<
stan::lang::expression>, dims_)
77 (
stan::lang::expression, def_) )
80 (
stan::lang::expression, K_)
82 (
std::vector<
stan::lang::expression>, dims_)
83 (
stan::lang::expression, def_) )
86 (
stan::lang::expression, K_)
88 (
std::vector<
stan::lang::expression>, dims_)
89 (
stan::lang::expression, def_) )
92 (
stan::lang::expression, K_)
94 (
std::vector<
stan::lang::expression>, dims_)
95 (
stan::lang::expression, def_) )
101 template <
typename Iterator>
102 var_decls_grammar<Iterator>::var_decls_grammar(variable_map& var_map,
103 std::stringstream& error_msgs)
104 : var_decls_grammar::base_type(var_decls_r),
106 error_msgs_(error_msgs),
107 expression_g(var_map, error_msgs),
108 expression07_g(var_map, error_msgs, expression_g) {
109 using boost::spirit::qi::_1;
110 using boost::spirit::qi::_3;
111 using boost::spirit::qi::char_;
112 using boost::spirit::qi::eps;
113 using boost::spirit::qi::lexeme;
114 using boost::spirit::qi::lit;
115 using boost::spirit::qi::no_skip;
116 using boost::spirit::qi::_pass;
117 using boost::spirit::qi::_val;
118 using boost::spirit::qi::labels::_a;
119 using boost::spirit::qi::labels::_r1;
120 using boost::spirit::qi::labels::_r2;
133 boost::phoenix::ref(error_msgs))]
181 >> no_skip[!char_(
"a-zA-Z0-9_")])
191 >> no_skip[!char_(
"a-zA-Z0-9_")])
200 >> no_skip[!char_(
"a-zA-Z0-9_")])
209 %= (lit(
"row_vector")
210 >> no_skip[!char_(
"a-zA-Z0-9_")])
220 >> no_skip[!char_(
"a-zA-Z0-9_")])
231 %= (lit(
"unit_vector")
232 >> no_skip[!char_(
"a-zA-Z0-9_")])
241 >> no_skip[!char_(
"a-zA-Z0-9_")])
250 >> no_skip[!char_(
"a-zA-Z0-9_")])
258 %= (lit(
"positive_ordered")
259 >> no_skip[!char_(
"a-zA-Z0-9_")])
266 " positive-def declaration");
268 %= (lit(
"cholesky_factor_cov")
269 >> no_skip[!char_(
"a-zA-Z0-9_")])
281 " correlation matrix declaration");
283 %= (lit(
"cholesky_factor_corr")
284 >> no_skip[!char_(
"a-zA-Z0-9_")])
292 %= (lit(
"cov_matrix")
293 >> no_skip[!char_(
"a-zA-Z0-9_")])
301 %= (lit(
"corr_matrix")
302 >> no_skip[!char_(
"a-zA-Z0-9_")])
315 dim1_r.name(
"size declaration: integer (data-only) in square brackets");
318 dims_r.name(
"array dimensions");
321 opt_dims_r.name(
"array dimensions (optional)");
324 opt_def_r.name(
"variable definition (optional)");
327 def_r.name(
"variable definition");
386 %= lexeme[char_(
"a-zA-Z")
387 >> *char_(
"a-zA-Z0-9_.")];
An integer variable declaration and optional definition.
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
AST structure for a range object with a low and high value.
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