|
Boost Users : |
From: Mark Storer (MStorer_at_[hidden])
Date: 2004-06-25 18:31:55
Okay. Problem solved. The answer was indeed inside #scanner_business. Rules make for picky parsers. So I used a grammar<> and it compiled just fine. Now if I can just get it to WORK. ;)
Whoops. Infinite recursion. Back to the drawing board... but at least now I don't need "*comment" sprinkled liberally throughout my rules.
--Mark Storer
Senior Software Engineer
Verity, Inc.
> -----Original Message-----
> From: boost-users-bounces_at_[hidden]
> [mailto:boost-users-bounces_at_[hidden]]On Behalf Of Jeff Flinn
> Sent: Friday, June 25, 2004 10:46 AM
> To: boost-users_at_[hidden]
> Subject: [Boost-users] Re: Tweaking the Skip Parser,was RE: Spirit 1.6
> with VC6
>
>
> Take a look at:
>
> http://www.boost.org/libs/spirit/doc/faq.html#scanner_business
>
> You don't want the skip parser to be a phrase level scanner.
>
> parse(str, rules, space_p | comment_p( "/*", "*/" ) |
> comment_p( "//" ) )
>
> may work for you?
>
> Jeff F
>
> "Mark Storer" <MStorer_at_[hidden]> wrote in message
> news:076D1E704127414E9FEAFFC31F66C9472739CD_at_vrsdex1.verity.com...
> > > No chance of switching to 7.1? :-)
> >
> > Things are looking up. We just did a project-wide upgrade
> to... VC7.1.
> Problem solved. I'm now merrily writing rules for my
> JavaScript parser. It
> doesn't have to support the whole language (not for a while,
> maybe never), I
> just need to be able to parse out the names and locations of all the
> functions in a file. It's for a JavaScript editor built into
> one of our
> products, and later we'll be adding auto-completion. That'll
> require a more
> thorough parser, but for now, I'm just after funciton locations.
> >
> > So far so good... though I'll undoubtedly be quite familiar with the
> BOOST_SPIRIT_DEBUG* macros before I'm done.
> >
> > I've got another Spirit question: I've been adding
> "*comment" throughout
> the rules and it's getting tiresome:
> >
> > rule<phrase_scanner_t> blockComment = comment_p( "/*", "*/" );
> > rule<phrase_scanner_t> lineComment = comment_p( "//" );
> > rule<phrase_scanner_t> comment = blockComment | lineComment;
> >
> > Spraying the "comment" rule liberally through my rules is
> an option...
> >
> > rule<phrase_scanner_t> codeBlock = ch_p('{') >>
> *(comment | codeBlock
> | ~ch_p('}')) >> ch_p('}');
> >
> > ... but not an appealing one. This becomes particularly
> true once I start
> working on the auto-completion parser.
> >
> > It just occured to me that if the skip parser ate
> comments for me, it
> would greatly simplify my rules. I'd like to tweak the skip
> parser so it
> skips over my "comment" rule as well as white space. I just
> took a stab at
> this, but didn't get very far. I tried:
> >
> > parse(str, rules, space_p | comment)
> >
> > but that resulted in a compiler error. 7.1's errors are
> MUCH easier to
> read that 6's. I'm going to like this new compiler.
> >
> >
> C:\SDKs\boost_1_31_0\boost\spirit\core\non_terminal\impl\rule.
> ipp(190):
> error C2664:
> 'boost::spirit::impl::abstract_parser<ScannerT,AttrT>::do_pars
> e_virtual' :
> cannot convert parameter 1 from 'const scanner_t' to 'const
> boost::spirit::rule<T0>::scanner_t &'
> > with
> > [
> >
> ScannerT=boost::spirit::rule<boost::spirit::phrase_scanner_t>:
> :scanner_t,
> >
> AttrT=boost::spirit::rule<boost::spirit::phrase_scanner_t>::attr_t
> > ]
> > and
> > [
> > T0=boost::spirit::phrase_scanner_t
> > ]
> >
> > Pointing me to the relevant section of the docs is an
> acceptable answer,
> though I wouldn't mind a little more info than that. ;)
> >
> > I'll keep plugging away. If I come up with an answer, I'll
> post it to the
> list. I'd expect this to be useful to other beginners at the
> very least.
> >
> > --Mark Storer
> > Senior Software Engineer
> > Verity, Inc.
>
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
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