Boost logo

Boost :

From: John Maddock (john_at_[hidden])
Date: 2005-09-24 06:54:47


Finally, too late for even the extended deadline, here's my xpressive
review:

*What is your evaluation of the design?

It's very good.

I have to admit that I find the static regexes very hard to read, but a lot
of that will be a cultural problem: I'm so used to seeing normal regex
syntax that I can't quite get my head around the static versions, the
quantifiers as prefixes particularly throw me. However, the syntax is
concise and consistent with spirit, so I can hardly complain that much.
Possibly xpressive isn't the last word on this, or the best way to go,
personally I prefer more verbose forms like

repeat(x)

rather than

*x

but again, that's an initial reaction which may change with more
familiarity.

* What is your evaluation of the implementation?

Looks good to me, and I know from past experience that Eric knows what he's
doing.

The only complaint I have is one that's common to all expression template
code: it's impossible to understand by debugging, which means casual
maintenance by folks other than the author would be hard, you really need to
read the whole source before you can get a grip on what it's doing (OK you
ought to do that anyway, but it is still hard to understand code that isn't
executed in the traditional sense). As I said though this is an issue with
all metaprogramming, and expression templates in particular, I guess what we
really need is a compile-process debugger :-)

* What is your evaluation of the documentation?

It's excellent.

* What is your evaluation of the potential usefulness of the library?

Clearly there are lots of uses. There is also overlap with Regex and
Spirit, but I don't believe that should prevent acceptance, Boost is meant
to drive forward innovation after all.

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

Not for as long as I would have liked :-(

I've only tried with VC7.1, the sample code compiled cleanly, but compile
times were quite long for even simple static regexes, I didn't try anything
complex.

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

A couple hours reading the docs, and playing with some of the samples.

One thing I did notice is that several of the test programs don't appear to
do anything except "return 0", I'm not sure if these are deprecated, or just
not finished (see test_regex_token_iterator.cpp for example).

The test cases in the testX.cpp files may be a little short on the ground as
well: Boost.Regex has about a thousand cases, PCRE a similar number, where
as there are 171 here. The smaller number of cases ought to be enough, but
in practice I've found you can never have too many! It's a pity that the
Boost.Regex and / or PCRE cases can't be automatically harvested, but I
suspect this is next to impossible for static regexes?

* Are you knowledgeable about the problem domain?

I hope so :-)

* Do you think the library should be accepted as a Boost library?

Absolutely.

John.


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