Sorry everyone.

----- Original Message -----
From: "Joel de Guzman" <[EMAIL PROTECTED]>
To: "Boost mailing list" <[EMAIL PROTECTED]>
Cc: "Spirit" <[EMAIL PROTECTED]>
Sent: Thursday, August 28, 2003 6:03 PM
Subject: Re: [boost] RE: Spirit question...CORRECTION to my grammer!


> Chris,
>
> Spirit has its own mailing list:
>
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/spirit-general
>
> Please post further questions there. Thanks.
>
> --
> Joel de Guzman
> http://www.boost-consulting.com
> http://spirit.sf.net
>
>
> Chris Cooney <[EMAIL PROTECTED]> wrote:
> > Hello,
> >
> > I've been fiddling around with boost::spirit in an
> > attempt to write a small and esoteric scripting language.
> >
> > Here's some code snipits of what I'm trying to do.
> > example script (a one liner in this case):
> >
> > DO_SOMETHING(param1,param2)
> >
> >
> > the grammer:
> >
> > struct my_grammer : public grammar<my_grammer>
> > {
> > my_grammer(vector<string>& v_): v(v_) {}
> >
> >     template <typename ScannerT>
> >     struct definition
> >     {
> >         definition(wb_grammer const& self)
> >         {
> > //char token defs
> > COMMA = ch_p(',');
> > LPAREN = ch_p('(');
> > RPAREN = ch_p(')');
> > USCORE = ch_p('_');
> >
> > param_alnum = lexeme_d[alpha_p >> *(alnum_p)];
> >
> > do_something = str_p("DO_SOMETHING") >> LPAREN >>
> > /*param1*/param_alnum[append(self.v)] >> !COMMA >>
> > /*param2*/param_alnum[append(self.v)] >> RPAREN;
> >
> > do_something_else = str_p("DO_SOMETHING_ELSE") >> LPAREN >>
> > /*param1*/param_mode[append(self.v)] >> !COMMA >>
> > /*param2*/param_type[append(self.v)] >> RPAREN;
> >
> > functions = do_something | do_something_else;
> > }
> >
> >         rule<ScannerT>
> >
COMMA,LPAREN,RPAREN,USCORE,param_alnum,do_something,do_something_else,functi
> > ons;
> >
> >         rule<ScannerT> const&
> >         start() const { return functions; }
> >     };
> >
> >   vector<string>& v;
> > };
> >
> >
> > int main()
> > {
> > vector<string> v;
> > my_grammer script_grammer(v);
> > string str;
> >
> > while (getline(cin, str))
> >     {
> >         parse_info<> info = parse(str.c_str(), script_grammer, space_p);
> >
> >         if (info.full)
> >         {
> > //determine which rule (script function) was called
> > //and do something with the parameters stored in the vector
> >         }
> >   else
> >   {
> > //error out.
> >   }
> > }
> > }
> >
> >
> > problem:
> >
> > My problem is how to determine which rule was the one
> > that resulted in a successful parsing of the
> > line ("DO_SOMETHING(param1,param2)");
> >
> > NOTE: I'm unfortunately stuck with the MSVC 7.0 compiler so
> > I can't use the Tree functionalities of spirit because of their
> > implementations use of partial template specialization.
> >
> > any ideas?
> >
> > Thank you very much,
> >
> > Chris.
> >
> >
> > _______________________________________________
> > Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost
>
> _______________________________________________
> Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost
>
>


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to