Boost logo

Boost :

From: Cédric Venet (cedric.venet_at_[hidden])
Date: 2008-03-27 14:54:20


Hi,

I am not sure to be qualified to make a review but I will give it a try.

First, I think the library should be accepted.

> - What is your evaluation of the design?

Seems good. I must say I didn’t read or try the transform part of proto.

> - What is your evaluation of the implementation?

Didn’t read the code

> - What is your evaluation of the documentation?

I think there is some (more) work to do on it.
I had some probleme with
users_guide\expression_construction\construction_utils.html
Because it was not clear to me how to put it in pratice.

In fact after a fast read of the doc, I mostly used the exemple as reference
of how to do something.

So, I don't know exactly what can be done but some ideas may be:

*Provide more basic exemple
*Refer to the exemple in the documentation to show the practical use of what
is described.
*make a FAQ

One difficulty I didn't had time to study is how to do polymorphic grammar
or semantic checking. (perhaps I should not put this in the review). Mor
clearly, I add two example:

First I would like to have a grammar which can work on any terminal but can
only have compatible terminal in a one expression (for example, you can't
have vector and list in one expression but you can have one expression with
lists and one with vector and they would follow the same grammar).
My idea was to do a basic proto grammar which just check operator use and
then to use a transform to fold the type of the terminals, checking they are
all compatible.

Second, I have a grammar where I can add terminals 'a+b' and index terminal
'a[b]'. you can have '(a+b)[c]'. some terminals may be indexable but other
not. I could make a grammar for indexable terminal and another for not
indexable but it would be duplicated. And if I add more properties to my
terminals (for example Boolean, integer or float), the number of grammar
explode. I was thinking to again use a transform to check the 'semantic' of
the expression.

Is it the way to go? I didn't see any reference to this in the
documentation, but this seems a common pattern to me? The proto grammar
would only check the 'parsing' and one transform would check the semantic.

A yes, I would add two note which seem relevant for VS user:
* the compiler flag -Zm (for example -Zm150) to change the maximum size of
the precompiled header
* the pragma inline_recursion and inline_depth (default off and 8)

> - What is your evaluation of the potential usefulness of the library?

Extremely useful.

> - Did you try to use the library? With what compiler? Did you have any
> problems?

I used it with VS2005. I didn’t had any problem (at least not one which
wasn’t my fault)

> - How much effort did you put into your evaluation? A glance? A quick
> reading? In-depth study?

I read the doc and started writing a small test. Didn’t had the time to try
transform.

Regards,

--
Cédric

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk