1 #ifndef META_HS_TOKEN_HPP
2 #define META_HS_TOKEN_HPP
4 // Copyright Abel Sinkovics (abel@sinkovics.hu) 2012.
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
10 #include <except_keywords.hpp>
12 #include <boost/metaparse/string.hpp>
13 #include <boost/metaparse/token.hpp>
14 #include <boost/metaparse/always_c.hpp>
15 #include <boost/metaparse/lit_c.hpp>
16 #include <boost/metaparse/one_of.hpp>
17 #include <boost/metaparse/last_of.hpp>
18 #include <boost/metaparse/return_.hpp>
19 #include <boost/metaparse/int_.hpp>
20 #include <boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp>
21 #include <boost/metaparse/alphanum.hpp>
22 #include <boost/metaparse/transform.hpp>
23 #include <boost/metaparse/letter.hpp>
24 #include <boost/metaparse/keyword.hpp>
25 #include <boost/metaparse/optional.hpp>
27 #include <boost/mpl/lambda.hpp>
28 #include <boost/mpl/push_back.hpp>
29 #include <boost/mpl/vector.hpp>
34 boost::metaparse::token<
35 boost::metaparse::always_c<'+',boost::metaparse::string<'.','+','.'> >
40 boost::metaparse::token<
41 boost::metaparse::always_c<'-',boost::metaparse::string<'.','-','.'> >
46 boost::metaparse::token<
47 boost::metaparse::always_c<'*',boost::metaparse::string<'.','*','.'> >
52 boost::metaparse::token<
53 boost::metaparse::always_c<'/',boost::metaparse::string<'.','/','.'> >
58 boost::metaparse::token<
59 boost::metaparse::one_of<
60 boost::metaparse::last_of<
61 boost::metaparse::lit_c<'='>,
62 boost::metaparse::lit_c<'='>,
63 boost::metaparse::return_<
64 boost::metaparse::string<'.','=','=','.'>
67 boost::metaparse::last_of<
68 boost::metaparse::lit_c<'/'>,
69 boost::metaparse::lit_c<'='>,
70 boost::metaparse::return_<
71 boost::metaparse::string<'.','/','=','.'>
74 boost::metaparse::last_of<
75 boost::metaparse::lit_c<'<'>,
76 boost::metaparse::one_of<
77 boost::metaparse::always_c<
79 boost::metaparse::string<'.','<','=','.'>
81 boost::metaparse::return_<
82 boost::metaparse::string<'.','<','.'>
86 boost::metaparse::last_of<
87 boost::metaparse::lit_c<'>'>,
88 boost::metaparse::optional<
89 boost::metaparse::always_c<
91 boost::metaparse::string<'.','>','=','.'>
93 boost::metaparse::string<'.','>','.'>
101 boost::metaparse::token<boost::metaparse::lit_c<'('> >
105 boost::metaparse::token<boost::metaparse::lit_c<')'> >
109 boost::metaparse::token<boost::metaparse::lit_c<'='> >
112 typedef boost::metaparse::token<boost::metaparse::int_> int_;
115 boost::metaparse::token<
117 boost::metaparse::foldl_reject_incomplete_start_with_parser<
118 boost::metaparse::one_of<
119 boost::metaparse::alphanum,
120 boost::metaparse::lit_c<'_'>
122 boost::metaparse::transform<
123 boost::metaparse::one_of<
124 boost::metaparse::letter,
125 boost::metaparse::lit_c<'_'>
128 boost::mpl::push_back<
129 boost::metaparse::string<>,
135 boost::mpl::push_back<boost::mpl::_1, boost::mpl::_2>
139 boost::metaparse::string<'i','f'>,
140 boost::metaparse::string<'t','h','e','n'>,
141 boost::metaparse::string<'e','l','s','e'>
148 boost::metaparse::token<
149 boost::metaparse::keyword<boost::metaparse::string<'i','f'> >
154 boost::metaparse::token<
155 boost::metaparse::keyword<boost::metaparse::string<'t','h','e','n'> >
160 boost::metaparse::token<
161 boost::metaparse::keyword<boost::metaparse::string<'e','l','s','e'> >