1 #ifndef STAN_LANG_GRAMMARS_TERM_GRAMMAR_HPP 2 #define STAN_LANG_GRAMMARS_TERM_GRAMMAR_HPP 9 #include <boost/spirit/include/qi.hpp> 18 template <
typename Iterator>
19 struct expression_grammar;
21 template <
typename Iterator>
22 struct indexes_grammar;
24 template <
typename Iterator>
26 :
public boost::spirit::qi::grammar<Iterator,
27 expression(var_origin),
28 whitespace_grammar<Iterator> > {
29 term_grammar(variable_map& var_map, std::stringstream& error_msgs,
30 expression_grammar<Iterator>& eg);
37 boost::spirit::qi::rule<Iterator,
42 boost::spirit::qi::rule<Iterator,
47 boost::spirit::qi::rule<Iterator,
52 boost::spirit::qi::rule<Iterator,
58 boost::spirit::qi::rule<Iterator,
63 boost::spirit::qi::rule<Iterator,
69 boost::spirit::qi::rule<Iterator,
77 boost::spirit::qi::rule<Iterator,
82 boost::spirit::qi::rule<Iterator,
87 boost::spirit::qi::rule<Iterator,
93 boost::spirit::qi::rule<Iterator,
98 boost::spirit::qi::rule<Iterator,
100 boost::spirit::qi::locals<std::vector<std::vector<expression> >,
105 boost::spirit::qi::rule<Iterator,
111 boost::spirit::qi::rule<Iterator,
116 boost::spirit::qi::rule<Iterator,
123 boost::spirit::qi::rule<Iterator,
129 boost::spirit::qi::rule<Iterator,
Node for holding a double literal.
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > term_r
Probability, optimization and sampling library.
boost::spirit::qi::rule< Iterator, fun(var_origin), whitespace_grammar< Iterator > > fun_r
Structure to hold an array expression.
boost::spirit::qi::rule< Iterator, int_literal(), whitespace_grammar< Iterator > > int_literal_r
Structure for function application.
std::stringstream & error_msgs_
boost::spirit::qi::rule< Iterator, integrate_ode_control(var_origin), whitespace_grammar< Iterator > > integrate_ode_control_r
A map from function names to their base declarations and their origin.
boost::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > prob_args_r
Structure for integrate diff eq statement.
boost::spirit::qi::rule< Iterator, std::string(), whitespace_grammar< Iterator > > identifier_r
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > exponentiated_factor_r
boost::spirit::qi::rule< Iterator, expression(var_origin), boost::spirit::qi::locals< std::vector< std::vector< expression > >, std::vector< idx > >, whitespace_grammar< Iterator > > idx_factor_r
boost::spirit::qi::rule< Iterator, double_literal(), whitespace_grammar< Iterator > > double_literal_r
boost::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > dims_r
boost::spirit::qi::rule< Iterator, array_expr(var_origin), whitespace_grammar< Iterator > > array_expr_r
int var_origin
The type of a variable indicating where a variable was declared.
boost::spirit::qi::rule< Iterator, std::vector< expression >var_origin), whitespace_grammar< Iterator > > args_r
boost::spirit::qi::rule< Iterator, boost::spirit::qi::locals< variable, fun, array_expr >, expression(var_origin), whitespace_grammar< Iterator > > factor_r
boost::spirit::qi::rule< Iterator, variable(), whitespace_grammar< Iterator > > variable_r
indexes_grammar< Iterator > indexes_g
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > dim_r
expression_grammar< Iterator > & expression_g
Structure to hold a variable.
term_grammar(variable_map &var_map, std::stringstream &error_msgs, expression_grammar< Iterator > &eg)
boost::spirit::qi::rule< Iterator, integrate_ode(var_origin), whitespace_grammar< Iterator > > integrate_ode_r
Structure for a diff eq integration statement with control parameters for the integrator.
boost::spirit::qi::rule< Iterator, expression(var_origin), whitespace_grammar< Iterator > > negated_factor_r