Changeset 38761


Ignore:
Timestamp:
Aug 19, 2007, 4:16:26 PM (11 years ago)
Author:
Andreas Pokorny
Message:
  • Addition of a compiler for nested dynamic regular expressions.
Location:
branches/xpressive/nested_dynamic_regex/boost/xpressive
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • branches/xpressive/nested_dynamic_regex/boost/xpressive/detail/core/matchers.hpp

    r38262 r38761  
    2424#include <boost/xpressive/detail/core/matcher/assert_word_matcher.hpp>
    2525#include <boost/xpressive/detail/core/matcher/attr_matcher.hpp>
     26#include <boost/xpressive/detail/core/matcher/basic_regex_ptr_matcher.hpp>
    2627#include <boost/xpressive/detail/core/matcher/charset_matcher.hpp>
    2728#include <boost/xpressive/detail/core/matcher/end_matcher.hpp>
  • branches/xpressive/nested_dynamic_regex/boost/xpressive/detail/dynamic/parser.hpp

    r37824 r38761  
    133133    }
    134134}
     135
     136///////////////////////////////////////////////////////////////////////////////
     137// make_reference_expression
     138//
     139template<typename BidiIter>
     140inline sequence<BidiIter> make_reference_expression
     141(
     142  basic_regex<BidiIter> const *ptr
     143)
     144{
     145    BOOST_ASSERT(ptr);
     146    basic_regex_ptr_matcher<BidiIter> matcher(ptr);
     147    return make_dynamic<BidiIter>(matcher);
     148}
     149
    135150
    136151///////////////////////////////////////////////////////////////////////////////
  • branches/xpressive/nested_dynamic_regex/boost/xpressive/detail/dynamic/parser_traits.hpp

    r37879 r38761  
    448448    }
    449449
     450
     451    ///////////////////////////////////////////////////////////////////////////////
     452    // is_reference
     453    bool is_reference( string_type const& t )
     454    {
     455        return false;
     456    }
     457
     458    template<typename BidiIter>
     459    basic_regex<BidiIter> const* get_reference( string_type const& name )
     460    {
     461         return NULL;
     462    }
     463   
     464
    450465    regex_traits traits_;
    451466    regex_constants::syntax_option_type flags_;
  • branches/xpressive/nested_dynamic_regex/boost/xpressive/regex_compiler.hpp

    r37879 r38761  
    165165        return this->rules_[name];
    166166    }
     167protected:
     168    CompilerTraits & traits()
     169    {
     170        return traits_;
     171    }
    167172
    168173private:
     
    477482        {
    478483        case token_literal:
    479             return detail::make_literal_xpression<BidiIter>
    480             (
    481                 this->parse_literal(begin, end), this->traits_.flags(), this->rxtraits()
    482             );
     484          {
     485            string_type lit = this->parse_literal(begin, end);
     486            if( this->traits_.is_reference(lit) )
     487            {
     488              return detail::make_reference_expression<BidiIter>(
     489                  this->traits_.get_reference(lit)
     490                  );
     491            }
     492            else
     493              return detail::make_literal_xpression<BidiIter>
     494                (
     495                 lit, this->traits_.flags(), this->rxtraits()
     496                );
     497          }
    483498
    484499        case token_any:
     
    619634        return seq;
    620635    }
     636   
    621637
    622638    ///////////////////////////////////////////////////////////////////////////
  • branches/xpressive/nested_dynamic_regex/boost/xpressive/xpressive_fwd.hpp

    r37897 r38761  
    134134    struct regex_compiler;
    135135
     136    template
     137    <
     138        typename BidiIter
     139      , typename RegexTraits = regex_traits<typename iterator_value<BidiIter>::type>
     140    >
     141    struct nested_dynamic_compiler;
     142
    136143    ///////////////////////////////////////////////////////////////////////////////
    137144    // Common typedefs
Note: See TracChangeset for help on using the changeset viewer.