Boost logo

Boost Users :

Subject: Re: [Boost-users] Spirit : Is possible to build rule step by step?
From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2011-01-17 11:24:06


> I'm trying to write a small example using spirit.
>
> I can write a rule in this way:
>
> my_rule = lit("example") | lit("example2");
>
> Also in this way:
>
> std::string ex("example")
> std::string ex2("example2");
> my_rule = lit(ex) | lit(ex2))
>
> Is there a way to do this:
> std::string ex("example")
> std::string ex2("example2");
> my_rule = lit(ex);
> my_rule = my_rule | lit(ex2));

Make that:

   my_rule = my_rule.copy() | lit(ex2));

and it will work. The explicit copy is needed, as in this context rules are
always held by reference.

> I need to append strings from an array...
> Maybe I miss something from docs.

But since you seem to have only a bunch of strings to match, why don't you
use a symbol table (see qi::symbols). This is not only easier to set up
iteratively, it's more efficient at runtime as well.

Regards Hartmut
---------------
http://boost-spirit.com


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