Boost logo

Boost Users :

Subject: Re: [Boost-users] [Spirit] Qi lexeme only taking the first word
From: Michael Powell (mwpowellhtx_at_[hidden])
Date: 2018-11-06 22:40:03


On Tue, Nov 6, 2018 at 5:01 PM Michael Powell <mwpowellhtx_at_[hidden]> wrote:
>
> Hello,
>
> I've got a couple of rules that are perplexing to me. First,
>
> rule<It, std::string(), St> id %= lexeme[qi::alpha >> *char_("A-Za-z0-9_")];
>
> In and of itself, id is working fine. Then I've got a "full id":
>
> rule<It, full_id_t(), St> full_id %= id >> *(char_('.') >> id);
>
> Where:
>
> struct full_id_t {
> std::string val;
> };
>
> full_id_t::val is quite intentional for reasons elsewhere in the grammar.
>
> The perplexity comes in, it seems lexeme is only shaving off the first
> word as the val.
>
> For instance, parsing "two.oranges.red.test", I receive back "two" in the AST.
>
> Perhaps I should defer specifying the lexeme part of id until later?

I elaborated a little on the "simple" full id sub-grammar, but I
cannot repro using the GCC compiler. I'm wondering if this has
anything to do with the VS2017 fpos issue?

http://coliru.stacked-crooked.com/a/adeb42ce2f19b0fd

Or there may be insufficient context in the web compiler to adequately demo.

> Thoughts? Suggestions?
>
> Thank you!
>
> Best regards,
>
> Michael Powell


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