Utilities for debugging Proto expression trees

Pretty-print a Proto expression tree.

A PolymorphicFunctionObject which accepts a Proto expression tree and pretty-prints it to an `ostream` for debugging purposes.

void
void `Expr const &`
std::ostream &
std::cout

The `ostream` to which the expression tree will be written.

int
0

The starting indentation depth for this node. Children nodes will be displayed at a starting depth of `depth+4`.

void `Expr const &

The Proto expression tree to pretty-print

` `std::ostream &

The `ostream` to which the output should be written. If not specified, defaults to `std::cout`.

`
void `Expr const &`
Pretty-print a Proto expression tree.

Equivalent to ``proto::functional::display_expr`(0, sout)(expr)`.

void `Expr const & The Proto expression to check againts `Grammar`.` Assert at compile time that a particular expression matches the specified grammar.

Equivalent to `BOOST_MPL_ASSERT((`proto::matches`<Expr, Grammar>))`.

Use `proto::assert_matches()` to assert at compile-time that an expression matches a grammar.

Example:

    typedef proto::plus< proto::terminal< int >, proto::terminal< int > > PlusInts;

    proto::assert_matches<PlusInts>( proto::lit(1) + 42 );

See also:

- `proto::assert_matches_not()`
- `BOOST_PROTO_ASSERT_MATCHES()`
- `BOOST_PROTO_ASSERT_MATCHES_NOT()`

void `Expr const & The Proto expression to check againts `Grammar`.` Assert at compile time that a particular expression does not match the specified grammar.

Equivalent to `BOOST_MPL_ASSERT_NOT((`proto::matches`<Expr, Grammar>))`.

Use `proto::assert_matches_not()` to assert at compile-time that an expression does not match a grammar.

Example:

    typedef proto::plus< proto::terminal< int >, proto::terminal< int > > PlusInts;

    proto::assert_matches_not<PlusInts>( proto::lit("a string") + 42 );

See also:

- `proto::assert_matches()`
- `BOOST_PROTO_ASSERT_MATCHES()`
- `BOOST_PROTO_ASSERT_MATCHES_NOT()`

Assert at compile time that a particular expression matches the specified grammar.

Equivalent to `proto::assert_matches<Grammar>(expr)`.

Use `BOOST_PROTO_ASSERT_MATCHES()` to assert at compile-time that an expression matches a grammar.

Example:

    typedef proto::plus< proto::terminal< int >, proto::terminal< int > > PlusInts;

    BOOST_PROTO_ASSERT_MATCHES( proto::lit(1) + 42, PlusInts );

See also:

- `proto::assert_matches()`
- `proto::assert_matches_not()`
- `BOOST_PROTO_ASSERT_MATCHES_NOT()`

Assert at compile time that a particular expression does not match the specified grammar.

Equivalent to `proto::assert_matches_not<Grammar>(expr)`.

Use `BOOST_PROTO_ASSERT_MATCHES_NOT()` to assert at compile-time that an expression does not match a grammar.

Example:

    typedef proto::plus< proto::terminal< int >, proto::terminal< int > > PlusInts;

    BOOST_PROTO_ASSERT_MATCHES_NOT( proto::lit("a string") + 42, PlusInts );

See also:

- `proto::assert_matches()`
- `proto::assert_matches_not()`
- `BOOST_PROTO_ASSERT_MATCHES()`