1 #ifndef STAN_LANG_GRAMMARS_EXPRESSION_GRAMMAR_HPP 2 #define STAN_LANG_GRAMMARS_EXPRESSION_GRAMMAR_HPP 3 4 #include <stan/lang/ast.hpp> 5 #include <stan/lang/grammars/expression07_grammar.hpp> 6 #include <stan/lang/grammars/semantic_actions.hpp> 7 #include <stan/lang/grammars/whitespace_grammar.hpp> 8 #include <boost/spirit/include/qi.hpp> 9 #include <sstream> 10 11 namespace stan { 12 13 namespace lang { 14 15 template <typename Iterator> 16 struct expression07_grammar; 17 18 template <typename Iterator> 19 struct expression_grammar 20 : public boost::spirit::qi::grammar<Iterator, 21 expression(scope), 22 whitespace_grammar<Iterator> > { 23 variable_map& var_map_; 24 std::stringstream& error_msgs_; 25 expression07_grammar<Iterator> expression07_g; 26 27 expression_grammar(variable_map& var_map, 28 std::stringstream& error_msgs); 29 30 boost::spirit::qi::rule<Iterator, 31 expression(scope), 32 whitespace_grammar<Iterator> > 33 expression_r; 34 35 boost::spirit::qi::rule<Iterator, 36 expression(scope), 37 whitespace_grammar<Iterator> > 38 expression09_r; 39 40 boost::spirit::qi::rule<Iterator, 41 expression(scope), 42 whitespace_grammar<Iterator> > 43 expression10_r; 44 45 boost::spirit::qi::rule<Iterator, 46 expression(scope), 47 whitespace_grammar<Iterator> > 48 expression14_r; 49 50 boost::spirit::qi::rule<Iterator, 51 expression(scope), 52 whitespace_grammar<Iterator> > 53 expression15_r; 54 55 boost::spirit::qi::rule<Iterator, 56 boost::spirit::qi::locals<stan::lang::expression, 57 stan::lang::expression, 58 stan::lang::expression>, 59 conditional_op(scope), 60 whitespace_grammar<Iterator> > 61 conditional_op_r; 62 }; 63 64 } 65 } 66 #endif 67