Boost logo

Boost Users :

From: Aaron Griffin (aaronmgriffin_at_[hidden])
Date: 2005-10-14 10:25:50


On 10/13/05, Simon Buchan <simon_at_[hidden]> wrote:
> Aaron Griffin wrote:
> > ...snip...
> Just have a no_node parser after the failable bit:
>
> section = identifier >> ch_p('{')
> >> (*setting)
> | no_node_d[!ch_p('}')]
> >> ch_p('}');
>
> (usual not-checked disclaimer)
> note that if you are careful, you could have the parser simply ignore
> the incorrect setting, or you could have an 'error node', or pretty much
> anything you can think of.

Thanks, that's exactly what I was looking for.

> > On a side note, if I have a rule similar to (keyword >> identifier),
> > the skip_parser will translate "somekeyword a" into "somekeyworda" and
> > will parse it fine. However, what is to stop someone from removing
> > the whitespace in the original code. With a quick glance, it appears
> > the example c grammar from the spirit site will parse "voidfoo()" just
> > fine due to this. Is there anyway I can tell the skip grammar to
> > force a seperation?
>
> Most parsers where this matters that I've seen don't actually define a
> skip parser, they explicitly *space_p.
> Alternitively, parse a token stream, not a char stream. I leave this as
> an exersize for the reader ;-).

I was under the impression that using a skip parser did switch to a
token (phrase?) stream, using the skip parser as a token delimiter.
/me shrugs - Unless of course you're implying <boost/tokenizer.hpp>.

On 10/13/05, Joel de Guzman <joel_at_[hidden]> wrote:
> The technique used in QuickBook is:
>
> keyword >> (eps_p - (alnum_p | '_'))
> ; // make sure we recognize whole words only
>
> (yes, the example C grammar should be fixed)

Going to try this, but I'm not sure if I fully understand. I just
came across the distinct_parser family, so my question is: How is this
different from using something like:
   distinct_parser_dynamic<> keyword_p(alnum_p | '_');
   keyword_p("my_key_word") >> identifier;

> Oh and BTW, the proper forum for Spirit is:
> spirit-general_at_[hidden]
> https://lists.sourceforge.net/lists/listinfo/spirit-general

Done and done. Thanks.

- Aaron Griffin


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net