Subject: Re: [boost] [GSoC] Helping out Phoenix v3
From: Joel Falcou (joel.falcou_at_[hidden])
Date: 2010-04-02 11:43:30


Ok, ppl may look at :

https://www.lri.fr/svn/parall/prog_gen/branches/phoenix3/

login/passwd : boost/boost

to get a look at how I see the internals of the new phoenix working.
The code is just a proto transform that evaluate any kind of expression
and values from a fusion vector in a recursive, customizable way.

Basically, it needs to be wrapped into a proper proto grammar+
expression to hide that.

Now, if you wanted to add for exampel a if_[] statement and have it
evaluated properly you can overload either the evaluate PFO or
specialize process_node.

If you need to do otherthign with the expression, build a new evlauator
like PFO and build another compile<T> instance (like coutning arity,
turn the expression into a std::string, etc). You will notice that both
the process_node and evaluator are proto agnostic.

I'll advice using make_expr over const object to reduce compile-time (as
stated in a old post of mine) and maybe use CRTP so we can imbue
placeholder with proper method generating expression.