123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- #ifndef META_HS_TOKEN_HPP
- #define META_HS_TOKEN_HPP
- // Copyright Abel Sinkovics (abel@sinkovics.hu) 2012.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- #include <ast.hpp>
- #include <except_keywords.hpp>
- #include <boost/metaparse/string.hpp>
- #include <boost/metaparse/token.hpp>
- #include <boost/metaparse/always_c.hpp>
- #include <boost/metaparse/lit_c.hpp>
- #include <boost/metaparse/one_of.hpp>
- #include <boost/metaparse/last_of.hpp>
- #include <boost/metaparse/return_.hpp>
- #include <boost/metaparse/int_.hpp>
- #include <boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp>
- #include <boost/metaparse/alphanum.hpp>
- #include <boost/metaparse/transform.hpp>
- #include <boost/metaparse/letter.hpp>
- #include <boost/metaparse/keyword.hpp>
- #include <boost/metaparse/optional.hpp>
- #include <boost/mpl/lambda.hpp>
- #include <boost/mpl/push_back.hpp>
- #include <boost/mpl/vector.hpp>
- namespace token
- {
- typedef
- boost::metaparse::token<
- boost::metaparse::always_c<'+',boost::metaparse::string<'.','+','.'> >
- >
- plus;
-
- typedef
- boost::metaparse::token<
- boost::metaparse::always_c<'-',boost::metaparse::string<'.','-','.'> >
- >
- minus;
-
- typedef
- boost::metaparse::token<
- boost::metaparse::always_c<'*',boost::metaparse::string<'.','*','.'> >
- >
- mult;
-
- typedef
- boost::metaparse::token<
- boost::metaparse::always_c<'/',boost::metaparse::string<'.','/','.'> >
- >
- div;
-
- typedef
- boost::metaparse::token<
- boost::metaparse::one_of<
- boost::metaparse::last_of<
- boost::metaparse::lit_c<'='>,
- boost::metaparse::lit_c<'='>,
- boost::metaparse::return_<
- boost::metaparse::string<'.','=','=','.'>
- >
- >,
- boost::metaparse::last_of<
- boost::metaparse::lit_c<'/'>,
- boost::metaparse::lit_c<'='>,
- boost::metaparse::return_<
- boost::metaparse::string<'.','/','=','.'>
- >
- >,
- boost::metaparse::last_of<
- boost::metaparse::lit_c<'<'>,
- boost::metaparse::one_of<
- boost::metaparse::always_c<
- '=',
- boost::metaparse::string<'.','<','=','.'>
- >,
- boost::metaparse::return_<
- boost::metaparse::string<'.','<','.'>
- >
- >
- >,
- boost::metaparse::last_of<
- boost::metaparse::lit_c<'>'>,
- boost::metaparse::optional<
- boost::metaparse::always_c<
- '=',
- boost::metaparse::string<'.','>','=','.'>
- >,
- boost::metaparse::string<'.','>','.'>
- >
- >
- >
- >
- cmp;
-
- typedef
- boost::metaparse::token<boost::metaparse::lit_c<'('> >
- open_bracket;
-
- typedef
- boost::metaparse::token<boost::metaparse::lit_c<')'> >
- close_bracket;
-
- typedef
- boost::metaparse::token<boost::metaparse::lit_c<'='> >
- define;
-
- typedef boost::metaparse::token<boost::metaparse::int_> int_;
-
- typedef
- boost::metaparse::token<
- except_keywords<
- boost::metaparse::foldl_reject_incomplete_start_with_parser<
- boost::metaparse::one_of<
- boost::metaparse::alphanum,
- boost::metaparse::lit_c<'_'>
- >,
- boost::metaparse::transform<
- boost::metaparse::one_of<
- boost::metaparse::letter,
- boost::metaparse::lit_c<'_'>
- >,
- boost::mpl::lambda<
- boost::mpl::push_back<
- boost::metaparse::string<>,
- boost::mpl::_1
- >
- >::type
- >,
- boost::mpl::lambda<
- boost::mpl::push_back<boost::mpl::_1, boost::mpl::_2>
- >::type
- >,
- boost::mpl::vector<
- boost::metaparse::string<'i','f'>,
- boost::metaparse::string<'t','h','e','n'>,
- boost::metaparse::string<'e','l','s','e'>
- >
- >
- >
- name;
-
- typedef
- boost::metaparse::token<
- boost::metaparse::keyword<boost::metaparse::string<'i','f'> >
- >
- if_;
-
- typedef
- boost::metaparse::token<
- boost::metaparse::keyword<boost::metaparse::string<'t','h','e','n'> >
- >
- then;
-
- typedef
- boost::metaparse::token<
- boost::metaparse::keyword<boost::metaparse::string<'e','l','s','e'> >
- >
- else_;
- }
- #endif
|