1 #ifndef STAN__GM__PARSER__STATEMENT_2_GRAMMAR_DEF__HPP
2 #define STAN__GM__PARSER__STATEMENT_2_GRAMMAR_DEF__HPP
16 #include <boost/spirit/include/qi.hpp>
18 #include <boost/spirit/include/phoenix_core.hpp>
19 #include <boost/spirit/include/phoenix_function.hpp>
20 #include <boost/spirit/include/phoenix_fusion.hpp>
21 #include <boost/spirit/include/phoenix_object.hpp>
22 #include <boost/spirit/include/phoenix_operator.hpp>
23 #include <boost/spirit/include/phoenix_stl.hpp>
25 #include <boost/lexical_cast.hpp>
26 #include <boost/fusion/include/adapt_struct.hpp>
27 #include <boost/fusion/include/std_pair.hpp>
28 #include <boost/config/warning_disable.hpp>
29 #include <boost/spirit/include/qi.hpp>
30 #include <boost/spirit/include/qi_numeric.hpp>
31 #include <boost/spirit/include/classic_position_iterator.hpp>
32 #include <boost/spirit/include/phoenix_core.hpp>
33 #include <boost/spirit/include/phoenix_function.hpp>
34 #include <boost/spirit/include/phoenix_fusion.hpp>
35 #include <boost/spirit/include/phoenix_object.hpp>
36 #include <boost/spirit/include/phoenix_operator.hpp>
37 #include <boost/spirit/include/phoenix_stl.hpp>
38 #include <boost/spirit/include/support_multi_pass.hpp>
39 #include <boost/tuple/tuple.hpp>
40 #include <boost/variant/apply_visitor.hpp>
41 #include <boost/variant/recursive_variant.hpp>
56 template <
typename T1,
typename T2,
typename T3,
typename T4>
61 std::stringstream& error_msgs)
const {
63 error_msgs <<
"conditions in if-else statement must be primitive int or real;"
76 template <
typename T1,
typename T2>
87 template <
typename Iterator>
89 std::stringstream& error_msgs,
93 error_msgs_(error_msgs),
94 expression_g(var_map,error_msgs),
97 using boost::spirit::qi::_1;
98 using boost::spirit::qi::char_;
99 using boost::spirit::qi::lit;
100 using boost::spirit::qi::_pass;
101 using boost::spirit::qi::_val;
103 using boost::spirit::qi::labels::_r1;
104 using boost::spirit::qi::labels::_r2;
105 using boost::spirit::qi::labels::_r3;
void operator()(conditional_statement &cs, const expression &e, bool &pass, std::stringstream &error_msgs) const
statement_2_grammar(variable_map &var_map, std::stringstream &error_msgs, statement_grammar< Iterator > &sg)
boost::spirit::qi::rule< Iterator, statement(bool, var_origin, bool), whitespace_grammar< Iterator > > statement_2_r
std::vector< expression > conditions_
std::stringstream & error_msgs_
boost::phoenix::function< add_conditional_condition > add_conditional_condition_f
boost::spirit::qi::rule< Iterator, conditional_statement(bool, var_origin, bool), whitespace_grammar< Iterator > > conditional_statement_r
boost::phoenix::function< add_conditional_body > add_conditional_body_f
std::vector< statement > bodies_
expression_grammar< Iterator > expression_g
void operator()(conditional_statement &cs, const statement &s) const
statement_grammar< Iterator > & statement_g
double e()
Return the base of the natural logarithm.
expr_type expression_type() const
bool is_primitive() const