Stan  2.5.0
probability, sampling & optimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
bare_type_grammar_def.hpp
Go to the documentation of this file.
1 #ifndef STAN__GM__PARSER__BARE_TYPE_GRAMMAR_DEF_HPP__
2 #define STAN__GM__PARSER__BARE_TYPE_GRAMMAR_DEF_HPP__
3 
4 #include <boost/spirit/include/qi.hpp>
5 #include <boost/lexical_cast.hpp>
6 #include <boost/fusion/include/adapt_struct.hpp>
7 #include <boost/fusion/include/std_pair.hpp>
8 #include <boost/config/warning_disable.hpp>
9 #include <boost/spirit/include/qi_numeric.hpp>
10 #include <boost/spirit/include/phoenix_core.hpp>
11 #include <boost/spirit/include/phoenix_function.hpp>
12 #include <boost/spirit/include/phoenix_fusion.hpp>
13 #include <boost/spirit/include/phoenix_object.hpp>
14 #include <boost/spirit/include/phoenix_operator.hpp>
15 #include <boost/spirit/include/phoenix_stl.hpp>
16 #include <boost/spirit/include/support_multi_pass.hpp>
17 #include <boost/tuple/tuple.hpp>
18 #include <boost/variant/apply_visitor.hpp>
19 #include <boost/variant/recursive_variant.hpp>
20 
21 #include <boost/spirit/include/version.hpp>
22 #include <boost/spirit/include/support_line_pos_iterator.hpp>
23 
24 #include <stan/gm/ast.hpp>
27 
29  (stan::gm::base_expr_type, base_type_)
30  (size_t, num_dims_) );
31 
32 namespace stan {
33 
34  namespace gm {
35 
36  template <typename Iterator>
38  std::stringstream& error_msgs)
39  : bare_type_grammar::base_type(bare_type_r),
40  var_map_(var_map),
41  error_msgs_(error_msgs)
42  {
43  using boost::spirit::qi::_1;
44  using boost::spirit::qi::char_;
45  using boost::spirit::qi::eps;
46  using boost::spirit::qi::lexeme;
47  using boost::spirit::qi::lit;
48  using boost::spirit::qi::no_skip;
49  using boost::spirit::qi::_pass;
50  using boost::spirit::qi::_val;
51 
52  using boost::spirit::qi::labels::_a;
53  using boost::spirit::qi::labels::_r1;
54  using boost::spirit::qi::labels::_r2;
55 
56  using boost::spirit::qi::on_error;
57  using boost::spirit::qi::fail;
58  using boost::spirit::qi::rethrow;
59  using namespace boost::spirit::qi::labels;
60 
61  bare_type_r.name("bare type");
63  %=
65  >> array_dims_r
66  ;
67 
69  %=
70  lit("void")[_val = VOID_T]
71  | lit("int")[_val = INT_T]
72  | lit("real")[_val = DOUBLE_T]
73  | lit("vector")[_val = VECTOR_T]
74  | lit("row_vector")[_val = ROW_VECTOR_T]
75  | lit("matrix")[_val = MATRIX_T]
76  ;
77 
79  %=
80  eps[_val = 0]
81  >> - ( lit('[')[_val = 1]
82  >> *(lit(',')[_val += 1])
83  >> lit(']') )
84  ;
85 
86  }
87  }
88 }
89 #endif
bare_type_grammar(variable_map &var_map, std::stringstream &error_msgs)
boost::spirit::qi::rule< Iterator, size_t(), whitespace_grammar< Iterator > > array_dims_r
boost::spirit::qi::rule< Iterator, expr_type(), whitespace_grammar< Iterator > > bare_type_r
const int DOUBLE_T
Definition: ast.hpp:66
const int ROW_VECTOR_T
Definition: ast.hpp:68
boost::spirit::qi::rule< Iterator, base_expr_type(), whitespace_grammar< Iterator > > type_identifier_r
const int VECTOR_T
Definition: ast.hpp:67
const int MATRIX_T
Definition: ast.hpp:69
BOOST_FUSION_ADAPT_STRUCT(stan::gm::expr_type,(stan::gm::base_expr_type, base_type_)(size_t, num_dims_))
int base_expr_type
Definition: ast.hpp:60
const int INT_T
Definition: ast.hpp:65
const int VOID_T
Definition: ast.hpp:64

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