Update of /cvsroot/boost/boost/boost/xpressive/detail/static/transforms
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28529
Modified Files:
as_quantifier.hpp transform.hpp
Log Message:
our lives are frittered away by detail. simplify, simplify
Index: as_quantifier.hpp
===================================================================
RCS file:
/cvsroot/boost/boost/boost/xpressive/detail/static/transforms/as_quantifier.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- as_quantifier.hpp 6 Apr 2007 02:54:23 -0000 1.6
+++ as_quantifier.hpp 10 Apr 2007 18:16:34 -0000 1.7
@@ -38,28 +38,30 @@
struct as_simple_quantifier
: Grammar
{
+ typedef proto::trans::arg<Grammar> grammar_type;
as_simple_quantifier();
template<typename Expr, typename State, typename Visitor>
struct apply
{
- typedef simple_repeat_matcher<
- typename Grammar::template apply<Expr, true_xpression,
Visitor>::type
- , Greedy
- > type;
+ typedef typename grammar_type::template apply<Expr,
true_xpression, Visitor>::type xpr_type;
+ typedef simple_repeat_matcher<xpr_type, Greedy> matcher_type;
+ typedef typename proto::terminal<matcher_type>::type type;
};
template<typename Expr, typename State, typename Visitor>
static typename apply<Expr, State, Visitor>::type
call(Expr const &expr, State const &state, Visitor &visitor)
{
- typename Grammar::template apply<Expr, true_xpression,
Visitor>::type const &xpr =
- Grammar::call(expr, true_xpression(), visitor);
- return typename apply<Expr, State, Visitor>::type(
- xpr
- , min_type<typename Expr::tag_type>::value
- , max_type<typename Expr::tag_type>::value
- , xpr.get_width().value()
+ typename apply<Expr, State, Visitor>::xpr_type const &xpr =
+ grammar_type::call(expr, true_xpression(), visitor);
+ return apply<Expr, State, Visitor>::type::make(
+ typename apply<Expr, State, Visitor>::matcher_type(
+ xpr
+ , min_type<typename Expr::tag_type>::value
+ , max_type<typename Expr::tag_type>::value
+ , xpr.get_width().value()
+ )
);
}
};
Index: transform.hpp
===================================================================
RCS file:
/cvsroot/boost/boost/boost/xpressive/detail/static/transforms/transform.hpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- transform.hpp 6 Apr 2007 23:59:10 -0000 1.11
+++ transform.hpp 10 Apr 2007 18:16:34 -0000 1.12
@@ -44,6 +44,17 @@
{};
///////////////////////////////////////////////////////////////////////////
+ // as_repeat
+ template<typename Tag, bool Greedy>
+ struct as_repeat
+ : proto::trans::conditional<
+ use_simple_repeat<proto::result_of::arg<mpl::_> >
+ , as_simple_quantifier<proto::unary_expr<Tag, Grammar>, Greedy>
+ , as_default_quantifier<proto::unary_expr<Tag, Grammar>, Greedy>
+ >
+ {};
+
+ ///////////////////////////////////////////////////////////////////////////
// NonGreedyRepeatCases
struct NonGreedyRepeatCases
{
@@ -55,38 +66,22 @@
template<>
struct NonGreedyRepeatCases::case_<proto::tag::unary_star>
- : proto::trans::conditional<
- use_simple_repeat<proto::result_of::arg<mpl::_> >
- , as_simple_quantifier<proto::trans::arg<proto::unary_star<Grammar>
>, false>
- , as_default_quantifier<proto::unary_star<Grammar>, false>
- >
+ : as_repeat<proto::tag::unary_star, false>
{};
template<>
struct NonGreedyRepeatCases::case_<proto::tag::unary_plus>
- : proto::trans::conditional<
- use_simple_repeat<proto::result_of::arg<mpl::_> >
- , as_simple_quantifier<proto::trans::arg<proto::unary_plus<Grammar>
>, false>
- , as_default_quantifier<proto::unary_plus<Grammar>, false>
- >
+ : as_repeat<proto::tag::unary_plus, false>
{};
template<>
struct NonGreedyRepeatCases::case_<proto::tag::logical_not>
- : proto::trans::conditional<
- use_simple_repeat<proto::result_of::arg<mpl::_> >
- , as_simple_quantifier<proto::trans::arg<proto::logical_not<Grammar>
>, false>
- , as_default_quantifier<proto::logical_not<Grammar>, false>
- >
+ : as_repeat<proto::tag::logical_not, false>
{};
template<uint_t Min, uint_t Max>
struct NonGreedyRepeatCases::case_<generic_quant_tag<Min, Max> >
- : proto::trans::conditional<
- use_simple_repeat<proto::result_of::arg<mpl::_> >
- ,
as_simple_quantifier<proto::trans::arg<proto::unary_expr<generic_quant_tag<Min,
Max>, Grammar> >, false>
- , as_default_quantifier<proto::unary_expr<generic_quant_tag<Min,
Max>, Grammar>, false>
- >
+ : as_repeat<generic_quant_tag<Min, Max>, false>
{};
///////////////////////////////////////////////////////////////////////////
@@ -165,49 +160,29 @@
template<>
struct Cases::case_<proto::tag::unary_star>
- : proto::trans::conditional<
- use_simple_repeat<proto::result_of::arg<mpl::_> >
- ,
in_sequence<as_simple_quantifier<proto::trans::arg<proto::unary_star<Grammar>
>, true> >
- ,
proto::trans::compose<as_default_quantifier<proto::unary_star<Grammar>, true>,
Grammar>
- >
+ : proto::trans::compose<as_repeat<proto::tag::unary_star, true>, Grammar>
{};
template<>
struct Cases::case_<proto::tag::unary_plus>
- : proto::trans::conditional<
- use_simple_repeat<proto::result_of::arg<mpl::_> >
- ,
in_sequence<as_simple_quantifier<proto::trans::arg<proto::unary_plus<Grammar>
>, true> >
- ,
proto::trans::compose<as_default_quantifier<proto::unary_plus<Grammar>, true>,
Grammar>
- >
+ : proto::trans::compose<as_repeat<proto::tag::unary_plus, true>, Grammar>
{};
template<>
struct Cases::case_<proto::tag::logical_not>
- : proto::trans::conditional<
- use_simple_repeat<proto::result_of::arg<mpl::_> >
- ,
in_sequence<as_simple_quantifier<proto::trans::arg<proto::logical_not<Grammar>
>, true> >
- ,
proto::trans::compose<as_default_quantifier<proto::logical_not<Grammar>, true>,
Grammar>
- >
+ : proto::trans::compose<as_repeat<proto::tag::logical_not, true>,
Grammar>
{};
template<uint_t Min, uint_t Max>
struct Cases::case_<generic_quant_tag<Min, Max> >
- : proto::trans::conditional<
- use_simple_repeat<proto::result_of::arg<mpl::_> >
- ,
in_sequence<as_simple_quantifier<proto::trans::arg<proto::unary_expr<generic_quant_tag<Min,
Max>, Grammar> >, true> >
- ,
proto::trans::compose<as_default_quantifier<proto::unary_expr<generic_quant_tag<Min,
Max>, Grammar>, true>, Grammar>
- >
+ : proto::trans::compose<as_repeat<generic_quant_tag<Min, Max>, true>,
Grammar>
{};
template<>
struct Cases::case_<proto::tag::unary_minus>
- : proto::and_<
- proto::unary_minus<proto::switch_<NonGreedyRepeatCases> >
- , proto::trans::conditional<
-
use_simple_repeat<proto::result_of::arg<proto::result_of::arg<mpl::_> > >
- ,
in_sequence<proto::trans::arg<proto::unary_minus<proto::switch_<NonGreedyRepeatCases>
> > >
- ,
proto::trans::compose<proto::trans::arg<proto::unary_minus<proto::switch_<NonGreedyRepeatCases>
> >, Grammar>
- >
+ : proto::trans::compose<
+
proto::trans::arg<proto::unary_minus<proto::switch_<NonGreedyRepeatCases> > >
+ , Grammar
>
{};
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs