Re: X3 employee example with semantic actions
Larry Evans <[email protected]> Tue, 5 Jun 2018 19:44:59 -0500
| Newsgroups | gmane.comp.parsers.spirit.general |
|---|---|
| Message-ID | <[email protected]> |
On 06/05/2018 07:26 PM, Maarten Verhage wrote: > > ----- Original Message ----- > From: "Larry Evans" <[email protected]> > To: <[email protected]> > Sent: Wednesday, June 06, 2018 01:58 > Subject: Re: [Spirit-general] X3 employee example with semantic actions > > >> On 06/05/2018 01:38 PM, Maarten Verhage wrote: >> [snip] >>> In the meantime I've learned by fortunate accident that the parser >>> directive >>> **raw** will provide me the iterator range I'm after. As a general remark >>> on >>> this. It is nice if you can immediately understand the facilities >>> provided >>> in a documentation page like the Parser Directives. If you don't little >>> effort is made to properly present the ideas behind these facilities. >>> Maybe >>> the Spirit developers are annoyed by what they might consider as naive >>> questions about obvious things in this mailing list. While I believe that >>> if >>> you improve the documentation and explain for with purpose you provide >>> facilities people can much faster understand it, and the amount of >>> "stupid" >>> questions can be heavily reduced. >>> >> To supply a real life use case for what's described in the above >> paragraph, I've looked at the doc for raw as expressed in the xml >> generated from: >> >> https://github.com/boostorg/spirit/tree/develop/doc/x3 >> >> That contains: >> >> raw[a] >> >> boost::iterator_range<I> >> >> Presents the transduction of a as an iterator range >> >> From this I infer that an interator_range<I> is produced >> where I is the Iterator to the parsers. >> >> But how do I use this. Grep'ing for raw shows: >> >> -*- mode: compilation; default-directory: >> "~/prog_dev/boost/releases/ro/boost_1_67_0/sandbox/lje/spirit-experiments/include/boost/spirit/home/x3/" >> -*- >> Compilation started at Tue Jun 5 18:43:54 >> >> find . -name \*.hpp -exec grep -e '\<raw\>' {} \; -ls >> auto const raw = raw_gen{}; >> 9109799 12 -rw-rw-r-- 1 evansl evansl 2534 Jan 19 14:59 >> ./directive/raw.hpp >> // attr==raw_attribute_type, action wants iterator_range (see >> raw.hpp) >> 9049853 16 -rw-rw-r-- 1 evansl evansl 4718 Jun 4 22:09 >> ./core/action.hpp >> #include <boost/spirit/home/x3/directive/raw.hpp> >> 9109791 12 -rw-rw-r-- 1 evansl evansl 1286 Jan 19 14:59 >> ./directive.hpp >> >> Compilation finished at Tue Jun 5 18:43:54 >> >> so, a brief look at that code still didn't clear things up; so, >> Please, Maarten, could you post the code where you make use >> of raw so I wouldn't have to further guess how to do it? >> >> -hopefully, >> Larry > > Hi Larry, > > I'm not yet familiar with grep. I assume you do look into the Spirit X3 > source code to learn how to use it? Yep. Tried, but that didn't help. Now that I understand what raw does, the docs make perfect sense. > I have just added the raw directive into > the employee example code. And it did want I was after. In the attached > source code you can see exactly how. > > I've some facility to print a type by the name of utility::type2string. This > is not needed for the example but I can provide that if you are interested. > > Regards, Maarten > Hmmm. So you surround the quoted_string with raw. I thought you'd surround the whole employee with raw. That's why example code is ***so*** much better than trying to describe what someone is trying to do! -regards, Larry ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot