|
Boost Users : |
From: Mark Storer (MStorer_at_[hidden])
Date: 2004-06-25 16:29:42
Neither of your suggestions worked for me. Both gave me the same basic "do_parse_virtual: can't convert from 'const scanner_t' to 'const boost::spirit::rule<T0>::scanner_t &'".
I had a suspision about the phrase vs char thing... good to know.
So should I be looking for a compiler fix or an alternate path?
Still plugging away... no joy yet.
--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:52 AM
> To: boost-users_at_[hidden]
> Subject: [Boost-users] Re: Tweaking the Skip Parser,was RE: Spirit 1.6
> with VC6
>
>
> Mark,
>
> I didn't mean to imply this was the only way to accomplish
> what you want to
> do. You can create a full fledged grammar and use it as your
> skip parser.
> Or, create a functor_parser, which works for me.
>
> struct SkipperDct
> {
> typedef int result_t;
>
> template< typename ScannerT >
> int operator()( ScannerT const& scan, result_t& )const
> {
> match<> m = ( +space_p
> | lexeme_d[ comment_p("//")
> | comment_nest_p("/*","*/")
> ]
> ).parse( scan );
>
> return m? m.length() : -1;
> }
> };
>
> functor_parser<SkipperDct> SkipperDct_p;
>
> };
>
> Also note the use of 'comment_nest_p'.
>
> 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