Ejemplo n.º 1
0
 inline alternative<
     typename extension::as_parser<Left>::value_type
   , typename extension::as_parser<Right>::value_type>
 operator|(Left const& left, Right const& right)
 {
     return {as_parser(left), as_parser(right)};
 }
Ejemplo n.º 2
0
 inline sequence<
     typename extension::as_parser<Left>::value_type
   , typename extension::as_parser<Right>::value_type>
 operator>>(Left const& left, Right const& right)
 {
     return { as_parser(left), as_parser(right) };
 }
Ejemplo n.º 3
0
    inline alternative<
        typename extension::as_parser<Left>::value_type
      , typename extension::as_parser<Right>::value_type>
    operator|(Left const& left, Right const& right)
    {
        typedef alternative<
            typename extension::as_parser<Left>::value_type
          , typename extension::as_parser<Right>::value_type>
        result_type;

        return result_type(as_parser(left), as_parser(right));
    }
Ejemplo n.º 4
0
    inline sequence<
        typename extension::as_parser<Left>::value_type
      , expect_directive<typename extension::as_parser<Right>::value_type>>
    operator>(Left const& left, Right const& right)
    {
        typedef sequence<
            typename extension::as_parser<Left>::value_type
          , expect_directive<typename extension::as_parser<Right>::value_type>>
        result_type;

        return result_type(as_parser(left), as_parser(right));
    }
Ejemplo n.º 5
0
    inline difference<
        typename extension::as_parser<Left>::value_type
      , typename extension::as_parser<Right>::value_type>
    operator-(Left const& left, Right const& right)
    {
        typedef difference<
            typename extension::as_parser<Left>::value_type
          , typename extension::as_parser<Right>::value_type>
        result_type;

        return result_type(as_parser(left), as_parser(right));
    }
Ejemplo n.º 6
0
        expect_directive<typename extension::as_parser<Subject>::value_type>
        operator[](Subject const& subject) const
        {
            typedef
                expect_directive<typename extension::as_parser<Subject>::value_type>
            result_type;

            return result_type(as_parser(subject));
        }
Ejemplo n.º 7
0
    inline plus<typename extension::as_parser<Subject>::value_type>
    operator+(Subject const& subject)
    {
        typedef
            plus<typename extension::as_parser<Subject>::value_type>
        result_type;

        return result_type(as_parser(subject));
    }
Ejemplo n.º 8
0
    inline bool
    phrase_parse(
        Iterator& first
      , Iterator last
      , Parser const& p
      , Skipper const& s
      , Attribute& attr
      , skip_flag post_skip = skip_flag::post_skip)
    {
        // Make sure the iterator is at least a forward_iterator. If you got a
        // compilation error here, then you are using an input_iterator while
        // calling this function. You need to supply at least a forward_iterator
        // instead.
        BOOST_CONCEPT_ASSERT((ForwardIterator<Iterator>));

        // If you get an error no matching function for call to 'as_parser'
        // here, for either p or s, then p or s is not a parser or there is
        // no suitable conversion from p to a parser.
        context<skipper_tag, Skipper const> skipper(as_parser(s));
        bool r = as_parser(p).parse(first, last, skipper, attr);
        if (post_skip == skip_flag::post_skip)
            x3::skip_over(first, last, skipper);
        return r;
    }
Ejemplo n.º 9
0
    inline bool
    parse(
        Iterator& first
      , Iterator last
      , Parser const& p
      , Attribute& attr)
    {
        // Make sure the iterator is at least a forward_iterator. If you got a
        // compilation error here, then you are using an input_iterator while
        // calling this function. You need to supply at least a forward_iterator
        // instead.
        BOOST_CONCEPT_ASSERT((ForwardIterator<Iterator>));

        // If you get an error no matching function for call to 'as_parser'
        // here, then p is not a parser or there is no suitable conversion
        // from p to a parser.
        return as_parser(p).parse(first, last, unused, attr);
    }
Ejemplo n.º 10
0
 omit_directive<typename extension::as_parser<Subject>::value_type>
 operator[](Subject const& subject) const
 {
     return {as_parser(subject)};
 }
Ejemplo n.º 11
0
inline kleene<typename extension::as_parser<Subject>::value_type>
operator*(Subject const& subject)
{
    return {as_parser(subject)};
}
Ejemplo n.º 12
0
};

template< typename type >
struct is_parser< type, std::void_t< typename type::parser_type > >
        : std::true_type
{

};

template< typename iterator_type, typename skipper_type = unused_type >
struct dispatcher;

void as_parser(...) { ; }

template< typename grammar_type, typename attribute_type = decltype(as_parser(std::declval< grammar_type && >())) >
struct get_attribute
        : identity< type >
{

};

template< typename type >
using get_attribute_t = typename get_attribute< type >::type;

template< typename iterator_type, typename skipper_type >
struct dispatcher
{
    
    iterator_type & beg;
    iterator_type end;
Ejemplo n.º 13
0
Archivo: with.hpp Proyecto: DINKIN/omim
 with_directive<typename extension::as_parser<Subject>::value_type, ID, T>
 operator[](Subject const& subject) const
 {
     return { as_parser(subject), val };
 }
Ejemplo n.º 14
0
 confix_gen<typename extension::as_parser<Prefix>::value_type,
            typename extension::as_parser<Postfix>::value_type>
 confix(Prefix const& prefix, Postfix const& postfix)
 {
     return { as_parser(prefix), as_parser(postfix) };
 }
Ejemplo n.º 15
0
 confix_directive<
     Prefix, typename extension::as_parser<Subject>::value_type, Postfix>
 operator[](Subject const& subject) const
 {
     return { prefix, as_parser(subject), postfix };
 }
Ejemplo n.º 16
0
 rule_definition<
 ID, typename extension::as_parser<RHS>::value_type, Attribute, force_attribute_>
 operator=(RHS const& rhs) const
 {
     return { as_parser(rhs), name };
 }
Ejemplo n.º 17
0
 inline not_predicate<typename extension::as_parser<Subject>::value_type>
 operator!(Subject const& subject)
 {
     return { as_parser(subject) };
 }
Ejemplo n.º 18
0
 inline action<typename extension::as_parser<P>::value_type, Action>
 operator/(P const& p, Action f)
 {
     return {as_parser(p), f};
 }