|
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