|
Boost : |
From: Hartmut Kaiser (hartmutkaiser_at_[hidden])
Date: 2003-08-31 13:29:36
James W. Walker wrote:
> Thanks, that helps, but I still have a question or two. The FAQ says
> "it is best to avoid rules as arguments to the parse functions", but
> then what are rules good for? How else am I going to do any
> nontrivial parsing?
Use grammars (see here:
http://www.boost.org/libs/spirit/doc/grammar.html). This is the best way
to implement non-trivial parsers with Spirit.
> I've been looking at the Spirit article in the C/C++ Users
> Journal. It
> contains a code example that defines rule<> expression, and
> later says
> if (parse( str, expression, space ).full)... I supposed that "space"
> was a typo for "space_p". How do you reconcile that code sample with
> the FAQ?
The article describes Spirit V1.2 (it was written nearly two years ago).
Spirit has undergone some minor interface changes since then (all
predefined parser objects have a '_p' appended).
Another change was a slight change of the scanner<> idiom, which lead to
the subtleties you've encountered. Generally the CUJ article is a good
starting point, but nevertheless you should have a look at the current
doc's and, may be, at the samples contained with Spirit.
HTH
Regrads Hartmut
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk