|
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