1 #ifndef STAN_LANG_GRAMMARS_STATEMENT_GRAMMAR_HPP 2 #define STAN_LANG_GRAMMARS_STATEMENT_GRAMMAR_HPP 11 #include <boost/spirit/include/qi.hpp> 20 template <
typename Iterator>
21 struct statement_grammar
22 : boost::spirit::qi::grammar<Iterator,
23 statement(bool, var_origin, bool, bool),
24 whitespace_grammar<Iterator> > {
26 std::stringstream& error_msgs);
35 boost::spirit::qi::rule<Iterator,
40 boost::spirit::qi::rule<Iterator,
45 boost::spirit::qi::rule<Iterator,
46 boost::spirit::qi::unused_type,
51 boost::spirit::qi::rule<Iterator,
57 boost::spirit::qi::rule<Iterator,
62 boost::spirit::qi::rule<Iterator,
68 boost::spirit::qi::rule<Iterator,
74 boost::spirit::qi::rule<Iterator,
79 boost::spirit::qi::rule<Iterator,
84 boost::spirit::qi::rule<Iterator,
85 boost::spirit::qi::locals<std::string>,
91 boost::spirit::qi::rule<Iterator,
96 boost::spirit::qi::rule<Iterator,
101 boost::spirit::qi::rule<Iterator,
106 boost::spirit::qi::rule<Iterator,
112 boost::spirit::qi::rule<Iterator,
117 boost::spirit::qi::rule<Iterator,
122 boost::spirit::qi::rule<Iterator,
127 boost::spirit::qi::rule<Iterator,
133 boost::spirit::qi::rule<Iterator,
138 boost::spirit::qi::rule<Iterator,
139 std::vector<var_decl>(),
143 boost::spirit::qi::rule<Iterator,
148 boost::spirit::qi::rule<Iterator,
153 boost::spirit::qi::rule<Iterator,
158 boost::spirit::qi::rule<Iterator,
163 boost::spirit::qi::rule<Iterator,
168 boost::spirit::qi::rule<Iterator,
173 boost::spirit::qi::rule<Iterator,
174 boost::spirit::qi::locals<std::vector<var_decl> >,
179 boost::spirit::qi::rule<Iterator,
184 boost::spirit::qi::rule<Iterator,
189 boost::spirit::qi::rule<Iterator,
boost::spirit::qi::rule< Iterator, increment_log_prob_statement(bool, var_origin), whitespace_grammar< Iterator > > increment_target_statement_r
AST node for print statements.
Structure to wrap the variant type of statements.
boost::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > dims_r
Holder for local variable declarations and a sequence of statements.
Structure for holding a variable with its dimension declarations.
indexes_grammar< Iterator > indexes_g
AST node for assignment to variable with multi-indexing.
boost::spirit::qi::rule< Iterator, assignment(var_origin), whitespace_grammar< Iterator > > assignment_r
boost::spirit::qi::rule< Iterator, range(var_origin), whitespace_grammar< Iterator > > range_r
boost::spirit::qi::rule< Iterator, std::vector< var_decl >), whitespace_grammar< Iterator > > local_var_decls_r
void sample(stan::mcmc::base_mcmc *sampler, int num_warmup, int num_samples, int num_thin, int refresh, bool save, stan::services::sample::mcmc_writer< Model, SampleRecorder, DiagnosticRecorder, MessageRecorder > &mcmc_writer, stan::mcmc::sample &init_s, Model &model, RNG &base_rng, const std::string &prefix, const std::string &suffix, std::ostream &o, StartTransitionCallback &callback, interface_callbacks::writer::base_writer &info_writer, interface_callbacks::writer::base_writer &error_writer)
AST node for the increment log prob (deprecated) and target increment statements. ...
Probability, optimization and sampling library.
AST node for the reject statement.
AST structure for break and continue statements.
boost::spirit::qi::rule< Iterator, variable(var_origin), whitespace_grammar< Iterator > > var_r
boost::spirit::qi::rule< Iterator, printable(var_origin), whitespace_grammar< Iterator > > printable_r
A map from function names to their base declarations and their origin.
boost::spirit::qi::rule< Iterator, boost::spirit::qi::unused_type, whitespace_grammar< Iterator > > assignment_operator_r
boost::spirit::qi::rule< Iterator, statement(bool, var_origin, bool, bool), whitespace_grammar< Iterator > > statement_r
expression_grammar< Iterator > expression_g
std::stringstream & error_msgs_
boost::spirit::qi::rule< Iterator, break_continue_statement(bool), whitespace_grammar< Iterator > > break_continue_statement_r
Structure for a distribution with parameters.
AST structure for a range object with a low and high value.
statement_grammar(variable_map &var_map, std::stringstream &error_msgs)
boost::spirit::qi::rule< Iterator, distribution(var_origin), whitespace_grammar< Iterator > > distribution_r
boost::spirit::qi::rule< Iterator, no_op_statement(), whitespace_grammar< Iterator > > no_op_statement_r
boost::spirit::qi::rule< Iterator, range(var_origin), whitespace_grammar< Iterator > > truncation_range_r
boost::spirit::qi::rule< Iterator, print_statement(var_origin), whitespace_grammar< Iterator > > print_statement_r
boost::spirit::qi::rule< Iterator, while_statement(bool, var_origin, bool), whitespace_grammar< Iterator > > while_statement_r
int var_origin
The type of a variable indicating where a variable was declared.
boost::spirit::qi::rule< Iterator, sample(bool, var_origin), whitespace_grammar< Iterator > > sample_r
boost::spirit::qi::rule< Iterator, assgn(var_origin), whitespace_grammar< Iterator > > assgn_r
boost::spirit::qi::rule< Iterator, return_statement(var_origin), whitespace_grammar< Iterator > > return_statement_r
AST node for representing while statements.
boost::spirit::qi::rule< Iterator, boost::spirit::qi::locals< std::vector< var_decl > >, statements(bool, var_origin, bool, bool), whitespace_grammar< Iterator > > statement_seq_r
boost::spirit::qi::rule< Iterator, boost::spirit::qi::locals< std::string >, for_statement(bool, var_origin, bool), whitespace_grammar< Iterator > > for_statement_r
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > expression_rhs_r
A printable object is either an expression or a string.
AST node for the no-operation statement.
boost::spirit::qi::rule< Iterator, reject_statement(var_origin), whitespace_grammar< Iterator > > reject_statement_r
Structure to hold a variable.
boost::spirit::qi::rule< Iterator, std::string(), whitespace_grammar< Iterator > > identifier_r
AST node for the return statement.
boost::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > opt_dims_r
boost::spirit::qi::rule< Iterator, std::string(), whitespace_grammar< Iterator > > printable_string_r
boost::spirit::qi::rule< Iterator, variable_dims(var_origin), whitespace_grammar< Iterator > > var_lhs_r
statement_2_grammar< Iterator > statement_2_g
AST node for representing a for statement.
var_decls_grammar< Iterator > var_decls_g
boost::spirit::qi::rule< Iterator, return_statement(var_origin), whitespace_grammar< Iterator > > void_return_statement_r
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > non_lvalue_assign_r
boost::spirit::qi::rule< Iterator, increment_log_prob_statement(bool, var_origin), whitespace_grammar< Iterator > > increment_log_prob_statement_r
boost::spirit::qi::rule< Iterator, statement(bool, var_origin, bool, bool), whitespace_grammar< Iterator > > statement_sub_r
AST node for assignment statements.