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