Boost logo

Boost Users :

Subject: Re: [Boost-users] [Proto]: How to use complex grammars in a domain/extension
From: Joel Falcou (joel.falcou_at_[hidden])
Date: 2010-09-21 03:49:01


The following code works here:

// -----------------------------------------------------------------------
#include<boost/proto/proto.hpp>

using namespace boost;

typedef proto::terminal<int>::type terminal;

struct addition:
    proto::or_
    <
       proto::terminal<proto::_>,
       proto::plus<addition, addition>
>
{};

struct equation:
    proto::or_
    <
       addition,
        proto::equal_to<addition, addition>
>

{};

template<class Expr>
struct extension;

struct my_domain:
    proto::domain
    <
         proto::pod_generator< extension>,
         equation
>
{};

template<class Expr>
struct extension
{
     BOOST_PROTO_EXTENDS(
         Expr
       , extension<Expr>
       , my_domain
     )
};

int main()
{
     extension<terminal> i;

     i == i;
}

Seems proto::or_ wiht *1* condition acts weird.
Eric, am I right or am I hallucinating and missing the obvious ?


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net