Stan  2.14.0
probability, sampling & optimization
statement_grammar.hpp
Go to the documentation of this file.
1 #ifndef STAN_LANG_GRAMMARS_STATEMENT_GRAMMAR_HPP
2 #define STAN_LANG_GRAMMARS_STATEMENT_GRAMMAR_HPP
3 
4 #include <stan/lang/ast.hpp>
11 #include <boost/spirit/include/qi.hpp>
12 #include <sstream>
13 #include <string>
14 #include <vector>
15 
16 namespace stan {
17 
18  namespace lang {
19 
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> > {
25  statement_grammar(variable_map& var_map,
26  std::stringstream& error_msgs);
27 
29  std::stringstream& error_msgs_;
34 
35  boost::spirit::qi::rule<Iterator,
39 
40  boost::spirit::qi::rule<Iterator,
44 
45  boost::spirit::qi::rule<Iterator,
46  boost::spirit::qi::unused_type,
49 
50 
51  boost::spirit::qi::rule<Iterator,
55 
56 
57  boost::spirit::qi::rule<Iterator,
58  std::vector<expression>(var_origin),
61 
62  boost::spirit::qi::rule<Iterator,
66 
67 
68  boost::spirit::qi::rule<Iterator,
72 
73 
74  boost::spirit::qi::rule<Iterator,
78 
79  boost::spirit::qi::rule<Iterator,
83 
84  boost::spirit::qi::rule<Iterator,
85  boost::spirit::qi::locals<std::string>,
86  for_statement(bool, var_origin, bool),
89 
90 
91  boost::spirit::qi::rule<Iterator,
92  while_statement(bool, var_origin, bool),
95 
96  boost::spirit::qi::rule<Iterator,
97  break_continue_statement(bool), // NOLINT
100 
101  boost::spirit::qi::rule<Iterator,
105 
106  boost::spirit::qi::rule<Iterator,
110 
111 
112  boost::spirit::qi::rule<Iterator,
116 
117  boost::spirit::qi::rule<Iterator,
121 
122  boost::spirit::qi::rule<Iterator,
126 
127  boost::spirit::qi::rule<Iterator,
128  std::string(),
131 
132 
133  boost::spirit::qi::rule<Iterator,
134  std::string(),
137 
138  boost::spirit::qi::rule<Iterator,
139  std::vector<var_decl>(),
142 
143  boost::spirit::qi::rule<Iterator,
144  no_op_statement(),
147 
148  boost::spirit::qi::rule<Iterator,
149  std::vector<expression>(var_origin),
152 
153  boost::spirit::qi::rule<Iterator,
154  range(var_origin),
157 
158  boost::spirit::qi::rule<Iterator,
159  sample(bool, var_origin),
162 
163  boost::spirit::qi::rule<Iterator,
164  statement(bool, var_origin, bool, bool),
167 
168  boost::spirit::qi::rule<Iterator,
169  statement(bool, var_origin, bool, bool),
172 
173  boost::spirit::qi::rule<Iterator,
174  boost::spirit::qi::locals<std::vector<var_decl> >,
175  statements(bool, var_origin, bool, bool),
178 
179  boost::spirit::qi::rule<Iterator,
180  range(var_origin),
183 
184  boost::spirit::qi::rule<Iterator,
188 
189  boost::spirit::qi::rule<Iterator,
193  };
194 
195  }
196 }
197 #endif
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.
Definition: statement.hpp:29
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.
Definition: statements.hpp:16
Structure for holding a variable with its dimension declarations.
indexes_grammar< Iterator > indexes_g
AST node for assignment to variable with multi-indexing.
Definition: assgn.hpp:15
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)
Definition: sample.hpp:17
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
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.
Definition: range.hpp:14
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.
Definition: var_origin.hpp:12
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.
Definition: printable.hpp:17
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.
Definition: variable.hpp:14
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.
Definition: assignment.hpp:14

     [ Stan Home Page ] © 2011–2016, Stan Development Team.